写在前面:
新手安装ROS,一些常见问题及解决方法。本文内容包括:
1)ROS安装详细步骤;
2)软件包有未满足的依赖关系怎么解决、rosdep初始化找不到命令怎么解决、rosdep更新time out问题怎么解决等。
一、安装步骤(18.04)
1.添加ROS软件源
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
2. 添加密钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
3.安装ROS
sudo apt update
sudo apt install ros-melodic-desktop-full
4.初始化rosdep
sudo rosdep init
rosdep update
5. 设置环境变量
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
6. 安装rosinstall
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
7. 使用roscore命令启动ROS Master
roscore
8. 测试小海龟
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
二、常见问题及分析
1、软件和更新相关设置
首先安装前要确保软件和更新里这四个勾选上,然后选一个好一点的下载源,不然下载ROS包的时候贼慢(可能几k每秒…)
我开始装的是Ubuntu20.04,软件和更新找了半天在找到。。。(在所有应用程序里面)。
2、“依赖”问题
到了$ sudo apt install ros-melodic-desktop-full这一步我的心碎历程开始了。我将melodic也改成了noetic,但运行下面指令时出现了如下问题,简称“依赖”问题
听说可以这样解决:
sudo apt-get install aptitude
sudo aptitude install ros-noetic-desktop-full
但是
依赖的软件没有,那我们就去安装,然后我就
先安装libsigc+±2.0-0v5(依赖的第二项)
sudo apt-get install libsigc++-2.0-0v5
再安装前面的libcwidget4(依赖第一项)
sudo apt-get install libcwidget4
下一步就可以安装 aptitude了
sudo apt-get install aptitude
安装完aptitude以为就可以使用这个命令安装ros-noetic了,然后
sudo aptitude install ros-noetic-desktop-full
但是,接下来:
libjpeg-turbo8-dev : 依赖: libjpeg-turbo8 (= 2.0.3-0ubuntu1) 但是 2.0.3-0ubuntu1.20.04.1 已安装
libldap2-dev : 依赖: libldap-2.4-2 (= 2.4.49+dfsg-2ubuntu1) 但是 2.4.49+dfsg-2ubuntu1.3 已安装
libsqlite3-dev : 依赖: libsqlite3-0 (= 3.31.1-4) 但是 3.31.1-4ubuntu0.2 已安装
libmysqlclient-dev : 依赖: libmysqlclient21 (= 8.0.19-0ubuntu5) 但是 8.0.21-0ubuntu0.20.04.3 已安装
libjson-c-dev : 依赖: libjson-c4 (= 0.13.1+dfsg-7) 但是 0.13.1+dfsg-7ubuntu0.3 已安装
libgphoto2-dev : 依赖: libgphoto2-6 (= 2.5.24-1) 但是 2.5.25-0ubuntu0.1 已安装
libgtk-3-dev : 依赖: gir1.2-gtk-3.0 (= 3.24.18-1ubuntu1) 但是 3.24.20-0ubuntu1 已安装
依赖: libgtk-3-0 (= 3.24.18-1ubuntu1) 但是 3.24.20-0ubuntu1 已安装
libcurl4-openssl-dev : 依赖: libcurl4 (= 7.68.0-1ubuntu2) 但是 7.68.0-1ubuntu2.1 已安装
libglib2.0-bin : 冲突: libglib2.0-bin:i386 但是 2.64.2-1~fakesync1 将被安装
libglib2.0-bin:i386 : 冲突: libglib2.0-bin 但是 2.64.3-1~ubuntu20.04.1 已安装
libdbus-1-dev : 依赖: libdbus-1-3 (= 1.12.16-2ubuntu2) 但是 1.12.16-2ubuntu2.1 已安装
libglib2.0-dev : 依赖: libglib2.0-0 (= 2.64.2-1~fakesync1) 但是 2.64.3-1~ubuntu20.04.1 已安装
libexif-dev : 依赖: libexif12 (= 0.6.21-6) 但是 0.6.21-6ubuntu0.3 已安装
curl : 依赖: libcurl4 (= 7.68.0-1ubuntu2) 但是 7.68.0-1ubuntu2.1 已安装
libatk-bridge2.0-dev : 依赖: libatk-bridge2.0-0 (= 2.34.1-3) 但是 2.34.2-0ubuntu2~20.04.1 已安装
libglib2.0-0 : 破坏: libglib2.0-0:i386 (!= 2.64.3-1~ubuntu20.04.1) 但是 2.64.2-1~fakesync1 将被安装
libglib2.0-0:i386 : 破坏: libglib2.0-0 (!= 2.64.2-1~fakesync1) 但是 2.64.3-1~ubuntu20.04.1 已安装
而且好多ros相关的文件装不了,哎,看来还是不行。。。然后自己瞎折腾了一波,好多东西都不知道咋删没了,Ubuntu活动里只剩下个商店和终端。。。
心累了,不折腾了,换Ubuntu18.04吧还是。
第二天换了Ubuntu18.04,sudo apt install ros-melodic-desktop-full命令顺利执行!
3、rosdep初始化找不到命令
不过到初始化rosdep时又遇到一些小问题:
使用$ sudo rosdep init 时,找不到命令
这时需安装python-rosdep,即
sudo apt install python-rosdep
4、rosdep init遇到如下错误
ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.
执行如下命令
cd /etc
sudo gedit hosts
在文件末尾添加
151.101.84.133 raw.githubusercontent.com
保存后退出。再次执行前面指令,出现如下即为成功
参考:https://blog.csdn.net/qq_44830040/article/details/106049992
5、rosdep更新遇到time out错误
接下来就是使用$ rosdep update,然而
一直出现time out的问题,换了手机热点在更新还是不行,使用vim编辑器修改
找了其他解决方法,说:
更改 /usr/lib/python2.7/dist-packages/rosdep2/下的三个文件sources_list.py、gbpdistro_support.py、rep3.py
中的DOWNLOAD_TIMEOUT = 15.0值,改大一点就可以了。
操作如下:
sudo vim /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
然后利用vim的搜索功能输入:/DOWNLOAD_TIMEOUT搜索到这一行,修改过后输入:wq保存退出就行了。
这个修改过后只是成功的几率会高很多,后面执行命令的时候发现卡住了就Ctrl + C重来多执行几次就过了。
原文链接: https://www.cnblogs.com/zxzmnh/p/11758103.html.
(这里的方法需要知道如何使用vim编辑器,我开始不知道如何修改那个15,然后搜了一下)
然后我把15改成20,还是不行(不知道是不是还小了)。我想八成就是网络的原因了。就这样,一条命令从上午反复运行到下午。。。
后面我还看到有的人说换个时间段再试试,就这样,在下午六点多时奇迹出现了,终于更新成功了!
6、安装成功
后面的步骤都很顺利,roscore也成功运行,龟龟终于跑起来了。
最后,祝大家一遍成功!
如果本文对你有帮助,还请点赞支持!