学习记录-ROS机器人开发实践(一)
前言
系统环境:ubuntu20.04 视觉SLAM看得头好痛,中间切换出来学一下ROS毕竟我是做机器人相关研究的。这个也是必用的呀。 以下讲下ROS的安装和胡春旭大佬的代码编译。
一、ROS的安装
本来想自己写个ROS的安装过程的,但找到了一个教程把所有问题覆盖了,因此我也就不再啰嗦了,上
二、机器人开发实践代码编译
这里本来想着就直接按照书上的教程走,把胡春旭大佬的代码编译一下,没想到真的是如此麻烦。看了很多博客,也有讲20.04怎么安装的,但是感觉遇到的问题没我多,而且最后也没法解决我的问题,因此特地写下这篇博客来记录。 以下简单讲下遇到的困难和解决方法。
1.缺乏ecto
由于没有对应20.04版本的ecto,所以直接上github下载再编译就好了,github地址为:,下载后重新catkin_make就好了。
2.缺乏manipulation_msgs
直接上github下载再编译就好了,github地址为:
3.缺乏household_objects_database_msgs
直接上github下载再编译就好了,github地址为:
4.缺乏object_recognition_msgs
直接上github下载再编译就好了,github地址为:
5.缺乏moveit_msgs
直接上github下载再编译就好了,github地址为:
6.缺乏moveit_ros_perception
在github上搜了半天,都没有对应的包,找了好多博客,有个博客说是必须安装对应的planning-interface搜了一下,也安装了,一点用都没有,后来用apt search搜索出来了noetic下又对应的包,才醒悟过来,之前的可能也可以直接安装。
sudo apt install ros-noetic-moveit-ros-perception
就解决了问题。
7.缺乏household_objects_database_msgs
sudo apt install ros-noetic-move-base-msgs
8.找不到alsa/asoundlib.h:没有这个文件或目录
sudo apt install libasound2-dev
解决问题。
9.ecto的相关文件缺失
这里主要是boost1.70之后的版本问题,按照报错对应的修改即可:
1,进入到ecto的目录下使用如下命令找到这两个文件 $ grep -r tr1 ./src/lib/util.cpp:#include <boost/tr1/unordered_map.hpp> ./src/lib/plasm/impl.hpp:#include <boost/tr1/unordered_map.hpp> 把tr1删除,同时把代码里的std::tr1::unordered_map字段改成boost::unordered_map即可
10.get_io_service()缺失的问题
这里主要是boost1.70之后的版本问题,按照报错对应的修改即可:
boost::asio::io_service& serv_inside_strand = thestrand->get_io_service(); //改前 boost::asio::io_context& serv_inside_strand = thestrand->context() ; //改后
11.找不到-lmsc
缺少对应的库,根据《ROS机器人开发实践》书中介绍(科大讯飞那一块207页),将科大讯飞库文件拷贝到系统目录下,进入SDK根目录下的libs文件夹,选择相应的架构平台x64/x86,使用命令拷贝。
sudo cp libmsc.so /usr/lib/libmsc.so
12.PyString_AsStringAndSize 没有声明
把PyString_AsStringAndSize改为PyBytes_AsStringAndSize解决问题
13.get_io_service缺失第2弹
这里我本来想照搬上面的解决方案,然而在这个类下并没有context()这个函数,因此后来我又尝试了直接替换为get_executor().context(),还是不行。搜了很多博客始终没有合适的解决方法,不得已先暂停了一天缓一缓。 直到我找到了一个博客,才彻底解决问题。至此,编译成功了,再无报错。
参考资料: 1、 2、
总结
本文介绍了如何解决《ROS机器人开发实践》1-3章中的代码和工程问题。