NAO学习——从NAOqi和rviz开始学习在ROS上运行NAO
1. 开始连接一个实体NAO
1.1 运行nao_bringup
在开始之前,我们首先要确定三个必须的依赖包 naoqi_driver,naoqi_bridge 和 nao_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开始行走了。