ros机器人编程实践(11.1)- 下棋机器人之安装nasa_r2

302
0
2020年8月25日 11时44分

前言

注意:因为版本原因没能成功操作R2,还在探索阶段,这里只是记录安装过程。

 

NASA的R2机器人已经在空间站成功的部署了,可是这个开源机器人在ros平台上的资源很少,估计都被人遗忘了,R2机器人拥有两条机械臂以及人形的外壳,对于初学ros的人来说应该是非常有吸引力的,今天参考书上的例子尝试下R2的操作。

 

ros机器人编程实践(11.1)- 下棋机器人之安装nasa_r2插图

ros机器人编程实践(11.1)- 下棋机器人之安装nasa_r2插图(1)

 

实验环境

ros:kinetic
Ubuntu:16.04
gazebo:7.0.0

安装

现在下载github的资源是真的慢。。。解决办法可以看我这篇微博:解决github资源下载慢

 

mkdir -p ~/r2_ws/src
cd r2_ws/src
catkin_init_workspace
catkin_create_pkg r2 rospy geometry_msgs
git clone https://gitee.com/xmy0916/nasa_r2_simulator.git
git clone https://gitee.com/xmy0916/nasa_r2_common

 

你可以看到这两个谷仓是我从NASA的github上拉到我的gitee上的,从gitee下载资源非常的快。

编译

cd ~/r2_ws
catkin_make

 

不出意外要很多报错,这也是这篇博客这么晚写的原因,初学的时候看到这些问题头都大了,无从下手,慢慢的发现作者给的包肯定是能用的,问题都出在版本不同上了,所以解决这些问题的方法就是看不同版本软件的源码,寻找差异。debug过程我个人觉得还是最重要的。

 

错误一

 

ros机器人编程实践(11.1)- 下棋机器人之安装nasa_r2插图(2)

 

细看一下好像是c的标准不一样,这个好解决。

修改CMakeLists.txt中,SET(CMAKE_CXX_FLAGS ” “)为SET(CMAKE_CXX_FLAGS “-std=c++0x”)

 

cd ~/r2_ws/src
sudo vi CMakeLists.txt 

 

ros机器人编程实践(11.1)- 下棋机器人之安装nasa_r2插图(3)

 

错误二:

 

再次编译

cd ~/r2_ws
catkin_make

 

ros机器人编程实践(11.1)- 下棋机器人之安装nasa_r2插图(4)

 

可以看到刚才的问题解决了,然后是gazebo的 问题,这个比较棘手。。。作者用的gazebo版本非常老。。。好像是gazebo0.几的版本这些函数都废弃了。我于是下载了作者用的版本的gazebo源码,对比了缺少的代码,但是能力有限,本以为添加这几个函数就可以了,结果这些函数间互相牵连的太多了。。。改动起来要大改,而且不太清楚这些函数的用处,所以只能放弃了。这里我只整明白了修改一部分代码。

 

sudo gedit /home/xmy/r2_ws/src/nasa_r2_simulator/gazebo_gripper/src/gazebo_gripper/GazeboGripper.cpp

 

打开报错的cpp文件,ctrl+F搜索报错关键字AddContact

 

ros机器人编程实践(11.1)- 下棋机器人之安装nasa_r2插图(5)

 

修改为:

                if (collisionPtrs.find(name1) == collisionPtrs.end())
                {
                    cc[name1] = contacts[i].collision1;
                    contactCounts[name1] += 1;
                }
                if (collisionPtrs.find(name2) == collisionPtrs.end())
                {
                    cc[name2] = contacts[i].collision2;
                    contactCounts[name2] += 1;
                }

 

错误三

 

再次编译

cd ~/r2_ws
catkin_make

 

ros机器人编程实践(11.1)- 下棋机器人之安装nasa_r2插图(6)

 

可以看到AddContact的报错已经没有了。

然后处理这个replace_all
replace_all是c语言boost库里面的函数,这个肯定很好解决
网上搜了下源码发现replace_all在algorithm类里面,显然调用的代码应该是

 

boost::algorithm::replace_all 

 

再次编辑文本

sudo gedit /home/xmy/r2_ws/src/nasa_r2_simulator/gazebo_taskboard/src/gazebo_taskboard/GazeboTaskboard.cpp

 

包含下头文件#include “boost/algorithm/string.hpp”
全改成boost::algorithm::replace_all 即可。

 

ros机器人编程实践(11.1)- 下棋机器人之安装nasa_r2插图(7)

ros机器人编程实践(11.1)- 下棋机器人之安装nasa_r2插图(8)

 

错误四

 

再次编译

cd ~/r2_ws
catkin_make

 

ros机器人编程实践(11.1)- 下棋机器人之安装nasa_r2插图(9)

 

最后一个错误了。。。真不容易,这个吧,就是设置一个属性,之前学java都会有set、get方法,然后我看了0.几版本的gazebo源码,他确实就是修改了类里面一个成员的值为true,也不知道这个成员在那些文件都被用上了,我也不好直接加上。。。哎。。那就只能把这句话删了呗。。。

 

sudo gedit /home/xmy/r2_ws/src/nasa_r2_simulator/gazebo_gripper/src/gazebo_gripper/GazeboGripper.cpp

 

ros机器人编程实践(11.1)- 下棋机器人之安装nasa_r2插图(10)

 

再次编译

cd ~/r2_ws
catkin_make

 

ros机器人编程实践(11.1)- 下棋机器人之安装nasa_r2插图(11)

 

大功告成。。但是这个注释操作估计会带来隐患。。。

测试

cd ~/r2_ws
source ./devel/setup.bash
roslaunch r2_gazebo r2_gazebo.launch

 

ros机器人编程实践(11.1)- 下棋机器人之安装nasa_r2插图(12)

 

看样子安装是有点问题的,初始化之后他应该是会抬头收起手臂的。。。。

 

发表评论

后才能评论