第1章:开发环境搭建与工具链
大家好,我是你们的老朋友。今天咱们来聊聊ROS2多机器人开发的第一步——环境搭建。
说实话,我见过太多人卡在这一步。明明代码逻辑没问题,就是跑不起来。最后发现,要么是Ubuntu版本不对,要么是ROS2装错了源。嗯,这些坑我都踩过。
1.1 Ubuntu + ROS2 Humble 安装
先说说系统选择。我个人习惯用Ubuntu 22.04 LTS,搭配ROS2 Humble。为什么是Humble?因为它是目前最稳定的长期支持版本。我在项目中遇到过用最新版ROS2结果依赖库冲突的情况,折腾了两天才搞定。从那以后,我就老老实实用LTS版本了。
安装步骤其实不复杂,但有几个关键点要注意。来,跟着我一步步来:
- 设置语言环境——确保系统支持UTF-8
- 添加ROS2源——别用默认源,速度慢还容易断
- 安装核心包——我建议装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
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线程并行编译
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在收,那就说明环境没问题了。
好了,环境搭建就到这里。下一章咱们聊聊工作空间和包结构。记住,环境搭好了,后面才能跑得顺。有问题随时找我。
公众号:蓝海资料掘金营,微信deep3321