0、引言
ROS1 的官方维基已经详细罗列了ROS安装选择。本文将着手探讨如何在 Ubuntu 20.04.6 操作系统上安装 ROS1 的最后一个发行版本 —— ROS Noetic Ninjemys:
💬 如果您的计算机还没有安装 Ubuntu 20.04.6 的话,可以参考这篇文章。
当然,ROS1 的官方维基也提供了 ROS Noetic 的详尽安装教程,所以本文从本质上来说也只是搬运/转载。
1、本教程使用到的相关软件或产品
- Ubuntu 20.04.6 LTS
- ROS Noetic Ninjemys LTS
2、安装
2.1、配置 Ubuntu 软件仓库
配置你的 Ubuntu 软件仓库 (repositories) 以允许使用“universe”、“restricted”和“multiverse”存储库。你可以在“设置”>“关于”>“软件更新”找到并配置相关内容:
2.2、设置 sources.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'
(这意味着待会儿会从「中国科学技术大学」的镜像站下载 ROS Noetic)
💬 此外,笔者的 Ubuntu apt 也是换过源的,如果有需求,可以参考这篇文章里的更换软件源操作。
2.3、设置密钥
设置密钥用于验证软件包的真实性:
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
若无法连接到密钥服务器,可以尝试替换上面命令中的 hkp://keyserver.ubuntu.com:80 为 hkp://pgp.mit.edu:80
另外我们也可以使用
curl
命令替换apt-key
命令,这在使用代理服务器的情况下比较有用:curl -sSL 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | sudo apt-key add -
2.4、开始安装
-
更新软件源的软件包列表以确保 Debian 软件包索引是最新的:
sudo apt update
-
完整桌面版安装(Desktop-Full,推荐):除了桌面版的全部组件外,还包括2D/3D模拟器(simulator)和2D/3D 感知包(perception package):
sudo apt install ros-noetic-desktop-full
由于我们是通过国内镜像源下载的 ROS Noetic,速度会很快。大概一分钟就可以下载完成:
随后还会花费大概三分钟时间解压和设置: -
在 ROS 中还有更多可用的软件包。我们可以直接安装一个特定的软件包,命令格式如下:
sudo apt install ros-noetic-包名称
笔者暂时没有要安装更多软件包的需求,所以没有执行这一步。要查看或搜索所有可用的软件包,参考 ROS Index 或使用:
apt search ros-noetic
-
完成后,我们可以在
/opt/ros
目录找到刚刚安装的 ROS Noetic:
2.5、设置环境
打开一个终端依次执行下面两条命令即可:
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
source
是一个 Linux 命令,当我们在 bash 中source
一个文件时,它会在当前 shell 中读取并执行文件的每一行(比如 setup.bash 这个配置脚本文件的每一行)。当我们在 .bashrc 文件中添加该语句时,他会在每次打开一个新的终端时都执行一次source
命令,以便 ROS Noetic 在任意打开的终端内都能正常使用。在 Ubuntu 系统下,.bashrc 文件是一个存在于普通用户目录(如
/home/用户名
)或root用户目录(/root
)下的隐藏文件。它相当于 shell 的配置文件。每次打开新的终端时,.bashrc 文件都会被读取。
2.6、构建包的依赖
到目前为止,您已经安装了运行核心 ROS 软件包所需的内容。要创建和管理您自己的 ROS 工作空间,这还有各种单独发布的工具和需求。例如,rosinstall 是一个常用的命令行工具,它使您能够使用一个命令轻松地下载 ROS 包的许多源代码树。
要安装此工具和其他用于构建 ROS 包的依赖项,请运行:
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
大约耗时一分钟
2.6.1、初始化 rosdep
在您可以使用许多 ROS 工具之前,您需要初始化 rosdep。rosdep 使您能够轻松地为要编译的源代码安装系统依赖项;并且运行 ROS 中的一些核心组件,rosdep 是必需的。我们可以通过以下两条命令初始化 rosdep:
sudo rosdep init
rosdep update
由于这两条命令都会访问境外网站,有可能会出现超时错误;如果出现超时错误,可以参考如下两篇文章或者参考2.6.2小节:
2.6.2、使用「鱼香ROS」配置 rosdepc(推荐)
针对2.6.1小节使用官方教程初始化 rosdep 可能出现的超时错误,我们可以使用鱼香社区提供的一键安装工具配置 rosdepc。执行以下命令以运行一键安装工具:
wget http://fishros.com/install -O fishros && . fishros
输入数字“3”即可一键配置 rosdepc。配置耗时约一分钟,随后输入密码完成配置:
执行以下命令以测试更新:
rosdepc update
rosdepc 使用国内的清华大学镜像源,可以保证不会出现超时问题:
3、验证 ROS Noetic
在《(零)基础概念篇》的 Why Turtle 小节曾提到过“ROS 里面有一个 turtlesim 系统,就是受 LOGO 的海龟绘图系统启发,帮助人们学习 ROS 而设计的。”;而要验证 ROS 是否安装成功,就是使用这个系统来验证的。
-
首先我们在 Ubuntu 桌面使用
ctrl+alt+T
快捷键打开一个终端,然后使用roscore
命令启动 ROS Master,如下图所示: -
启动完成之后,再新打开一个终端,使用
rosrun turtlesim turtlesim_node
命令运行 turtlesim 节点,它会打开一个包含一只小乌龟图标的新的窗口,如下图所示:小乌龟图标是在当前及以往所有的 ROS 发行版本的小乌龟图标中随机一个出现
-
再新打开一个终端,使用
rosrun turtlesim turtle_teleop_key
命令运行 teleop_turtle 节点,它会读取键盘输入;此时我们就可以使用键盘上的上下左右方向按键控制小乌龟移动了,如下图所示: -
如果你能够通过键盘上的方向按键控制小乌龟移动,那么恭喜你,这意味着你已经成功安装了 ROS Noetic 了,就像下图这样:
-
你可以使用
rosnode list
和rostopic list
命令查看使用到的 ROS Node 和 ROS Topic;