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

…衆ロ難τιáo~ 提交于 2020-03-02 22:41:03

前言

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

实验环境

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过程我个人觉得还是最重要的。

错误一

在这里插入图片描述
细看一下好像是c的标准不一样,这个好解决。

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

cd ~/r2_ws/src
sudo vi CMakeLists.txt 

在这里插入图片描述

错误二:

再次编译

cd ~/r2_ws
catkin_make

在这里插入图片描述
可以看到刚才的问题解决了,然后是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
在这里插入图片描述
修改为:

                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

在这里插入图片描述
可以看到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 即可。

在这里插入图片描述
在这里插入图片描述

错误四

再次编译

cd ~/r2_ws
catkin_make

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

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

在这里插入图片描述
再次编译

cd ~/r2_ws
catkin_make

在这里插入图片描述
大功告成。。但是这个注释操作估计会带来隐患。。。

测试

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

在这里插入图片描述
看样子安装是有点问题的,初始化之后他应该是会抬头收起手臂的。。。。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!