Ubuntu18.04安装ROS
一、ROS简介
ROS(Robotic Operation System),是用于编写机器人软件程序的一种具有高度灵活性的软件架构。它包含了大量工具软件、库代码和约定协议,旨在简化跨机器人平台创建复杂、鲁棒的机器人行为这一过程的难度与复杂度。
二、ROS安装步骤
1.导入list
快捷键Ctrl+Alt+T打开Ubuntu下的terminal,在terminal中进行list的导入。
这里我默认采用了中科大的镜像源,以避免后面可能由于网络原因而产生的一些包信息加载的问题。
sudo sh -c . /etc/lsb-release && echo deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main /etc/apt/sources.list.d/ros-latest.list
如果想使用官方源,则可输入如下语句。
sudo sh -c echo deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main /etc/apt/sources.list.d/ros-latest.list
2.导入key
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
3.进行包信息的更新
sudo apt-get update
4.安装ROS桌面版
sudo apt-get install ros-melodic-desktop-full
5.初始化ROSDEP
sudo rosdep init
rosdep update
初始化ROSDEP中可能会出现的错误的解决方法~
(1)sudo: rosdep: command not found
在运行sudo rosdep init时可能出现sudo: rosdep: command not found的错误,这是因为ROS的部分工具包没有被安装,在terminal执行下面的语句进行包的安装之后就可以啦~
sudo apt install rospack-tools
(2)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.
这个问题是由于github在国内的墙变高了,一种比较好的解决方式就是给github相关网站添加github访问代理。
https://ghproxy.com/是一个非常好的github的资源代理网站。我们要做的就是在所有需要用到github相关网站的前面添加github代理。
使用了github相关网站的py程序有如下几个:
- /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py
- /usr/lib/python2.7/dist-packages/rosdistro/__init__.py
- /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
- /usr/lib/python2.7/dist-packages/rosdep2/rep3.py
- /usr/lib/python2.7/dist-packages/rosdistro/manifest_provider/github.py
接下来我们要对这些程序中的github网站路径进行github代理的添加。
- /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py
第72行改为如下内容:
DEFAULT_SOURCES_LIST_URL = 'https://ghproxy.com/raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list'
更改完之后的效果如下:
- /usr/lib/python2.7/dist-packages/rosdistro/__init__.py
sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/__init__.py
第68行改为如下内容:
DEFAULT_INDEX_URL = 'https://ghproxy.com/raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'
更改完之后的效果如下:
- /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
第36、37行改为如下内容:
FUERTE_GBPDISTRO_URL = 'https://ghproxy.com/raw.githubusercontent.com/ros/rosdistro/' \
'master/releases/fuerte.yaml'
更改完之后的效果如下:
- /usr/lib/python2.7/dist-packages/rosdep2/rep3.py
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/rep3.py
第39行改为如下内容:
REP3_TARGETS_URL = 'https://ghproxy.com/raw.githubusercontent.com/ros/rosdistro/master/releases/targets.yaml'
更改完之后的效果如下:
- /usr/lib/python2.7/dist-packages/rosdistro/manifest_provider/github.py
sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/manifest_provider/github.py
第68行改为如下内容,要注意有缩进哈,不确定的可以对照一下下面的图~
url = 'https://ghproxy.com/raw.githubusercontent.com/%s/%s/package.xml' % (path, release_tag)
更改完之后的效果如下:
第119、120行改为如下内容,要注意有缩进哈,不确定的可以对照一下下面的图~
url = 'https://ghproxy.com/raw.githubusercontent.com/%s/%s/%s' % \
(path, cache.ref(), package_xml_path + '/package.xml' if package_xml_path else 'package.xml')
更改完之后的效果如下:
这样都更改好之后,再运行
sudo rosdep init
若出现Wrote /etc/ros/rosdep/sources.list.d/20-default.list,并提示运行rosdep update,则说明已经初始化成功啦~
(3)ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml]:
<urlopen error [Errno 104] Connection reset by peer> …
ERROR: error loading sources list:
<urlopen error <urlopen error [Errno 104] Connection reset by peer> (https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml)>
若出现这一大坨错误,则运行下面语句。
sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list
将其中的raw.githubusercontent.com前面都加上/ghproxy.com/即可。
在添加好github代理之后,在运行rosdep update就可以实现rosdep信息的更新啦~
正确的更新后的信息如下,wooooooooooo~
6.添加到系统路径
echo source /opt/ros/melodic/setup.bash ~/.bashrc
source ~/.bashrc
7.安装依赖包
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
走过以上步骤之后,ROS已经正确地被安装在Ubuntu上啦,开始ROS之旅吧~
有什么问题的话可以在留言区留言o~