ROS2入门完全指南:从中间件原理到Ubuntu 22.04安装实战
很多人第一次听说 Robot Operating SystemROS第一反应是怎么机器人还要装个操作系统我用 Windows 跑 Python 不也能控制电机吗这个问题我几乎每年都会被问一次。实际上ROS 并不是像 Ubuntu 那样直接管硬件和文件的系统它更像一套跑在 Linux 上的中间件框架专门负责机器人里各个模块之间的通信、调度和协作。你把它理解成机器人开发界的“微信群 共享网盘 项目管理工具”也不算夸张传感器、底盘、规划算法、显示界面各干各的又能通过统一的方式把数据递来递去。这也是为什么当你真正开始做自主导航、机械臂控制或者多传感器融合时几乎绕不开 ROS。这篇文章是 ROS 入门系列的第一篇我把它定位成一张地图而不是操作说明书。我会讲清楚 ROS 为什么会出现、现在应该学 ROS1 还是 ROS2、Ubuntu 22.04 上怎么把 ROS2 Humble 环境装好、第一个话题是怎么跑通的以及仿真和真机生态里那些常被提起的东西到底有什么关系。如果你是刚接触 ROS 的学生、刚转行做机器人的工程师或者课程作业里被迫要用 ROS这篇应该能帮你把骨架搭起来。1. 先搞明白ROS到底解决什么问题1.1 机器人开发为什么会变乱假设你今天要做一个自动跟着人走的小车拆开需求一看至少要有摄像头读取画面、人脸检测、底盘电机控制、状态显示、日志记录这几件事。如果全都写在一个 main 函数里摄像头回调里塞图像处理处理完了顺手调一次电机驱动听起来没问题但一旦你要把灰色斑马线的检测换成人脸识别或者把两轮差速底盘换成四轮麦克纳姆轮整个代码结构就得大改。更麻烦的是摄像头程序往往用 C 写AI 识别那部分用 Python 写最顺手底层 MCU 可能又是 C这些不同语言、不同进程的数据要怎么互相给ROS 给出的答案是把一个大型机器人程序拆成多个“节点”Node节点之间通过标准化的消息通道通信。通信方式有话题Topic、服务Service和动作Action三种分别对应不同场景。节点内部你想用什么语言、什么框架没人管只要你把数据按照约定的格式发出来其他节点就能收到。这个设计天生适合多语言协作、多人协作和硬件平台复用——本质上它是把“一个巨大的程序”变成了“一组可以独立替换的进程”。我带过的很多项目中真正让人痛苦的往往不是算法而是“数据能不能稳定地从传感器流到算法里”。ROS 从工具层面把这条链路标准化所以大家才愿意把它当成机器人项目的地基。你可以理解为ROS 规定了一套大家都能接受的“数据交换规则”至于你在地基上面盖的是小木屋还是摩天大楼它不管。1.2 从版本选择看新手第一个误区很多新手进群第一句话就是22.04 安装什么版本 ROS答案在很长时间内都是 ROS2 Humble。Humble Hawksbill 是 Ubuntu 22.04 的 LTS 版本也是目前教程和第三方功能包覆盖最广的 ROS2 版本之一。如果你的系统是 20.04则可以选 ROS2 Foxy 或者 ROS1 的最终版本 Noetic。总之先看系统版本再决定 ROS 版本而不是倒过来。这里要特别说清楚 ROS1 和 ROS2 的关系。ROS1 时代的核心是一个叫做 master 的中心节点所有节点启动先跟 master 登记再互相建立连接。ROS2 把中心节点去掉了底层换成 DDS 标准Data Distribution Service节点之间可以直接发现对方还天然支持局域网多机通信、数据加密和服务质量 QoS。你可以简单理解为ROS2 不是换皮而是把通信层重写了一遍。因此很多 ROS1 的命令和代码不能直接搬到 ROS2 里这也是新人感觉到处都是坑的最主要原因。我的建议是如果你现在开始学直接学 ROS2。老资料里确实大量是 ROS1但 ROS1 在 20.04 之后基本已停止功能更新新项目再去抱老版本没意义。如果只是装来跟着某门网课跑那课程用什么版本你就用什么版本别在版本问题上同时和全世界作对。很多同学装好以后发现找不到教程里的命令第一反应是“我装错了”其实多半是版本差异不是环境坏了。2. Ubuntu 22.04装ROS2 Humble从官方到一键脚本2.1 环境准备选系统、换镜像、保证网络装 ROS2 最省心的底座是原生 Ubuntu 22.04而不是 Windows 下的虚拟机。虚拟机跑起来也能用但后面做 Gazebo 仿真、跑视觉算法时性能损耗会让你把“到底是不是我代码写错了”和“是不是虚拟机卡了”这两件事分不清楚。如果条件允许尽量搞一台实体机装双系统实在不行虚拟机至少给 4 核 CPU、8G 内存不然到后面每一条命令都像是在等快递。系统装好之后第一件事是更新软件源。国内访问 Ubuntu 官方源可能很慢建议改成阿里云或清华镜像。这一步和 ROS 无关但会直接影响后面 apt 安装的速度。改完源顺手把 locale 设置为 UTF-8很多 ROS 节点在中文环境下运行时会出现中文编码问题会莫名其妙地报错。可以先执行下面几条命令把基础工具补齐sudo apt update sudo apt install -y curl gnupg lsb-release software-properties-common export LANGen_US.UTF-8如果你用的是云服务器确保出方向能访问 packages.ros.org 以及 GitHub因为官方安装步骤会从 raw.githubusercontent.com 拉取密钥。网络不稳时可以多试几次或者换国内镜像源。这里没有捷径环境是否干净会直接影响你后面几天的学习节奏。2.2 官方安装步骤与一键安装脚本的取舍官方安装 ROS2 Humble 的核心步骤其实不多先添加 ROS2 的 apt 仓库和签名密钥然后一条命令安装桌面版。这里我把常用步骤整理出来sudo add-apt-repository universe sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg echo deb [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 sudo apt update sudo apt install -y ros-humble-desktop python3-colcon-common-extensions echo source /opt/ros/humble/setup.bash ~/.bashrc source ~/.bashrc其中 ros-humble-desktop 是桌面完整版包含了 rviz、rqt、demo 示例和大量常用功能包新手装这个就够了。python3-colcon-common-extensions 是编译工作空间用的工具后面自己写节点必装。第一行 add-apt-repository universe 是为了启用 Ubuntu 的 universe 软件源缺少这一步官方源里的有些依赖会找不到。如果上面步骤在拉取密钥或仓库时反复超时你也可以试试国内社区流行的“鱼香ROS一键安装”。它的交互式脚本会在终端里引导你选择 Ubuntu 版本、ROS2 版本和安装项然后把 ROS2、rosdep、一些常用工具一次装好。实测下来确实能在十几分钟内把环境搞定这也是它一直火的原因。我的态度是图省事可以先用它但至少要知道官方步骤大概是什么。因为脚本替你做的事越多你排障时越容易无从下手。另外第三方脚本毕竟来自第三方环境执行前建议把脚本内容下载下来翻一翻确认没有明显问题再执行。这不是怀疑某个人而是每个排过环境问题的人都应该有的基本动作。我见过不少人用脚本装完环境后连 /opt/ros/humble 下面到底有哪些目录都不清楚后面一报错就只能重装那比慢慢跟着官方步骤走更浪费时间。2.3 安装完成后必须做的三个验证装

相关新闻

最新新闻

日新闻

周新闻

月新闻