学习记录-ROS机器人开发实践(一)

文章目录

  • 前言
  • 一、ROS的安装
  • 二、机器人开发实践代码编译
    • 1.缺乏ecto
    • 2.缺乏manipulation_msgs
    • 3.缺乏household_objects_database_msgs
    • 4.缺乏object_recognition_msgs
    • 5.缺乏moveit_msgs
    • 6.缺乏moveit_ros_perception
    • 7.缺乏household_objects_database_msgs
    • 8.找不到alsa/asoundlib.h:没有这个文件或目录
    • 9.ecto的相关文件缺失
    • 10.get_io_service()缺失的问题
    • 11.找不到-lmsc
    • 12.PyString_AsStringAndSize 没有声明
    • 13.get_io_service缺失第2弹
  • 总结


前言

系统环境:ubuntu20.04
视觉SLAM看得头好痛,中间切换出来学一下ROS毕竟我是做机器人相关研究的。这个也是必用的呀。
以下讲下ROS的安装和胡春旭大佬的代码编译。


一、ROS的安装

本来想自己写个ROS的安装过程的,但找到了一个教程把所有问题覆盖了,因此我也就不再啰嗦了,上链接

二、机器人开发实践代码编译

这里本来想着就直接按照书上的教程走,把胡春旭大佬的代码编译一下,没想到真的是如此麻烦。看了很多博客,也有讲20.04怎么安装的,但是感觉遇到的问题没我多,而且最后也没法解决我的问题,因此特地写下这篇博客来记录。
以下简单讲下遇到的困难和解决方法。

1.缺乏ecto

学习记录-ROS机器人开发实践(一)_第1张图片
由于没有对应20.04版本的ecto,所以直接上github下载再编译就好了,github地址为:ecto包,下载后重新catkin_make就好了。

2.缺乏manipulation_msgs

学习记录-ROS机器人开发实践(一)_第2张图片
直接上github下载再编译就好了,github地址为:manipulation_msgs

3.缺乏household_objects_database_msgs

学习记录-ROS机器人开发实践(一)_第3张图片
直接上github下载再编译就好了,github地址为:household_objects_database_msgs

4.缺乏object_recognition_msgs

学习记录-ROS机器人开发实践(一)_第4张图片
直接上github下载再编译就好了,github地址为:object_recognition_msgs

5.缺乏moveit_msgs

学习记录-ROS机器人开发实践(一)_第5张图片
直接上github下载再编译就好了,github地址为:moveit_msgs

6.缺乏moveit_ros_perception

学习记录-ROS机器人开发实践(一)_第6张图片
在github上搜了半天,都没有对应的包,找了好多博客,有个博客说是必须安装对应的planning-interface搜了一下,也安装了,一点用都没有,后来用apt search搜索出来了noetic下又对应的包,才醒悟过来,之前的可能也可以直接安装。

sudo apt install ros-noetic-moveit-ros-perception

就解决了问题。

7.缺乏household_objects_database_msgs

学习记录-ROS机器人开发实践(一)_第7张图片

sudo apt install ros-noetic-move-base-msgs

8.找不到alsa/asoundlib.h:没有这个文件或目录

学习记录-ROS机器人开发实践(一)_第8张图片

sudo apt install libasound2-dev

解决问题。

9.ecto的相关文件缺失

学习记录-ROS机器人开发实践(一)_第9张图片
这里主要是boost1.70之后的版本问题,按照报错对应的修改即可:

1,进入到ecto的目录下使用如下命令找到这两个文件
$ grep -r 'tr1'
./src/lib/util.cpp:#include 
./src/lib/plasm/impl.hpp:#include 
把tr1删除,同时把代码里的std::tr1::unordered_map字段改成boost::unordered_map即可

10.get_io_service()缺失的问题

学习记录-ROS机器人开发实践(一)_第10张图片
这里主要是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机器人开发实践(一)_第11张图片
缺少对应的库,根据《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(),还是不行。搜了很多博客始终没有合适的解决方法,不得已先暂停了一天缓一缓。
直到我找到了一个博客解决no member named ‘get_io_service’,才彻底解决问题。至此,编译成功了,再无报错。

参考资料:
1、ecto的问题
2、机器人开发实践


总结

本文介绍了如何解决《ROS机器人开发实践》1-3章中的代码和工程问题。

你可能感兴趣的:(学习记录,学习,机器人)