第1章:开发环境搭建与工具链

大家好,我是你们的老朋友。今天咱们来聊聊ROS2多机器人开发的第一步——环境搭建。

说实话,我见过太多人卡在这一步。明明代码逻辑没问题,就是跑不起来。最后发现,要么是Ubuntu版本不对,要么是ROS2装错了源。嗯,这些坑我都踩过。

1.1 Ubuntu + ROS2 Humble 安装

先说说系统选择。我个人习惯用Ubuntu 22.04 LTS,搭配ROS2 Humble。为什么是Humble?因为它是目前最稳定的长期支持版本。我在项目中遇到过用最新版ROS2结果依赖库冲突的情况,折腾了两天才搞定。从那以后,我就老老实实用LTS版本了。

注意:ROS2 Humble 只支持 Ubuntu 22.04 (Jammy)。别想着在20.04上硬装,会出各种奇怪的问题。

安装步骤其实不复杂,但有几个关键点要注意。来,跟着我一步步来:

  1. 设置语言环境——确保系统支持UTF-8
  2. 添加ROS2源——别用默认源,速度慢还容易断
  3. 安装核心包——我建议装desktop版本,工具链齐全
# 1. 设置locale
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

# 2. 添加ROS2源
sudo apt install software-properties-common
sudo add-apt-repository universe
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 $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

# 3. 安装ROS2 Humble Desktop
sudo apt update
sudo apt install ros-humble-desktop

# 4. 安装开发工具
sudo apt install ros-dev-tools
小技巧:安装完成后,记得把source命令加到.bashrc里。不然每次开终端都要手动source,很烦人。
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

1.2 colcon 构建工具

说到构建工具,colcon是ROS2的标配。你可能用过catkin_make,但colcon更强大。它支持并行编译,还能处理复杂的依赖关系。

我记得第一次用colcon时,觉得它比catkin慢。后来才发现,是我没开并行编译。加上--parallel-workers参数后,速度直接翻倍。

# 安装colcon
sudo apt install python3-colcon-common-extensions

# 常用命令
colcon build                    # 构建所有包
colcon build --packages-select my_package  # 只构建指定包
colcon build --parallel-workers 4  # 4线程并行编译
核心要点:colcon的构建产物默认放在install目录。别忘了source install/setup.bash,不然找不到你编译的节点。

1.3 rqt 可视化工具

rqt是ROS2的瑞士军刀。调试时我几乎离不开它。你想想看,一个工具能看话题、看节点、看服务调用,多方便。

安装很简单:

sudo apt install ros-humble-rqt*

启动后,你会看到rqt的主界面。常用的插件有:

  • rqt_graph——可视化节点和话题的连接关系
  • rqt_topic——实时查看话题数据
  • rqt_service_caller——手动调用服务

我曾经调试一个多机器人协作系统,节点间通信总出问题。打开rqt_graph一看,原来是有个话题名字拼错了。这种问题,光看代码根本发现不了。

1.4 命令行工具

命令行工具是ROS2的基石。我建议你熟练掌握它们,因为很多时候你没法用图形界面。

ros2 node

查看节点信息:

ros2 node list              # 列出所有节点
ros2 node info /node_name   # 查看节点详情

ros2 topic

话题操作是日常最频繁的:

ros2 topic list             # 列出所有话题
ros2 topic echo /topic_name # 实时打印话题数据
ros2 topic info /topic_name # 查看话题信息
ros2 topic pub /topic_name std_msgs/msg/String "data: 'hello'"  # 手动发布话题
避坑指南:我曾经用ros2 topic pub测试一个传感器节点,结果忘记设置发布频率,消息刷屏导致系统卡死。记得加上--rate 1限制频率。

ros2 service

服务调用:

ros2 service list           # 列出所有服务
ros2 service type /service_name  # 查看服务类型
ros2 service call /service_name std_srvs/srv/Empty  # 调用服务

ros2 param

参数管理:

ros2 param list             # 列出所有参数
ros2 param get /node_name param_name  # 获取参数值
ros2 param set /node_name param_name value  # 设置参数值

1.5 验证安装

装完别急着走。先跑个demo验证一下:

# 终端1:启动talker
ros2 run demo_nodes_cpp talker

# 终端2:启动listener
ros2 run demo_nodes_py listener

如果看到talker在发"Hello World",listener在收,那就说明环境没问题了。

个人建议:把常用的ros2命令记在小本本上。我刚开始时记不住参数,每次都查文档。后来写了个cheat sheet,效率高多了。

好了,环境搭建就到这里。下一章咱们聊聊工作空间和包结构。记住,环境搭好了,后面才能跑得顺。有问题随时找我。


公众号:蓝海资料掘金营,微信deep3321