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

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.”