本文介绍在 Ubuntu 系统上安装与配置 ROS 环境的完整流程,包括系统编码与软件源检查、ROS2 Foxy 安装、ROS1 与 ROS2 环境切换、编译命令差异及常用终端指令对照。
1. 检查系统设置#
1.1 检查编码 UTF-8#
终端输入:
出现如下输出信息说明编码为 UTF-8:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN:en_US:en
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=
|
1.2 检查是否启用 Ubuntu Universe 存储库#
终端输入:
1
|
apt-cache policy | grep universe
|
若输出如下则表示已启用:
1
2
3
4
|
500 http://security.ubuntu.com/ubuntu focal-security/universe i386 Packages
release v=20.04,o=Ubuntu,a=focal-security,n=focal,l=Ubuntu,c=universe,b=i386
500 http://security.ubuntu.com/ubuntu focal-security/universe amd64 Packages
release v=20.04,o=Ubuntu,a=focal-security,n=focal,l=Ubuntu,c=universe,b=amd64
|
若无输出,执行以下命令启用:
1
2
|
sudo apt install software-properties-common
sudo add-apt-repository universe
|
1.3 设置软件包签名密钥#
1
2
3
|
sudo apt update && sudo apt install curl gnupg2 lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/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] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
|
2. 安装#
1
|
sudo apt install ros-foxy-desktop
|
3. 配置环境变量#
为方便在 ROS1 和 ROS2 之间切换,可在 ~/.bashrc 中添加以下函数:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# >>> type in ros to choose which to initialize >>>
ros(){
echo "ros: noetic(1) foxy(2)?"
read edition
if [ "$edition" -eq "1" ];then
source /opt/ros/noetic/setup.bash
echo using ROS1 Noetic
else
source /opt/ros/foxy/setup.bash
echo using ROS2 Foxy
fi
}
# <<< type in ros/ros2 to initialize <<<
|
根据需要修改工作空间路径,然后执行 source ~/.bashrc 使配置生效。
4. 编译命令差异#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# ROS1
catkin_create_pkg <package_name> [depend1] [depend2] [depend3]...
# catkin_create_pkg test_pkg std_msgs rospy roscpp
catkin_make
catkin_make -DCATKIN_WHITELIST_PACKAGES=""
# ROS2
colcon build
# 只编译指定包
colcon build --packages-select PACKAGE_NAME
# 忽略指定包
colcon build --packages-ignore PACKAGE_NAME
# 遇到编译错误继续编译其他模块
colcon build --continue-on-error
|
5. 工作空间配置#
1
2
|
source ~/catkin_ws/devel/setup.bash
source ~/colcon_ws/install/setup.bash
|
6. 终端命令对照#
| ROS1 命令 |
ROS2 命令 |
rosrun |
ros2 run |
rosnode |
ros2 node |
roslaunch |
ros2 launch |
rosparam |
ros2 param |
rospkg |
ros2 pkg |
rosservice |
ros2 service |
rossrv |
ros2 srv |
rostopic |
ros2 topic |
rosaction |
ros2 action |
- ROS2 官方安装文档:https://docs.ros.org/en/foxy/Installation/Ubuntu-Install-Debians.html
- ROS Noetic 安装文档:http://wiki.ros.org/noetic/Installation/Ubuntu
- colcon 编译工具文档:https://colcon.readthedocs.io/