**
Ubuntu安装ROS无敌教程(2021年10月)
**
本教程前半部分基于wiki官网教程,后半部分是手动添加 rosdep update
1.安装Ubuntu
到官网下载 Ubuntu LTS的意思就是稳定版本 18.04 20.04 都是稳定版本,对应不用版本的ROS
http://releases.ubuntu.com/16.04/
十分建议下载官网的版本,速度还可
然后使用UltralSO制作启动安装U盘,官方下载
“https://cn.ultraiso.net/
然后有非常多的教程可供选择,分区里面有个很重要的地方,如果计算机需要休眠,一定要创建swap空间(内存的两倍即可)
2.安装ROS
首先打开ROS的wiki官网,有很多ROS版本,看你对应哪一个版本的Ubuntu,记得要换成国内的源,要不然安装很慢,教程里面有提到,请仔细观看
http://wiki.ros.org/cn/kinetic/Installation/Ubuntu
以ROS kenitic为例,使用里面前四步教程,到rosdep init然后停下来
上面的两步,2021年在中国大陆不管怎么折腾,什么手机热点,在host里面加没有被屏蔽的网址等等,都不行了,归根结底是网站被屏蔽掉了,访问不了
sudo rosdep init
这一句的功能是从服务器raw.githubusercontent.com
里面下载一个文件20-default.list
文件到 /etc/ros/rosdep/sources.list.d
这个目录,有一定概率其实可以完成这一步,但是大部分情况是不行,我曾经手机热点成功过一次,但这种尝试很多次的方法不怎么靠谱,所有我们做的就是手动完成这一步,直接创建这个文件。
大部分是这个报错
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.
或者是这个报错
ERROR: default sources list file already exists:
/etc/ros/rosdep/sources.list.d/20-default.list
Please delete if you wish to re-initialize
这是已经偶然创建了20-default.list这个文件,没有关系,反正都是报错。
正常情况下20-default.list的文件内容如下,我们可以看到有五个网址,而这五个网址还是被屏蔽的,这也就是为什么rosdep update
无法成功的原因
# os-specific listings first
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx
# generic
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
gbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte
# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
我们的思路就是把服务器上的东西都下载到本地来,把raw.githubusercontent.com
换成本地的目录。
我们需要的找几个文件是在https://github.com/ros/rosdistro
上面
可以安装git 工具把文件克隆到本地,安装git工具执行
apt get install git
克隆rosdistro目录
sudo git clone https://github.com/ros/rosdistro.git
有的时候这一步很慢,那就直接在https://github.com/ros/rosdistro.git
里面下载
下载完成之后得到一个压缩包rosdistro-master,为了方便后续操作,重命名为master,然后新建rosdistro,把master放入其中。
将rosdistro文件夹放到根目录下面,然后执行
sudo cp -r rosdistro /etc/ros
注意,直接放 /etc/ros是放不进去,这个位置的文件写有保护,必须在终端下操作。
完成了这一步执行
sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list
这时候把默认的https://raw.githubusercontent.com
全部替换为 file://etc
,修改完成后是这个样子,可以直接把这个复制进去,///是允许的
# os-specific listings first
yaml file:///etc/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx
# generic
yaml file:///etc/ros/rosdistro/master/rosdep/base.yaml
yaml file:///etc/ros/rosdistro/master/rosdep/python.yaml
yaml file:///etc/ros/rosdistro/master/rosdep/ruby.yaml
gbpdistro file:///etc/ros/rosdistro/master/releases/fuerte.yaml fuerte
# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
然后就完成了 rosdep init 这一步,记得点保存
接下来是对ros里面其他指向raw.githubusercontent.com
的网址进行替换,一共有三处,分别执行
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/rep3.py
sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/__init__.py
利用Ctrl+F搜索https://raw.githubusercontent.com
替换为 file:///etc
在替换的时候可能会看到这个
FUERTE_GBPDISTRO_URL = 'https://raw.github.com/ros/rosdistro/' \
+ 'master/releases/fuerte.yaml'
里面的 \ + 是python连接语句的语法,没有什么特殊含义
最后执行
rosdep date
成功