跳至主要内容

ROS 2

研華 Robotic Suite 整合了 ROS 2 環境與常用工具,讓你登入裝置或 Container 後,就能立即開始編譯、執行與除錯機器人應用程式。本章提供一套以實作為主的 ROS 2 學習路徑,但它不能取代 ROS 2 官方文件;API、Message 定義以及各 ROS 2 發行版本(Distribution)的特定資訊,仍應以官方文件為準。

你可以把這一頁當作學習地圖。每一個連結頁面各自負責一個主題,提供可直接操作的指令,並在內容最後引導到下一個合適的學習步驟。

ros-overview

為什麼重要​

本文件網站後續的內容,包括 Robotics Fundamentals、Mobility 與 Manipulation,都預設你已經具備基本的 ROS 2 操作能力,例如載入 ROS 2 環境、讀取 Topic、呼叫 Service,以及理解 ROS 2 computation graph。

本章會先建立這些基礎,讓後續以應用為主的章節能專注在機器人相關概念,而不需要重複說明 ROS 2 的基本操作。

學習地圖​

以下頁面依照循序漸進的方式排列,每一篇都建立在前一篇的基礎上。如果你已經熟悉 ROS 2,也可以直接跳到需要的主題。

1. ROS 2 基礎概念 -> Node、Topic、Service、Action、Parameter 是什麼
2. CLI 基礎操作 -> 載入環境 + 使用 ros2 指令探索系統
3. Workspace 與 Package -> colcon workspace、建立 package、編譯與載入環境
4. Publisher/Subscriber -> 建立第一組可實際運作的 Python Node
5. Service 與 Action -> Request/Response 與長時間執行的 Goal
6. Parameter 與 Launch -> 不修改程式碼也能調整 Node 設定
7. TF2 -> 座標 Frame 與 Transform
8. Rosbag -> 記錄與回放 ROS 2 資料
9. Troubleshooting -> 系統化診斷 ROS 2 問題

Core Concepts​

頁面你將學到
ROS 2 基礎概念Node、Topic、Service、Action、Parameter、Interface 與 computation graph,以及各種通訊方式適合使用的情境
CLI 基礎操作正確載入 ROS 2 環境,並使用 ros2 子指令探索與檢查正在執行的系統
Workspace 與 Package建立 colcon workspace、建立 package、編譯並載入編譯結果
Publisher/Subscriber從零建立、執行並除錯一組最精簡的 Python Publisher 與 Subscriber
Service 與 ActionTopic、Service 與 Action 的概念差異,以及如何透過 CLI 操作已安裝的 Demo Interface
Parameter 與 Launch使用 Parameter、YAML 與 Launch File 將設定從程式碼中抽離,並套用到前面的 Pub/Sub 範例
TF2座標 Frame、Static / Dynamic Transform,以及檢查 Transform 的工具
Rosbag安全地記錄、檢查與回放 ROS 2 資料,包括 simulated time 與 TF
Troubleshooting一套系統化檢查流程,用來處理常見的「看起來應該能運作,但實際上沒有」的問題

實作步驟​

如果你剛開始接觸 ROS 2,建議依照以下順序學習:

  1. 先閱讀 ROS 2 基礎概念,在開始輸入指令前先熟悉基本術語。
  2. 依照 CLI 基礎操作 確認 ROS 2 環境已正確載入。
  3. 依照 Workspace 與 Package 建立後續教學會使用的 workspace。
  4. 建立並執行 Publisher/Subscriber 範例。
  5. 在相同的 workspace 與 package 中,繼續完成 Service 與 Action 以及 Parameter 與 Launch。
  6. 在開始 Robotics Fundamentals 前,建議先閱讀 TF2 與 Rosbag,因為 Mobility 與 Manipulation 都大量依賴 Transform 與錄製資料。
  7. 建議將 Troubleshooting 加入書籤,之後遇到問題時會經常用到。

其他工具​

以下工具可協助你檢查、視覺化與除錯 ROS 2 系統:

  • RViz2 — 以 3D 方式顯示 Robot Model、Sensor Data 與 TF
  • rqt_graph — 以圖形方式檢查 Node 與 Topic 的連線關係
  • rqt_console — 查看並篩選 ROS 2 Log Message

機器人建模與模擬​

熟悉上述 ROS 2 基礎後,可以繼續學習:

  • URDF Robot Model — 描述機器人的 Link、Joint、Geometry 與 Kinematic Structure
  • Gazebo — 模擬 Robot Model 與 ROS 2 Interface

預期成果​

完成這套學習路徑後,你應該能夠:

  • 說明 Node、Topic、Service、Action 與 Parameter 的差異,並根據任務選擇適合的機制。
  • 載入 ROS 2 環境,並在不先閱讀原始碼的情況下,使用 ros2 CLI 工具檢查正在執行的系統。
  • 建立、編譯並執行自己的 ROS 2 package。
  • 從零建立一組最基本的 Python Publisher 與 Subscriber。
  • 從命令列呼叫 Service 並送出 Action Goal。
  • 使用 Parameter 與 Launch File 設定 Node,而不是將設定值寫死在程式碼中。
  • 讀懂 TF Tree,並判斷 Transform 是 Static 還是 Dynamic。
  • 記錄並安全地回放 Rosbag,包括 simulated time。
  • 系統發生問題時,依照 Troubleshooting 流程逐步檢查,而不是靠猜測找問題。

常用指令​

# 確認 ROS 2 發行版本,並確認環境已載入
printenv ROS_DISTRO

# 列出目前 ROS 2 graph 中正在執行的項目
ros2 node list
ros2 topic list
ros2 service list
ros2 action list

常見問題​

如果你剛開始接觸 ROS 2,不確定目前遇到的問題屬於哪一類,可以直接前往 Troubleshooting。該頁整理了常見問題,例如 Topic 消失、Type 不一致、QoS、Domain ID 衝突、DDS Discovery、Container、Timestamp、TF 與權限問題,並提供對應的診斷指令。

重點整理​

  • 本章提供後續教學會預設你已具備的實用 ROS 2 基礎能力。
  • 本章是 ROS 2 官方文件的補充,而不是替代品。
  • 各頁面依照學習路徑排序,但每一頁也可以獨立作為參考資料。
  • ros2_control 與基於 MoveIt 的 Manipulation 會在需要的章節中另外介紹;它們建立在本章的 ROS 2 基礎之上,但不屬於這些核心基礎內容本身。

下一步​

接著前往 ROS 2 基礎概念。如果你已經熟悉這些術語,也可以直接跳到 CLI 基礎操作。