【机器人-开发工具】ROS 2 (2)Ubuntu20.04安装ROS 2 Foxy版本
文章目录
- 1. 环境和安装版本
- 1.1. 本机环境
- 1.2. ROS 2 Foxy 安装版本介绍
- 1. ROS 2 Foxy Desktop版本
- 2. ROS 2 Foxy Base版本
- 3. ROS 2 Foxy ROS-Base版本
- 4. 源码安装
- 2. 设置系统环境
- 2.1. 更新和安装必要依赖
- 2.2. 系统的语言和区域设置
- 3. 添加ROS 2存储库
- 3.1. 添加ROS 2 GPG密钥
- 3.2. 将ROS 2存储库添加到源列表
- 4. 安装ROS 2 Foxy包
- 5. 设置环境变量
- 6. 测试安装
1. 环境和安装版本
1.1. 本机环境
Ubuntu 20.04.6 LTS
1.2. ROS 2 Foxy 安装版本介绍
1. ROS 2 Foxy Desktop版本
- 概述:这是为大多数用户推荐的安装选项,尤其是初学者。它包括了ROS 2的核心组件、构建工具、可视化工具如RViz、命令行工具等,以及一些示例程序。
- 适用场景:这个版本适合那些希望快速开始开发和测试机器人应用的用户。如果你想要一个完整的开发环境,以便能够立即开始学习或开发机器人项目,那么Desktop版本是最好的选择。
2. ROS 2 Foxy Base版本
- 概述:这是最小化的安装包,只包含运行ROS 2节点所需的最基础组件。
- 适用场景:如果你打算从头构建自己的ROS 2环境,或者对系统资源有限制,可以选择Base版本。该版本不包含图形界面工具或示例代码,适用于需要定制化设置或资源受限的环境。
3. ROS 2 Foxy ROS-Base版本
- 概述:类似于Base版本,但还包括了一些额外的库和工具,这些对于开发有用但不包含任何GUI工具。
- 适用场景:这使得它比Base版本更全面,但仍比Desktop版本轻量。适合那些不需要完整桌面环境但希望拥有更多开发工具的用户。
4. 源码安装
- 概述:对于那些想要体验最新特性或贡献代码给ROS 2项目的开发者来说,可以从源码编译ROS 2。
- 适用场景:这种方式允许你获取最新的功能和修复,但也需要更多的配置工作,并可能遇到未解决的bug或兼容性问题。源码安装适合高级用户或开发者,他们需要访问最新的功能或是想参与到ROS 2的开发中去。
2. 设置系统环境
2.1. 更新和安装必要依赖
- 安装命令:
sudo apt update && sudo apt upgrade sudo apt install locales curl software-properties-common
- 安装项说明:
locales(用于设置系统的语言和区域设置) curl(用于下载文件) software-properties-common(提供添加额外仓库的能力)
2.2. 系统的语言和区域设置
-
目的:为了软件的正常运行,必要使用的语言和地区设置是英语(美国),并且使用UTF-8编码
-
查看本机设置: 使用
locale
命令,输出结果如下LANG=en_US.UTF-8 LANGUAGE= LC_CTYPE="en_US.UTF-8" LC_NUMERIC=zh_CN.UTF-8 LC_TIME=zh_CN.UTF-8 LC_COLLATE="en_US.UTF-8" LC_MONETARY=zh_CN.UTF-8 LC_MESSAGES="en_US.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和4),调到步骤5
-
生成en_US.UTF-8区域设置并更新当前环境的语言设置
-
命令:
sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 export LANG=en_US.UTF-8
-
说明:
-
locale-gen en_US en_US.UTF-8
:此命令用于生成指定的语言和地区对应的locale数据。在这里,它为英语(美国)生成了两种编码格式的数据:默认编码和UTF-8编码。 -
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
:这个命令用来更新全局的locale设置,使得所有的locale类别都使用en_US.UTF-8作为默认值。LC_ALL是一个覆盖所有locale类别的变量,而LANG则设置了默认的locale环境。 -
export LANG=en_US.UTF-8
:临时地将当前shell会话中的LANG环境变量设置为en_US.UTF-8。这意味着在这个终端会话中,默认使用的语言和地区设置是英语(美国),并且使用UTF-8编码
-
- 验证语言设置结果:使用
locale
命令,输出结果如下
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=zh_CN.UTF-8
LC_TIME=zh_CN.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=zh_CN.UTF-8
LC_MESSAGES="en_US.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=
LC_ALL 为空是正常现象,它表示系统正在使用 LANG 和其他 LC_* 变量来决定各项区域设置,而不是被 LC_ALL 强制覆盖。
LC_ALL 是一个“临时覆盖”变量,用来强制设置所有区域设置(LC_)为同一个值。一般情况下,我们不需要一直设置它,而是让系统根据 LANG 和各个 LC_(如 LC_CTYPE、LC_TIME 等)来确定具体的区域设置。
- 启用Universe存储库
- 确保启用了Universe存储库,命令:
sudo add-apt-repository universe
sudo apt update
- 意义:
Ubuntu默认提供了多个软件源,其中"Universe"包含由社区维护的免费开源软件。ROS 2依赖于一些位于Universe中的软件包,因此需要确保这个仓库被启用。
3. 添加ROS 2存储库
3.1. 添加ROS 2 GPG密钥
- 意义:
ROS 2通过GPG密钥验证下载的软件包的完整性和来源。这一步确保你从官方获取ROS 2包,避免潜在的安全风险。 - 命令:
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
3.2. 将ROS 2存储库添加到源列表
- 意义:
这一步骤将ROS 2的官方软件源添加到你的系统中,使得可以通过标准的apt命令来安装ROS 2的相关软件包。 - 命令:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2-latest.list > /dev/null
命令添加到你的/etc/apt/sources.list.d/ros2-latest.list
文件中
dpkg --print-architecture
来确定系统的架构(例如amd64)
lsb_release -cs
来确定当前Ubuntu的代号(对于20.04是"focal")
这样可以确保你添加的是正确的仓库地址,适用于你的特定系统配置。
4. 安装ROS 2 Foxy包
安装ROS 2 Foxy Desktop版本
推荐初学者安装Desktop版本,因为它包含了ROS、RViz、示例程序等:
sudo apt update
sudo apt install ros-foxy-desktop
5. 设置环境变量
每次打开新的终端时都需要加载ROS 2的环境变量。可以通过以下命令一次性设置它:
- 对于Bash
echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
source ~/.bashrc
- 对于Zsh
echo "source /opt/ros/foxy/setup.bash" >> ~/.zshrc
source ~/.zshrc
!注意!:
如果之前装了ROS 1,需要注释掉.bashrc文件中的ROS Noetic环境变量设置来避免冲突
否则会报错:
ROS_DISTRO was set to 'noetic' before. Please make sure that the environment does not mix paths from different distributions.
-
对于Bash
vim ~/.bashrc
注释noetic,找到下面行,前面添加#,保存修改:
source /opt/ros/noetic/setup.bash
-
对于Zsh
vim ~/.zshrc
注释noetic,找到下面行,前面添加#,保存修改:
source /opt/ros/noetic/setup.zsh
6. 测试安装
为了验证ROS 2是否正确安装,可以运行简单的发布者和订阅者节点来测试通信是否正常工作:
- 打开一个终端并运行C++的talker节点:
ros2 run demo_nodes_cpp talker
- 在另一个终端中运行Python的listener节点:
ros2 run demo_nodes_py listener
如果一切正常,你应该会看到talker节点正在发布消息,而listener节点能够接收到这些消息。
结果示例如下: