NAO学习——从NAOqi和rviz开始学习在ROS上运行NAO

2019-12-17 17:46:29 浏览数 (1)

NAO学习——从NAOqi和rviz开始学习在ROS上运行NAO

1. 开始连接一个实体NAO

1.1 运行nao_bringup

在开始之前,我们首先要确定三个必须的依赖包 naoqi_drivernaoqi_bridgenao_description 是否满足。这三个包可以通过包管理器或者从github上clone。

为了运行nao_bringup, 需要执行下列命令:

$ roslaunch nao_bringup nao_full.launch nao_ip:=<robot_ip> roscore_ip:=<roscore_ip>

如果用的是Python SDK,则需要执行:

$ roslaunch nao_bringup nao_full_py.launch nao_ip:=<robot_ip> roscore_ip:=<roscore_ip>

<robot_ip>是NAO的地址,’’是运行roscore的电脑IP地址。因为roscore并不是在NAO上运行的,所以用这两个参数来让NAO找到roscore运行的位置是很必要的。将这两个参数修改为正确的IP地址,以在NAO和电脑之间建立正确连接。

当nao_bringup成功运行之后,我们就可以打开rviz了。

1.2 在RVIZ上显示NAO

首先打开RVIZ:

$ rosrun rviz rviz

ROS上提供了一个预先设置好的RVIZ配置文件urdf.rviz,保存在~/catkin_ws/src/nao_robot/nao_description/config/下。

如果想要看到完整的NAO的3D模型,我们需要安装一个包:

$ sudo apt-get install ros-indigo-nao-meshes

在安装过程中,我们需要接受它的许可信息。安装完成后,重启一下RVIZ。

2. 控制NAO

如果上面的步骤都成功了,我们这个时候就已经能在RVIZ中看见NAO了。

接下来我们将用ROS命令来控制NAO。

首先执行$ rosnode list,我们应该能找到/nao_walker结点。这证明NAO的walker结点已经运行。

很重要的一点是,在开始控制实体NAO之前,需要先将其刚化:

$ rosservice call /body_stiffness/enable "{}"

:刚化之后,就不能再用手去移动NAO的关节。

若想解除刚化,则只需执行:

$ rosservice call /body_stiffness/disable "{}"

刚化之后,我们就可以向NAO发送一个行走的命令:

$ rostopic pub -1 /cmd_vel geometry_msgs/Twist '{linear: {x: 1.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}'

这条指令将会使NAO不断沿x轴方向行走,每个循环都会走一米。

若需要停止,则只需将linear中的x: 1.0修改为x: 0.0

$ rostopic pub -1 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}'

我们也可通过ROS一些已有的远程控制工具(如:ROS telep)来用键盘控制NAO。

3. 在ROS上运行虚拟的NAOqi

3.1 加载环境

首先,需要确保roscore已经运行。

然后在一个新的终端中,输入下列指令来在本地电脑运行NAOqi,以模拟出一个NAO:

$ ~/naoqi/naoqi-sdk-1.12.3-linux32/naoqi --verbose --broker-ip 127.0.0.1

broker-ip地址127.0.0.1是连接本地电脑的回路地址。只有在本地安装的ROS才能连接NAOqi。NAOqi API将可以通过broker-ip地址访问,而nao_driver将成为NAOqi API的包装器。

接下来在一个新的终端中加载ros_driver包,以连接本地的虚拟NAO:

$ LD_LIBRARY_PATH=~/naoqi/naoqi-sdk-1.14.5-linux64/lib:$LD_LIBRARY_PATH NAO_IP=127.0.0.1 roslaunch naoqi_driver naoqi_driver.launch force_python:=true

:ROS官网上英文教程中的这一指令貌似有错误,我用的是ROS论坛中的解决方法。

如果运行成功,那么会看到与下列相似的输出:

代码语言:javascript复制
Walker online...
.
nao_controller running...

:不要将这个路径添加到全局LD_LIBRARY_PATH中,不然可能会在运行其他程序时出错。

3.2 在RVIZ中查看虚拟的NAO

首先退出之前所有正在运行的终端应用。

然后安装rospack

$ sudo apt-get install ros-fuerte-rospack

再安装一些ROS的可视化工具:

$ sudo apt-get install ros-fuerte-visualization

接下来重新启动roscore、NAOqi 和 nao_driver

现在我们需要启动 robot_state_publisher并让其加载NAO的URDF模型:

$ roslaunch nao_description robot_state_publisher.launch

然后重新启动RVIZ即可。

在RVIZ中,将左部的”Displays”中的”Fixed Frame”修改为”/base_link”。若只有”/map”选项,则证明URDF模型没有成功加载。

右部的”Target Frame”应该是<Fixed Frame>

运行第二节中行走命令,我们就能看到RVIZ中的NAO开始行走了。

0 人点赞