ROS 2
Abstract
The Robot Operating System (ROS) 是一组用于构建机器人应用程序的软件库和工具。从驱动程序和最先进的算法到强大的开发人员工具,ROS 拥有您下一个机器人项目所需的开源工具。
自 2007 年 ROS 启动以来,机器人和 ROS 社区发生了很多变化。ROS 2 项目的目标是适应这些变化,利用 ROS 1 的优点并改进不足之处。
Info
比起提供设置镜像源的各种命令,本文更像是手把手教你如何安装 ROS 2 的教程。
Warning
基于大众使用偏好,本文目前仅提供针对 Ubuntu 的教程。
Ubuntu 版本需要 >= 22.04 (aka. Jammy Jellyfish)。
在 Ubuntu 上安装
Info
本文所有操作均在 Ubuntu 22.04 (aka. Jammy Jellyfish) 的环境下操作,其他版本的操作类似。
1. apt 镜像源
根据 👉 此文档:镜像 > apt 👈 进行设置。
2. UTF-8 支持性
若上述命令成功输出带有 UTF-8
字样的内容,表明你的系统环境已支持 UTF-8;
否则,请前往 ROS 2 文档:Set locale 进行操作,直至符合要求。
Success
Bash |
---|
| jin@vm-ros-demo:~# sudo locale
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN:zh
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
|
3. ROS 2(apt 仓库)镜像源
Bash |
---|
| apt install software-properties-common -y
add-apt-repository universe
|
Success
Bash |
---|
| jin@vm-ros-demo:~# sudo apt install software-properties-common
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
将会同时安装下列软件:
python3-software-properties software-properties-gtk
下列软件包将被升级:
python3-software-properties software-properties-common software-properties-gtk
升级了 3 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 164 个软件包未被升级。
需要下载 114 kB 的归档。
解压缩后会消耗 6,144 B 的额外空间。
您希望继续执行吗? [Y/n]
获取:1 https://mirror.sjtu.edu.cn/ubuntu jammy-updates/main amd64 software-properties-common all 0.99.22.9 [14.1 kB]
获取:2 https://mirror.sjtu.edu.cn/ubuntu jammy-updates/main amd64 software-properties-gtk all 0.99.22.9 [71.3 kB]
获取:3 https://mirror.sjtu.edu.cn/ubuntu jammy-updates/main amd64 python3-software-properties all 0.99.22.9 [28.8 kB]
已下载 114 kB,耗时 0秒 (741 kB/s)
(正在读取数据库 ... 系统当前共安装有 141946 个文件和目录。)
准备解压 .../software-properties-common_0.99.22.9_all.deb ...
正在解压 software-properties-common (0.99.22.9) 并覆盖 (0.99.22.7) ...
准备解压 .../software-properties-gtk_0.99.22.9_all.deb ...
正在解压 software-properties-gtk (0.99.22.9) 并覆盖 (0.99.22.7) ...
准备解压 .../python3-software-properties_0.99.22.9_all.deb ...
正在解压 python3-software-properties (0.99.22.9) 并覆盖 (0.99.22.7) ...
正在设置 python3-software-properties (0.99.22.9) ...
正在设置 software-properties-common (0.99.22.9) ...
正在设置 software-properties-gtk (0.99.22.9) ...
正在处理用于 dbus (1.12.20-2ubuntu4.1) 的触发器 ...
正在处理用于 shared-mime-info (2.1-2) 的触发器 ...
正在处理用于 mailcap (3.70+nmu1ubuntu1) 的触发器 ...
正在处理用于 desktop-file-utils (0.26-1ubuntu3) 的触发器 ...
正在处理用于 hicolor-icon-theme (0.17-2) 的触发器 ...
正在处理用于 gnome-menus (3.36.0-1ubuntu3) 的触发器 ...
正在处理用于 libglib2.0-0:amd64 (2.72.4-0ubuntu2.2) 的触发器 ...
正在处理用于 man-db (2.10.2-1) 的触发器 ...
jin@vm-ros-demo:~# sudo add-apt-repository universe
正在添加组件‘universe’到所有软件源。
按 [ENTER] 继续,或按 Ctrl-c 取消。
命中:1 https://mirror.sjtu.edu.cn/ubuntu jammy InRelease
命中:2 https://mirror.sjtu.edu.cn/ubuntu jammy-updates InRelease
命中:3 https://mirror.sjtu.edu.cn/ubuntu jammy-backports InRelease
命中:4 https://mirror.sjtu.edu.cn/ubuntu jammy-security InRelease
正在读取软件包列表... 完成
|
以上,启用了 Ubuntu 的 universe
仓库。
Bash |
---|
| sudo apt install curl -y
sudo curl -sSL https://mirrors.tuna.tsinghua.edu.cn/rosdistro/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list
|
Success
Bash |
---|
| jin@vm-ros-demo:~# sudo apt install curl -y
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
将会同时安装下列软件:
libcurl4
下列【新】软件包将被安装:
curl
下列软件包将被升级:
libcurl4
升级了 1 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 163 个软件包未被升级。
需要下载 483 kB 的归档。
解压缩后会消耗 454 kB 的额外空间。
获取:1 https://mirror.sjtu.edu.cn/ubuntu jammy-updates/main amd64 libcurl4 amd64 7.81.0-1ubuntu1.15 [289 kB]
获取:2 https://mirror.sjtu.edu.cn/ubuntu jammy-updates/main amd64 curl amd64 7.81.0-1ubuntu1.15 [194 kB]
已下载 483 kB,耗时 0秒 (2,512 kB/s)
(正在读取数据库 ... 系统当前共安装有 141985 个文件和目录。)
准备解压 .../libcurl4_7.81.0-1ubuntu1.15_amd64.deb ...
正在解压 libcurl4:amd64 (7.81.0-1ubuntu1.15) 并覆盖 (7.81.0-1ubuntu1.13) ...
正在选中未选择的软件包 curl。
准备解压 .../curl_7.81.0-1ubuntu1.15_amd64.deb ...
正在解压 curl (7.81.0-1ubuntu1.15) ...
正在设置 libcurl4:amd64 (7.81.0-1ubuntu1.15) ...
正在设置 curl (7.81.0-1ubuntu1.15) ...
正在处理用于 man-db (2.10.2-1) 的触发器 ...
正在处理用于 libc-bin (2.35-0ubuntu3.1) 的触发器 ...
jin@vm-ros-demo:~# sudo curl -sSL https://mirrors.tuna.tsinghua.edu.cn/rosdistro/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
jin@vm-ros-demo:~# echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list
deb [arch=amd64 signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu jammy main
|
以上,下载并信任了从仓库下载 ROS 2 套件所需的公钥。
Success
Bash |
---|
| jin@vm-ros-demo:~# sudo apt update
命中:1 https://mirror.sjtu.edu.cn/ubuntu jammy InRelease
获取:2 https://mirror.sjtu.edu.cn/ubuntu jammy-updates InRelease [119 kB]
命中:3 https://mirror.sjtu.edu.cn/ubuntu jammy-backports InRelease
获取:4 https://mirror.sjtu.edu.cn/ubuntu jammy-security InRelease [110 kB]
获取:5 https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu jammy InRelease [4,682 B]
获取:6 https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu jammy/main amd64 Packages [1,423 kB]
已下载 1,657 kB,耗时 1秒 (2,939 kB/s)
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
有 163 个软件包可以升级。请执行 ‘apt list --upgradable’ 来查看它们。
|
以上,更新了 apt 的缓存,以应用刚刚添加的仓库。
4. ROS 2 套件安装
Bash |
---|
| sudo apt install ros-humble-desktop
|
安装可能会耗费一些时间。需要下载约 700MB 的文件,安装后将会占用约 3GB 的磁盘空间。
ROS 2 将被安装至 /opt/ros/humble/
目录。
5. 配置环境变量
Bash |
---|
| source /opt/ros/humble/setup.bash
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
|
以上,将 ROS 2 的环境变量添加至 .bashrc
文件中。
rosdep
1. 安装
Bash |
---|
| sudo apt install python3-rosdep
|
Success
Bash |
---|
| jin@vm-ros-demo:~# sudo apt install python3-rosdep
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
将会同时安装下列软件:
python3-rosdep-modules
下列【新】软件包将被安装:
python3-rosdep python3-rosdep-modules
升级了 0 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 133 个软件包未被升级。
需要下载 56.1 kB 的归档。
解压缩后会消耗 356 kB 的额外空间。
您希望继续执行吗? [Y/n]
获取:1 https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu jammy/main amd64 python3-rosdep-modules all 0.22.2-1 [52.6 kB]
获取:2 https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu jammy/main amd64 python3-rosdep all 0.22.2-1 [3,532 B]
已下载 56.1 kB,耗时 0秒 (251 kB/s)
正在选中未选择的软件包 python3-rosdep-modules。
(正在读取数据库 ... 系统当前共安装有 228287 个文件和目录。)
准备解压 .../python3-rosdep-modules_0.22.2-1_all.deb ...
正在解压 python3-rosdep-modules (0.22.2-1) ...
正在选中未选择的软件包 python3-rosdep。
准备解压 .../python3-rosdep_0.22.2-1_all.deb ...
正在解压 python3-rosdep (0.22.2-1) ...
正在设置 python3-rosdep-modules (0.22.2-1) ...
正在设置 python3-rosdep (0.22.2-1) ...
|
2. rosdep init
为了以非侵入式的方式进行换源,在此手动模拟 rosdep init
的行为。
无需执行 rosdep init
。
Bash |
---|
| sudo mkdir -p /etc/ros/rosdep/sources.list.d/
sudo curl -o /etc/ros/rosdep/sources.list.d/20-default.list https://mirrors.tuna.tsinghua.edu.cn/github-raw/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
|
Success
Bash |
---|
| jin@vm-ros-demo:~# sudo mkdir -p /etc/ros/rosdep/sources.list.d/
jin@vm-ros-demo:~# sudo curl -o /etc/ros/rosdep/sources.list.d/20-default.list https://mirrors.tuna.tsinghua.edu.cn/github-raw/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 550 100 550 0 0 4603 0 --:--:-- --:--:-- --:--:-- 4621
|
3. rosdep update
使用环境变量为 rosdep update
换源。
并将环境变量写入 ~/.bashrc
文件以自动加载。
Bash |
---|
| export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml
echo 'export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml' >> ~/.bashrc
rosdep update
|
Success
Bash |
---|
| jin@vm-ros-demo:~$ export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml
jin@vm-ros-demo:~$ echo 'export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml' >> ~/.bashrc
jin@vm-ros-demo:~$ rosdep update
reading in sources list data from /etc/ros/rosdep/sources.list.d
Hit https://mirrors.tuna.tsinghua.edu.cn/github-raw/ros/rosdistro/master/rosdep/osx-homebrew.yaml
Hit https://mirrors.tuna.tsinghua.edu.cn/github-raw/ros/rosdistro/master/rosdep/base.yaml
Hit https://mirrors.tuna.tsinghua.edu.cn/github-raw/ros/rosdistro/master/rosdep/python.yaml
Hit https://mirrors.tuna.tsinghua.edu.cn/github-raw/ros/rosdistro/master/rosdep/ruby.yaml
Query rosdistro index https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml
Skip end-of-life distro "ardent"
Skip end-of-life distro "bouncy"
Skip end-of-life distro "crystal"
Skip end-of-life distro "dashing"
Skip end-of-life distro "eloquent"
Skip end-of-life distro "foxy"
Skip end-of-life distro "galactic"
Skip end-of-life distro "groovy"
Add distro "humble"
Skip end-of-life distro "hydro"
Skip end-of-life distro "indigo"
Add distro "iron"
Skip end-of-life distro "jade"
Skip end-of-life distro "kinetic"
Skip end-of-life distro "lunar"
Skip end-of-life distro "melodic"
Add distro "noetic"
Add distro "rolling"
updated cache in /home/jin/.ros/rosdep/sources.cache
|