在机器人开发领域,ROS(机器人操作系统)是不可或缺的工具。本文将基于《ROS机器人编程》(表允皙、赵汉哲等著)一书的指导,结合实际操作,详细阐述如何在Ubuntu20.04系统下配置ROS环境。需要说明的是,书中介绍的是旧版本的配置方法,本文将其替换为最新支持的Noetic版本,在此特别感谢原书作者的详细讲解!(●'◡'●)
一、时间同步(可跳过)
在ROS的运行过程中,准确的时间对于多节点间的协同工作至关重要。通过时间同步,可以有效缩短ROS时间误差,为后续的开发与调试提供可靠的时间基础。在Ubuntu20.04系统中,我们可以通过安装chrony
和ntpdate
来实现时间同步。具体操作如下:
sudo apt install -y chrony ntpdate
安装完成chrony
后,使用ntpdate
命令与服务器进行时间校对:
sudo ntpdate -q ntp.ubuntu.com
通过上述步骤,即可完成时间同步工作。若时间误差对当前项目影响不大,此步骤也可选择跳过。
二、更新源
1. 添加源
软件源的选择直接影响到ROS相关软件包的下载速度与稳定性。本文选用阿里云的源进行配置,当然,用户也可以根据自身需求替换为清华、交大等国内节点。执行以下命令添加ROS软件源:
sudo sh -c 'echo "deb http://mirrors.aliyun.com/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
2. 设置公钥
按照书中提示的方法设置公钥,在实际操作中却遇到了问题。原命令:
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
执行后无法生效。尝试官方wiki指导的方法,下载ros.asc
文件:
curl -sO https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc
同样未能成功。经过摸索,发现一种更为可靠的方式:先直接更新源,再根据更新提示的recv key
添加公钥。
3. 更新源
执行更新命令:
sudo apt update
此时,终端可能会出现如下提示:
W: GPG error: http://mirrors.aliyun.com/ros/ubuntu focal Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY ${recvkey}
记住提示中的recv key
,使用以下命令添加公钥:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ${recvkey}
成功添加公钥后,再次执行更新命令,即可顺利完成软件源的更新操作。
三、安装ros库
原书介绍的是安装Kinetic版本(2016),但在Ubuntu20.04系统环境下,更推荐安装Noetic版本(2020)。Noetic版本不仅与Ubuntu20.04有着更好的兼容性,而且更接近ROS2,能够为开发者提供更稳定、更前沿的功能支持。执行以下命令安装ROS Noetic的完整桌面版本:
sudo apt install ros-noetic-desktop-full
上述安装仅包含基本的rqt
(ROS上基于Qt开发的图形工具和插件),若想获得更多功能,可以安装其他相关的rqt
包:
sudo apt install ros-noetic-rqt*
四、初始化rosdep
1. 下载rosdep
sudo apt install python3-rosdep
2. 初始化
执行初始化命令:
sudo rosdep init
在此过程中,可能会遇到报错,提示:
ERROR: cannot download default sources list from:https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.listWebsite may be down.
这通常是由于相关网站被墙导致的。经过多次尝试,发现修改host
文件可以有效解决此问题。使用文本编辑器打开host
文件:
sudo vim /etc/hosts
在文件末尾添加:
151.101.84.133 raw.githubusercontent.com
保存并关闭文件后,重新尝试初始化命令:
sudo rosdep init
若一切顺利,会提示运行更新操作。
3. 更新
执行更新命令:
rosdep update
需要注意的是,不推荐使用sudo
运行此命令,以免出现权限相关的问题。
4. 安装rosinstall
sudo apt install python3-rosinstall
5. 加载环境变量
source /opt/ros/noetic/setup.bash
6. 创建并初始化工作目录
ROS采用名为catkin
的专用构建系统,我们需要创建并初始化catkin
目录。首先,在合适的位置建立文件夹(将${your_path}
替换为实际路径):
mkdir -p ${your_path}/catkin/srccd ${your_path}/catkin/src
然后初始化目录:
catkin_init_workspace
接着回到上级目录,并尝试构建:
cd .. (即${your_path}/catkin/)catkin_make
如果构建成功,目录下除了src
文件夹,还会生成build
和devel
文件夹。
7. 加载catkin构建的环境文件
为了方便后续使用,编辑~/.bashrc
文件,添加以下两行内容:
source /opt/ros/noetic/setup.bashsource ${your_path}/catkin/devel/setup.bash
五、测试安装结果
根据书中的方法,我们可以使用roscore
命令来检验ROS环境是否安装成功。在执行该命令前,需要先安装roslaunch
:
sudo apt install python3-roslaunch
随后,重新打开一个终端,运行roscore
命令:
roscore
若终端输出中出现正常的SUMMARY
字样,则表示ROS环境在Ubuntu20.04系统下已成功配置。此时,你便可以开启精彩的ROS机器人编程之旅,尽情探索机器人开发的无限可能!