官方默认安装源:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
或来自国内清华的安装源
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
或来自国内中科大的安装源
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
这里建议使用清华或者中科大的源,因为比较快
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
更新软件源
sudo apt update
安装ROS,注意这里的ROS版本需要和Ubuntu版本对应
| Ubuntu | ROS |
|---|---|
| 14.04 | indigo |
| 16.04 | kinetic |
| 18.04 | melodic |
| 20.04 | noetic |
所以我们安装noetic版本
sudo apt-get install ros-noetic-desktop-full
这个过程耗时较长,而且会出现失败的风险,可以多次重复调用该命令,直至成功
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
因为我装了zsh的终端,所以这个指令应该改为如下指令,但是默认终端是bash,所以没必要修改
echo "source /opt/ros/noetic/setup.zsh" >> ~/.zshrc
source ~/.zshrc
如果需要卸载ROS可以调用如下命令:
sudo apt-get remove ros-noetic-*
在 noetic 最初发布时,和其他历史版本稍有差异的是:没有安装构建依赖这一步骤。随着 noetic 不断完善,官方补齐了这一操作。
首先安装依赖工具
sudo apt-get install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
初始化rosdep
sudo rosdep init
rosdep update
如果没有意外的话出现意外了,rosdep初始化无法成功,因为有几个文件下载不下来,这是因为国内墙和DNS污染的原因,即使我科学上网了,也下载不下来,就很离谱,这里只提供一个解决方案,就是将需要下载的文件下载到本地后替换。
下载文件
cd ~
git clone https://github.com/ros/rosdistro.git
# 那么这个文件就被下载到了你的用户目录下
# 也就是 /home/[xxx]/rosdistro
# 这里的[xxx]也就是你的用户名
修改文件
cd /home/[xxx]/rosdistro/rosdep/sources.list.d/
sudo gedit 20-default.list
将这个文件的内容替换如下,注意[xxx]是你的用户名,不要直接写[xxx]
# os-specific listings first
yaml file:///home/[xxx]/rosdistro/rosdep/osx-homebrew.yaml osx
# generic
yaml file:///home/[xxx]/rosdistro/rosdep/base.yaml
yaml file:///home/[xxx]/rosdistro/rosdep/python.yaml
yaml file:///home/[xxx]/rosdistro/rosdep/ruby.yaml
gbpdistro file:///home/[xxx]/rosdistro/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/ros/ 都需要被替换为 file:///home/[xxx]/
# 1
sudo gedit /usr/lib/python3/dist-packages/rosdistro/__init__.py
# 2
sudo gedit /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py
# 3
sudo gedit /usr/lib/python3/dist-packages/rosdep2/sources_list.py
# 4
sudo gedit /usr/lib/python3/dist-packages/rosdep2/rep3.py
最后直接update
rosdep update
就可以正常实现 rosdep 的初始化与更新了。