在 Mac Apple Silicon 上安装 ROS2 Humble:绕开源码编译
Apple Silicon 上源码编译 ROS2 依赖包失败率极高,改用 Anaconda + RoboStack 的 conda 方案,用预编译包装好 ROS2 Humble。
在 Apple Silicon 上按官方文档源码编译 ROS2,依赖包失败率极高,环境还没搭好就先被编译问题劝退。
这里记录一条曲线路径:用 Anaconda 建虚拟环境,再通过 RoboStack 安装预编译的 ros-humble-desktop-full,绕开源码编译。RoboStack 把 ROS 包预先编译成 conda 包,安装时直接拉二进制,省去本地编译的整条链路。
前置条件
- Apple Silicon(本文在 M1 Pro 上验证)
- 已安装 Anaconda(未装的话先自行安装)
步骤
1. 安装 mamba
mamba 是 conda 的更快前端,依赖求解速度明显更好:
conda install mamba -c conda-forge2. 创建 ROS2 虚拟环境
conda create -n ros2 python=3.10conda activate ros2
conda config --env --add channels conda-forgeconda config --env --add channels robostack-stagingconda config --env --remove channels defaults关键在 robostack-staging:ROS 包已经预编译成 conda 包,装的就是二进制,不必再源码编译。
3. 安装 Humble 与工具链
conda install ros-humble-desktop-fullconda install compilers cmake pkg-config make ninja colcon-common-extensions catkin_tools rosdep4. 验证
先启动可视化工具:
rviz2能打开 RViz 界面即说明可视化工具链可用:

再开两个终端,分别跑官方 example(每个终端都要先 conda activate ros2):
# 终端 A:C++ 版 talkerros2 run demo_nodes_cpp talker
# 终端 B:Python 版 listenerros2 run demo_nodes_py demo_listener看到 talker 持续 Publishing、listener 持续 I heard,说明 C++ 与 Python API 都工作正常。

警告
命名有坑:从 Humble 起,Python 版可执行文件为避免与 C++ 版重名,改成了 demo_talker / demo_listener;
C++ 版仍是 demo_nodes_cpp talker / listener。直接运行 ros2 run demo_nodes_py listener 会报
No executable found。用 ros2 pkg executables demo_nodes_py 可以查看实际名称。
最后用 rqt_graph 查看节点与话题的连接关系:
rqt_graph
/talker 通过 /chatter 话题向 /listener 发送消息关键点
- 版本组合固定:Python 3.10 + ROS2 Humble。
conda config --env只作用于当前环境,不会污染 base。- 每开一个新终端都要先
conda activate ros2,否则ros2、rviz2等命令不可用。 - 这是 conda 包方案,不是官方支持的原生安装,部分实时或底层功能可能受限。
小结
| 目标 | 做法 |
|---|---|
| 避开源码编译 | RoboStack 预编译的 conda 二进制包 |
| 环境隔离 | conda create -n ros2 独立虚拟环境 |
| 完整桌面工具链 | ros-humble-desktop-full + 编译工具集 |
源码编译走不通时,conda 二进制方案是一条务实的退路:装得快、隔离干净,代价是偏离官方原生安装路径,实时性等底层能力需要另行评估。
参考
目录
评论
评论功能已就位但尚未启用:在
src/config.ts的giscus字段中填入 repo / repoId / category / categoryId(到 giscus.app 用公开 GitHub 仓库生成)后,评论框会自动出现在这里。