ROS-Noetic踩坑

本科时候图方便仅仅使用了Windows下的V-REP(想想用gazebo还要学Linux和ROS就好麻烦…),最近由于需要学习了ROS,也算是填上本科时候埋下的坑(>﹏<)。

本文主要针对ROS wiki教程基于ROS Noetic踩得雷做一下总结,关于如何学习ROS,可以参考知乎高赞,马学长的回答ROS学习入门(抛砖引玉篇)

ROS安装

目前有在维护的版本有Kinetic、Melodic以及Noetic。由于我的Ubuntu版本是20.04,所以选择了Noetic,并且Noetic是最新版本,会维护到2025年。

在安装Ubuntu系统的时候切记主分区要大于15G,我最开始分了10G结果ROS安一半,它满了!!!弄得我又重装了一遍系统…

节点、话题、服务

这部分按照教程来做就可以了,注意Hydro版本和非Hydro版本的命令区别。

创建ROS消息和服务

在新增ROS消息和服务以后我们要对Catkin_package.txt进行修改,增加依赖,生成器,调用生成。

因为好多部分教程都要求找到注释代码,修改以后去掉注释,使代码生效。例如下面这样:
ROS-Noetic踩坑
我又…是图方便,没有查找注释代码,直接将修改代码添加到尾部,当时觉得反正那部分也是注释无效的,结果又开启了找BUG之旅…

最后发现CMakeList.txt文件必须遵循如下的格式,不然就无法正确地编译:
1.查找编译依赖的其他CMake/Catkin包(声明依赖库):find_package()
2.添加消息/服务/操作文件:add_message_files()…
3.调用消息/服务/操作生成:generate_messages()

roswtf使用

roswtf 可以检查你的ROS系统并尝试发现问题。

当我运行roswtf时发现系统报错,需要更新rosdep。
ROS-Noetic踩坑

而当我按照提示运行命令rosdep update时又会发现:
ROS-Noetic踩坑

卑微的我又按照提示安装了python3-rosdep2
ROS-Noetic踩坑ROS-Noetic踩坑
本以为按照提示将缺少的软件包安装以后就万事大吉,结果当运行roscore的时候原本正常的ROS开始报错!
ROS-Noetic踩坑

于是我就经历了卸ROS,安ROS,Google+Baidu无限的月读轮回当中╥﹏╥
最后偶然发现,在安装rosdep的过程当中,第一行提示正在卸载ros-noetic-desktop-full,what!!!???原来是rosdep在安装的过程中偷偷摸摸把我的ros-noetic卸载了,于是我在安装rosdep以后重装了一遍ros,这时候在运行roscore、roswtf就没问题啦!
ROS-Noetic踩坑ROS-Noetic踩坑