其实是从去年的一个机缘巧合才开始了解到ROS,但也仅限于此了(看了古月居的入门21讲),今年买了几本关于ROS相关的书籍,比如《精通ROS机器人编程 Lentin Joseph&Jonathan Cacace》、《ROS 2机器人编程实战-基于现代C++和Python 3 徐海望&高佳丽》,头一本主要讲的是ROS 1,里面的代码运行在ubuntu20.04上(noetic)还是需要修改一下才能正常运行,有些内容即使修改了运行的结果也与书本描述的不一致(个人水平有限),不过借此(试错、修改)过程也熟悉了ROS 1的一些基本内容,后一本讲的是ROS 2,作者写的很细,但需要一定的门槛(我暂时放下,机缘成熟之时再启动)。
上述主要是我的ROS前期探秘之旅,无甚特别大的感触和收获,内心不免有些失落,就此决定从ROS 2小白开始边学边练(ROS 2未来应该是主流了,毕竟优化了很多内容),以期能有个里程式的大突破,后面的内容主要是围绕官方文档手册的内容和节奏来进行练习和记录(灵魂翻译 + 问题记录 + 解决方法等),方便监督自己走下去。
废话不多说,我们就从昨天(20240325)刚发布的iron版本走起吧,Let's Go!!
环境
Ubuntu 22.04(amd64) + ROS 2 Iron Irwini(二进制安装)
区域设置(编码设置)
通过下面的命令检查设置编码,使得系统环境支持UTF-8编码(如果系统支持则下面非必须)。
$locale # check for UTF-8
$sudo apt update && sudo apt install locales
$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 # verify settings
使能必要的软件仓库
确保Ubuntu通用仓库启用
$sudo apt install software-properties-common
$sudo add-apt-repository universe
添加ROS 2 GPG key(apt)
$sudo apt update && sudo apt install curl -y
$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 $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
安装开发工具(可选)
$sudo apt update && sudo apt install ros-dev-tools
安装ROS 2
更新源
$sudo apt update
更新系统(可选)
$sudo apt upgrade
桌面版安装(2G左右大小,包含ROS/RVIZ/例子/教程)
$sudo apt install ros-iron-desktop
ROS-Base安装(包含通信库/消息包/命令行工具,无图形界面工具)
$sudo apt install ros-iron-ros-base
安装额外的RMW实现(中间件,可选,具体参考源文档链接)
此处省略。
通过上面的步骤后ROS 2会被默认安装到/opt/ros路径下,如图所示,
测试ROS 2
设置环境变量(每个新打开的终端窗口必须都得来一遍)
# Replace ".bash" with your shell if you're not using bash
# Possible values are: setup.bash, setup.sh, setup.zsh
$source /opt/ros/iron/setup.bash
测试例子
启动talker
$source /opt/ros/iron/setup.bash
$ros2 run demo_nodes_cpp talker
启动listener
$source /opt/ros/iron/setup.bash
$ros2 run demo_nodes_cpp listener
效果如下(CPP&PY节点)。
使用ROS 1桥(可选)
利用ROS 1桥可以连接从ROS 1到ROS 2的主题,反之亦然。具体使用方法请参考官方文档,此处略。
卸载ROS 2
当由于各种原因需要卸载ROS 2时(比如要切换到源码方式安装),执行下面语句即可,
$sudo apt remove ~nros-iron-* && sudo apt autoremove
卸载软件库
送佛送到西,卸载卸到底。
sudo rm /etc/apt/sources.list.d/ros2.list
sudo apt update
sudo apt autoremove
# Consider upgrading for packages previously shadowed.
$sudo apt upgrade
本篇完。