ROS2开发环境入门:Ubuntu22.04装Humble+colcon建包跑通

代码杰哥机械臂 2026-10-04 22:59:10 6阅读 举报

玩DIY机器人,从Arduino裸机跨到ROS2是很多人绕不开的一道坎。ROS2中文全称是"机器人操作系统",听起来唬人,其实本质是一套让摄像头、电机、底盘、导航这些模块互相"说话"的通信框架。而拦在大多数人面前的第一关,不是写代码,是环境装不起来。这篇把从零装好Humble、跑通第一个节点的完整路径和踩坑点一次说清。

先搞清楚ROS2到底是干嘛的

ROS2不是传统意义上的操作系统,它是跑在Linux上的一套分布式通信框架。电机、底盘、摄像头、导航各自是一个"节点",节点之间用"话题"传数据、用"服务"发请求,模块自由拆装,代码就能复用。当前最适合入门的是Humble版本(长期支持),搭配Ubuntu 22.04最稳,教程资料也多。

装之前的环境准备

Ubuntu 22.04先更新系统到最新。装的时候有两个高频坑要先避:一是没开启Universe软件源,会报"Unable to locate package ros-humble-desktop";二是系统正自动更新把apt锁住,报"Could not get lock",等几分钟或重启再试。建议直接装完整的 ros-humble-desktop,省得后面缺功能包。

三步装好Humble

第一步,把ROS2官方软件源和密钥加进系统,docs.ros.org上有标准命令,照抄即可。第二步,sudo apt update刷新,然后 sudo apt install -y ros-humble-desktop。第三步,source /opt/ros/humble/setup.bash,再敲 ros2 --version,看到"ROS 2 Humble Hawksbill"就成了。

这里有个新人99%会忘的点:source只对当前终端生效。必须把 source /opt/ros/humble/setup.bash 写进 ~/.bashrc,否则一重开终端,ros2 又要报 command not found。

让第一个节点跑起来

开两个终端,记得都先source。(编号下同)终端一跑 ros2 run demo_nodes_cpp talker,终端二跑 ros2 run demo_nodes_py listener。看到talker持续发、listener持续收,就说明整个通信链路已经打通。再用 ros2 node list、ros2 topic list,能看到当前活跃的节点和话题,就能验证通信一切正常。

用colcon建自己的功能包

动手写代码之前,先建工作空间:mkdir -p ~/ros2_ws/src,进入src后 ros2 pkg create --build-type ament_python 包名 新建功能包。回到 ~/ros2_ws 执行 colcon build 编译,source install/setup.bash 后,就能在自己的包目录里写节点代码了。

特别提醒:在树莓派这类单板机上编译,内存不够是常事,colcon build直接崩。先建一个2GB的swapfile(sudo fallocate + mkswap + swapon),把swap顶上,否则打包必翻车。

常见坑一次排掉

报"ros2: command not found",九成是没source或没写进bashrc;报"No module named 'rclpy'",是运行Python脚本前没先source环境。多台ROS2设备在同一个网络里,记得设不同的 ROS_DOMAIN_ID,不然设备和电脑会串台。图形界面(rviz2、turtlesim)打不开,多半是WSL或虚拟机没配显示,WSL2用 export DISPLAY 指到nameserver就能解决。

总结

ROS2上手就三件核心事:装对版本(Humble+Ubuntu 22.04)、每次记得source、用colcon建工作空间。把第一对talker/listener跑通,再上手TurtleBot3或自己攒的小车,底层逻辑一下就通了。别被"机器人操作系统"的名字劝退,它本质上就是一套帮不同模块好好沟通的框架,装起来一次,能省后面无数麻烦。

版权声明:
作者:代码杰哥
链接:https://www.aiddithome.com/p/1b2015ce66d822.html
来源:机械臂
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以点击 “举报”。


登录 后发表评论
5条评论
AI摸鱼大王
1楼 · 6小时前

收藏了,正准备把手上的esp32小车升级成ROS2,这篇正好把装环境的坑提前告诉我,省得走弯路。

硅谷子
2楼 · 6小时前

source不进bashrc这个坑我踩了两天,装完ros2能跑,重开终端就command not found,百度半天才反应过来。写进bashrc世界清净了。

诸葛量
3楼 · 6小时前

树莓派上colcon build直接OOM这个太真实了,我第一次没建swap,编译到一半崩掉,人麻了。后来fstab挂了个2G swapfile,稳了。

熵熵
4楼 · 6小时前

ros2 domain id串台这个真的要注意,我在宿舍两台设备同一个网络,节点互相收不到消息还以为装错了,结果是domain没分开。

算法老K
5楼 · 6小时前

talker/listener跑通那一刻,才懂ROS2本质就是一套让模块说话的框架。这篇文章把环境这块讲透了,后面再学导航、遥控就顺畅多了。