1.说明
本教程试用于WSL2+Ubuntu22.04+ros2配置
2.安装ros2
由于国内网络环境原因,或者对于不希望在安装细节花太多时间的读者,可直接前往后文的“其它”小节,获取快速安装ROS2与相关软件的方式。
在Ubuntu操作系统下安装ros2,需要进行四个步骤。第一步,打开Ubuntu终端进行区域设置;第二步,添加源;第三步,执行安装指令。第四步,设置环境变量。下面,笔者对这四个步骤进行逐一介绍。
2.1 区域设置
区域设置,是特定于语言和地域的规则。不同系统、平台、与软件有不同的区域设置处理方式和不同的设置范围,区域设置的内容包括:数据格式、货币金额格式、小数点符号、千分位符号、度量衡单位、通货符号、日期写法、日历类型、文字排序、姓名格式、地址等等。例如,如果读者在Ubuntu系统中选择了美国英语区域设置,那么在 Ubuntu系统中,日期消息将以格式“月-日-年”显示,而货币符号将会使用“$”表示。
打开终端,输入以下指令显示当前系统的区域设置:
locale # 以键值对形式显示当前系统的区域设置
注释:打开终端快捷键 Ctrl+Alt+T。
LANG= # 默认设定
LANGUAGE= # 系统语言
LC_CTYPE= # 语言符号及其分类
LC_NUMERIC= # 数字
LC_TIME= # 时间显示格式,
LC_COLLATE= # 比较和排序习惯
LC_MONETARY= # 货币单位
LC_MESSAGES= # 信息,如提示信息、错误信息、状态信息、标题、标签、按钮和菜单等
LC_PAPER= # 默认纸张大小
LC_NAME= # 姓名书写方式
LC_ADDRESS= # 地址书写方式
LC_TELEPHONE= # 电话号码书写方式
LC_MEASUREMENT= # 度量衡表达方式
LC_IDENTIFICATION= # locale对自身包含信息的概述
LC_ALL= # 强制设定
其中键的含义笔者已经注释在了代码块中,值即为该健含义所使用的语言环境,这些键值对共同形成了系统的区域设置。语言环境的语法规则为:<语言>_<地区>.<字符集编码>,例如zh_CN.UTF-8中,zh表示中文,CN表示中国大陆,UTF-8表示编码方式。
下面笔者简单介绍一下字符集与编码方式。
字符集是一个系统支持的所有抽象字符的集合。通常以二维表的形式存在,二维表的内容和大小是由使用者的语言而定。如ASCII,GBxxx,Unicode等。
编码是指将人类语言中的字符转换为计算机可以处理的二进制序列的过程。UTF-8是针对Unicode的一种编码方式。它可以用来表示Unicode标准中的任何字符,而且其编码中的第一个字节仍与ASCII相容,使得原来处理ASCII字符的软件无须或只进行少部分修改后,便可继续使用。因此,它逐渐成为电子邮件、网页、其他存储或传送文字的应用中,优先采用的编码方式。
为了保证ROS2可以顺利安装与运行,需要进行区域设置。打开终端,输入以下指令:
sudo apt update && sudo apt install locales # 更新软件包列表并安装区域设置包
sudo locale-gen en_US en_US.UTF-8 # 生成en_US.UTF-8的区域设置包
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 # 强制设定区域设置为en_US.UTF-8,默认设定区域设置为en_US.UTF-8
export LANG=en_US.UTF-8 # 设置环境变量LANG=en_US.UTF-8
注释:
- sudo是系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,可以减少root用户的登录和管理时间,同时也提高了安全性。
- apt是软件包管理工具,可以安装、更新、删除和管理deb软件包。
- export是配置环境变量指令。
2.2 添加源
Ubuntu操作系统可使用终端指令直接安装软件,执行此命令时Ubuntu系统会在文件系统中寻找到/etc/apt/sources.list文件,或者在/etc/apt/sources.list.d/文件夹下的独立文件。这些文件称作源列表,源列表里存放着一条条称作源的地址信息,Ubuntu系统根据地址信息找到对应的源服务端上可供下载的软件,然后下载并安装。
总之在Ubuntu中,源是指可以获取软件的地址。安装ROS2之前添加源的目的是告诉Ubuntu系统在哪里下载ROS2。ROS2官方提供的添加源的终端操作步骤如下,打开终端,输入以下指令:
sudo apt install software-properties-common # 安装添加源的工具
sudo add-apt-repository universe # 添加universe源仓库
sudo apt update && sudo apt install curl gnupg lsb-release #更新软件包列表并安装curl,pnupg,lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg # 授权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 # 添加ros2 apt 存储库到源列表中
注释:
- curl是利用资源地址进行数据或者文件传输的工具。pnupg是加密文件工具。lsb-release是Linux 标准基础版本报告工具,可以帮助识别正在使用的 Linux 发行版以及它们对 Linux 标准基础的兼容性。
- echo指令用于向终端设备上输出字符串,ehco的重定向:echo " "> 文件路径,将双引号中的内容覆盖到对应的文件中。Linux tee命令用于读取标准输入的数据,并将其内容输出成文件。tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
2.3 安装
以上步骤进行完后,就可以进行安装了。打开终端,输入以下指令:
sudo apt update # 更新软件包列表
sudo apt upgrade # 将软件包升级到最新版本
sudo apt install ros-humble-desktop # 安装ros2的humble桌面版本
sudo apt install ros-humble-ros-base # 安装ros2 humble基础的通信库、消息包、指令工具
ROS2安装的默认目录在/opt/ros/下,根据版本的名字进行区分。我们安装的是Humble版本的ROS2,所以安装目录在/opt/ros/humble下。
2.4 设置环境变量
为了让ROS2能够找到功能包,还需要设置环境变量。打开终端,输入以下指令:
echo " source /opt/ros/humble/setup.bash" >> ~/.bashrc # 设置始终执行该脚本文件,使ros2的软件包可在所有打开的新终端中使用
注释:
- shell是命令语言解释器,终端程序执行时会自动调用shell程序,在提示符下输入的每个命令都由shell先解释然后传给Linux内核。shell有多种,bash是Ubuntu系统默认的shell,而.bash文件就是bash的脚本文件。source指令用于执行setup.bash文件。
- echo “” >> 文件路径,将双引号中的内容追加到对应的文件中。~ 是指当前用户的home目录,.bashrc是home目录下的一个shell文件,用于储存用户的个性化设置。在bash每次启动时都会加载.bashrc文件中的内容,并根据内容定制当前bash的配置和环境。
2.5 安装海龟
海龟(Turtlesim)是ROS2官方为了帮助读者理解ROS2的相关概念,由ROS2官方开发并可使用终端指令安装并操控的简易机器人。海龟能够说明ROS2在最基本的层面上做了什么,让读者知道如何处理一个真实的机器人或机器人模拟。在本教程的概念篇,读者将通过操作海龟理解到ROS2的设计理念及相关术语。
安装海龟。打开终端,输入以下指令:
sudo apt update # 更新软件包列表
sudo apt install ros-humble-turtlesim # 安装海龟功能包
检查是否成功安装:
ros2 pkg executables turtlesim # 查看海龟功能包的可执行文件
如果出现了以下可执行文件,则说明安装成功:
turtlesim draw_square
turtlesim mimic
turtlesim turtle_teleop_key
turtlesim turtlesim_node
(可选项)本文使用xfce4作为可视化窗口显示,可参考博文《windows下使用WSL2+Xfce图形界面》,所以需先执行
startxfce4
打开一个新终端,运行海龟:
ros2 run turtlesim turtlesim_node
此时显示器会弹出模拟器窗口,中间有一只随机的海龟。再打开一个新的终端,运行海龟控制器:
ros2 run turtlesim turtle_teleop_key
按照终端的提示,使用键盘上的箭头键来控制弹出窗口的海龟, 海龟将可以在屏幕上平移和旋转。到这里,已经成功安装了海龟机器人并对它实现了简单的操控。
注释:Ctrl+C中断进程,返回到终端界面。
3.参考文章
https://sipeiliu.gitee.io/blog/#/ros2book/ros2book
https://editor.csdn.net/md/?articleId=130037442