在远程pc上安装ROS来控制NAO

Table of Contents

1、在远程pc上安装ros

2、安装NAOqi

3、安装NAO机器人相关的ROS功能包

4、安装远程ros功能包

5、c++ bridge的安装

6、在真正的NAO上启动birdge

7、在RVIZ中显示NAO

8、控制NAO机器人

9、使用键盘控制NAO机器人


为了在远程pc上运行ros bridge,需要做一系列的准备工作 (即步骤1~5)。

1、在远程pc上安装ros

参考之前的文章:https://blog.csdn.net/li528405176/article/details/82288465

2、安装NAOqi

NAO机器人官方推荐的开发语言为python,所以首先需要配置ubuntu下NAO的python开发环境,参考之前的文章:https://blog.csdn.net/li528405176/article/details/85267476

3、安装NAO机器人相关的ROS功能包

使用如下命令安装必要的功能包:

sudo apt-get install ros-kinetic-driver-base ros-kinetic-move-base-msgs ros-kinetic-octomap ros-kinetic-octomap-msgs ros-kinetic-humanoid-msgs ros-kinetic-humanoid-nav-msgs ros-kinetic-camera-info-manager ros-kinetic-camera-info-manager-py ros-kinetic-nao-robot

注意 :如果pc上安装的是其他版本的ros,把上述命令中的kinetic替换掉即可。

4、安装远程ros功能包

首先进入你的ros工作空间中的src目录下

cd ~/catkin_ws/src

然后创建一个 .rosinstall 文件,并打开

touch .rosinstall
gedit .rosinstall

输入下面的内容进去,注意,不要落下开头的短横线

- git: {local-name: naoqi_bridge, uri: "https://github.com/ros-naoqi/naoqi_bridge.git", version: master}
- git: {local-name: nao_robot, uri: "https://github.com/ros-naoqi/nao_robot.git", version: master}
- git: {local-name: nao_extras, uri: "https://github.com/ros-naoqi/nao_extras.git", version: master}
- setup-file: {local-name: ../devel/setup.bash }

保存然后关闭,要从Github获取和更新功能包,请运行以下wstool命令

sudo apt install python-wstool
wstool update

然后编译并设置你的ros工作空间

cd ..
catkin_make
source devel/setup.bash   #刷新终端环境

5、c++ bridge的安装

前面的部分只安装了python版本的桥接器(bridge),我们也可以安装一个c++版本的桥接器,相比之下c++程序的执行速度比python脚本要快不少。

首先下载c++版本的NAOqi SDK,官方推荐无论是python版本还是c++版本最好选择2.1.2版本。下载之后解压。

然后在第4部分中提到的ros工作空间中运行以下命令来提取、安装和测试SDK。官方使用一个独立的用来查找c++版本NAOqi SDK的cmake文件,但是需要设置一个名为 AL_DIR 的环境变量,该变量指向c++版本NAOqi SDK的安装目录。运行以下命令即可

echo "export AL_DIR=/path/to/sdk" >> ~/.bashrc    #注意,其中/path/to/sdk是指c++ NAOqi SDK所在路径。比我我这里其实是:~/qtest/naoqi-sdk-2.1.2.17-linux64
source ~/.bashrc
cd ~/catkin_ws
catkin_make

6、在真正的NAO上启动birdge

这里我们主要用到nao_bringup功能包来连接机器人。nao_bringup包含作为nao单一入口点的启动和配置文件。启动文件将会启动机器人特定配置的所有基本执行器和传感器发布器。

在使用nao_bringup功能包之前一定要确认你已经安装了它依赖的三个功能包:naoqi_driver、naoqi_bridge、nao_description 。

可以使用rospack命令分别进行确认

rospack find naoqi_driver

如果没有安装则可以利用如下命令从github中下载安装

git clone https://github.com/ros-naoqi/naoqi_driver.git
git clone https://github.com/ros-naoqi/naoqi_bridge.git 
git clone https://github.com/ros-naoqi/nao_robot.git

要启动机器人bringup,只需运行

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

其中<robot_ip>表示机器人ip地址,<roscoe_ip>表示远程pc的ip地址,<roscoe_network_interface_card>表示网络接口卡名称。网络接口卡的名称可以通过ifconfig命令查看,如下图,我使用的无线连接,网络接口卡名称为wlp5s0

也可以使用python SDK来启动机器人bringup,命令如下

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

7、在RVIZ中显示NAO

为了在rviz中显示nao机器人,我们需要使用ros提供的一个预先配置好的rviz配置文件,它能够显示所有基本的组件(包括TF、机器人模型、摄像头和声纳)。它放置在你的ros工作空间下的nao_robot功能包中,具体路径为:~/catkin_ws/src/nao_robot/nao_description/config/urdf.rviz 。

可以使用如下命令使用该配置文件

rosrun rviz rviz -d ~/catkin_ws/src/nao_robot/nao_description/config/urdf.rviz

如上图,只能显示机器人的TF座标系。基于阿尔德巴兰公司的策略,我们无法直接可视化机器人的3D网格。如果我们想要看到机器人的3D模型,需要下载该模型的安装包,然后在安装过程中接受它的许可信息。通过以下命令安装即可

sudo apt-get install ros-kinetic-nao-meshes

注意,这里要使用左箭头\leftarrow”和右箭头\rightarrow”两个键位来调整软件包设置中的选项。安装完毕后重启rviz即可。

如上图,重新打开rviz之后可以看到NAO机器人的3D模型了~

8、控制NAO机器人

注意,要想使用ros命令控制机器人,我们在第6步中需要使用python SDK启动bringup。因为官方给出的nao_full.launch文件是不完整的,没有启动nao_walker节点。而nao_full_py.launch文件是内容完备的。

启动bringup后执行 rosnode list 命令查看 nao_walker 节点是否启动

 如上图,我们看到该节点已经成功启动。然后,我们需要使nao机器人保持刚化(即给电机上电,禁止手动调整关节)

rosservice call /body_stiffness/enable "{}"

若想解除刚化状态,使其处于放松状态,可执行以下命令

rosservice call /body_stiffness/disable "{}"

刚化之后,我们可以向机器人发送行走命令,使其向前行走

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}}'

如果要让它停止运动,只需将x方向速度值设为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}}'

9、使用键盘控制NAO机器人

首先安装一个键盘控制功能包

sudo apt-get install ros-kinetic-teleop-twist-keyboard

打开该节点

rosrun teleop_twist_keyboard teleop_twist_keyboard.py

如上图, 根据指示使用对应键位对机器人进行控制即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章