本文由 AI 分析生成
Summary
A hobbyist robotics builder tried ROS 2 for an AUV (autonomous underwater vehicle) project and ultimately abandoned it in favor of a custom NATS + Protobuf message bus. The critique focuses on tight Ubuntu version coupling, painful versioning cascades, language lock-in to Python/C++, and the complexity of working with pre-built packages. The author admits limited ROS 2 expertise, but the frustration reflects a real gap between ROS 2’s design audience (research labs) and its perceived audience (the broader hobbyist/indie dev community).
一位業餘機器人開發者嘗試用 ROS 2 建構自主潛水艇,最終因 Ubuntu 版本綁定、語言鎖定及套件相容性問題放棄,改用 NATS + Protobuf 自建訊息匯流排。文章是對 ROS 2 定位誤解的縮影:ROS 2 為研究室設計,而非業餘開發者。
Key Points
- Ubuntu 鐵板一塊:ROS 2 套件直接以 Ubuntu APT 套件發布,換了硬體被迫換 Ubuntu 版本,連帶所有 ROS 2 依賴全部斷裂
- 版本名稱混亂:Jazzy、Humble、Iron 無法從名字推斷順序,且每個名稱綁定特定 Ubuntu LTS
- 語言鎖定:ROS 2 深度依賴 Python 與 C++,對 Go、Rust 等現代語言支援薄弱,社群維護的 bindings 品質不穩定
- xcolcon 建構工具複雜:不熟悉 colcon 的開發者必須重新學習一套平行建構邏輯
- 社群回應:Reddit 討論指出作者部分批評基於誤解(例如套件是可以從原始碼建構的),但也承認 onboarding 體驗確實很差
Insights
ROS 2 的設計假設是:你在一個有 IT 支援的實驗室環境,使用標準硬體,有時間學習生態系工具鏈。當使用者是想快速驗證想法的個人開發者,這些假設全都崩塌。這不是 ROS 2 的缺陷,而是 target audience 的錯配。
選擇 NATS + Protobuf 替代方案是務實的:NATS 是語言無關、輕量、支援分散式的訊息系統,跟 ROS 2 的 DDS 概念相近但部署門檻低很多。作者實際上重新實作了 ROS 2 的核心抽象,只是選了更輕的工具棧。
Connections
- Clippings-my-problems-with-ros-2 — 同一篇文章的舊版本,已有分析
- Clippings-docker-ros2-开发环境搭建指南-小强的博客 — 用 Docker 緩解 ROS 2 環境問題的實踐方案
- ros2
- robotics
- message-bus
Raw Excerpt
“This article became a bit of a hit-piece on ROS 2, but I hope it might also help some beginners, students, or other folks questioning if this is really how things should be.”