Table of Contents
爲了在遠程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
注意,這裏要使用左箭頭“”和右箭頭“”兩個鍵位來調整軟件包設置中的選項。安裝完畢後重啓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
如上圖, 根據指示使用對應鍵位對機器人進行控制即可。