欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-01 08:49:45
...

前言

NASA的R2机器人已经在空间站成功的部署了,可是这个开源机器人在ros平台上的资源很少,估计都被人遗忘了,R2机器人拥有两条机械臂以及人形的外壳,对于初学ros的人来说应该是非常有吸引力的,今天参考书上的例子尝试下R2的操作。
ros机器人编程实践(11.1)- 下棋机器人之安装
ros机器人编程实践(11.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)- 下棋机器人之安装
细看一下好像是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)- 下棋机器人之安装

错误二:

再次编译

cd ~/r2_ws
catkin_make

ros机器人编程实践(11.1)- 下棋机器人之安装
可以看到刚才的问题解决了,然后是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)- 下棋机器人之安装
修改为:

                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)- 下棋机器人之安装
可以看到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)- 下棋机器人之安装
ros机器人编程实践(11.1)- 下棋机器人之安装

错误四

再次编译

cd ~/r2_ws
catkin_make

ros机器人编程实践(11.1)- 下棋机器人之安装
最后一个错误了。。。真不容易,这个吧,就是设置一个属性,之前学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)- 下棋机器人之安装
再次编译

cd ~/r2_ws
catkin_make

ros机器人编程实践(11.1)- 下棋机器人之安装
大功告成。。但是这个注释操作估计会带来隐患。。。

测试

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

ros机器人编程实践(11.1)- 下棋机器人之安装
看样子安装是有点问题的,初始化之后他应该是会抬头收起手臂的。。。。

相关标签: ros学习