0%

Ubuntu安装ROS

官方网站 | 官方文档

ROS版本介绍

ROS版本 推荐Ubuntu版本 发布时间 停止支持时间
ROS Kinetic Ubuntu 16.04 (Xenial) 2016年5月 2021年4月
ROS Melodic Ubuntu 18.04 (Bionic) 2018年5月 2023年5月
ROS Noetic Ubuntu 20.04 (Focal) 2020年5月 2025年5月

本文的Ubuntu版本为 Ubuntu 18.04 ,故安装 ROS Melodic

添加清华apt源

1
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'

也可以使用下面的官方源或查看镜像列表:

1
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

设置公钥

1
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

更新源

1
sudo apt update

使用apt进行ROS的完整安装

1
sudo apt install ros-melodic-desktop-full

设置环境变量

1
2
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

安装可能用到的依赖

1
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential

设置rosdep

1
2
3
sudo apt install python-rosdep
sudo rosdep init
rosdep update

在执行 sudo rosdep init 时很可能出错,如果错误原因如下:

1
ERROR: unable to process source https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/xxx

则是因为 raw.githubusercontent.com 被墙导致的问题,此时修改hosts即可解决。

使用 https://www.ip138.com 查询 raw.githubusercontent.com 的ip(一般使用香港的ip,目前解析为 151.101.76.133 ),修改到hosts文件

1
sudo gedit /etc/hosts

在文件末尾追加:

1
2
# For rosdep init
151.101.76.133 raw.githubusercontent.com

保存重新执行 sudo rosdep init 即可。

如果上述方法仍不能解决问题,还有个终极方案

1
2
sudo mkdir -p /etc/ros/rosdep/sources.list.d
sudo vim /etc/ros/rosdep/sources.list.d/20-default.list

https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list 的内容粘贴进去,如下:

1
2
3
4
5
6
7
8
9
10
# 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

禁用SSL,使用 sudo vim /usr/lib/python2.7/dist-packages/rosdep2/sources_list.pyimport yaml 后插入:

1
2
import ssl
ssl._create_default_https_context = ssl._create_unverified_context

执行 rosdep update 就可以了,不需要再执行 sudo rosdep init

创建ros工作空间

1
2
3
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make

将工作空间加入环境变量

1
2
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

测试ROS

使用小乌龟(turtlesim)来测试ROS的安装。

首先打开ROS服务:

1
roscore

打开一个新终端,运行小乌龟:

1
rosrun turtlesim turtlesim_node

打开一个新终端,可通过向终端发送方向键来控制小乌龟的移动:

1
rosrun turtlesim turtle_teleop_key