课程给出的源码和环境是 ros-kinetic 的,我的环境是 Ubuntu20.04 和 Noetic
一开始 下载好源码后安装依赖:(将kinetic换成noetic)
rosdep install --from-paths src --ignore-src --rosdistro=noetic -y
有报错:robot_sim_demo: Cannot locate rosdep definition for [yocs_cmd_vel_mux]
后来我打开github项目网址,在issue中看到有人问有没有20.04版本的,有人回复他了一个网址:
https://github.com/thinkexist1989/ROS-Academy-for-Beginners/tree/noetic
说是有人做了适配20.04的代码。
我以为是版本的问题,于是打开这个链接,照着README 下载了Academy-for-Beginners 课程教学代码:
cd ~/catkin_ws/src
git clone -b melodic https://github.com/DroidAITech/ROS-Academy-for-Beginners.git
然后安装依赖:
cd ~/catkin_ws
rosdep install --from-paths src --ignore-src --rosdistro=noetic -y
依旧报错:
robot_sim_demo: Cannot locate rosdep definition for [yocs_cmd_vel_mux]
搜了一下有人说是要用该命令安装 yocs-cmd-vel-mux 这个包:
sudo apt install ros-noetic-yocs-cmd-vel-mux
但是我试了一下不行,后来看到有人说Noetic中没有这个包,要去git上下载:
对于ROS Noetic而言,官方仓库中尚未提供ros-noetic-yocs-cmd-vel-mux
包,因此,通过Git克隆的方式获取该包并集成至本地工作空间:
cd ~/catkin_ws/src/
git clone https://github.com/yujinrobot/yujin_ocs.git
装好了之后重新安装依赖,结果又出来新的报错,缺少另一个依赖 yocs-msgs,这个也没法命令行直接安装:
于是一顿搜索,在yocs-cmd-vel-mux包官方github下看到有人说,如果要在noetic下使用这个包,还需要装 yocs_msgs 和 ar_track_alvar_msgs 这两个包:
又一顿搜索,找到了这两个包的下载方法:
首先可以试一下你的工作空间是否已经装了 这两个包:
sudo apt-get update
sudo apt-get install ros-noetic-yocs-msgs ros-noetic-ar-track-alvar-msgs
没有的话从git下载安装:
cd ~/catkin_ws/src
git clone https://github.com/yujinrobot/yocs_msgs.git
git clone https://github.com/ros-perception/ar_track_alvar.git
更新一下:
rosdep update
重新安装依赖:
rosdep install --from-paths src --ignore-src --rosdistro=noetic -y
等待……本以为没什么问题了,结果到最后还是报错了:没有libqt4
这个问题的解决参考该博主的文章:
ubantu20.04版本ros安装和课程教学代码下载编译和运行过程遇见的问题和解决方案
步骤是:先安装 qt4,再安装 libqt4-dev:
sudo add-apt-repository ppa:rock-core/qt4
sudo apt update
sudo apt install libqt4-dev
漫长的等待
好了——再重新安装依赖:
rosdep install --from-paths src --ignore-src --rosdistro=noetic -y
终于:
接下来编译:
cd ~/catkin_ws
catkin_make
没想到又报错了:
Could not find a package configuration file provided by "boost_signals”
原因是 20.04 版本移除了这个包,在对应文件CMakeLists中注释掉:见上图路径
还有一个:
注释掉:
好了,重新编译:
catkin_make
END