ROS

從節點通訊到 Nav2/MoveIt2/感知整合的完整 ROS2 課程,Ubuntu 26.04 + ROS2 Lyrical Luth。

建議學習路徑

第 0 章:課程總覽

  1. 1這套課程在教什麼、不教什麼

第 1 章:ROS2 基礎與環境建置

  1. 1什麼是 ROS2?為何要有 ROS2
  2. 2安裝與環境設置
  3. 3工作空間與套件結構
  4. 4colcon build 與依賴管理

第 2 章:核心通訊機制

  1. 1節點(Node)概念
  2. 2主題(Topic)與 Pub/Sub
  3. 3服務(Service)
  4. 4動作(Action)
  5. 5參數系統(Parameter)

第 3 章:開發工具與除錯

  1. 1rqt 與 rqt_graph
  2. 2ros2 CLI 指令大全
  3. 3rosbag2:紀錄與重播
  4. 4launch 檔案設計

第 4 章:機器人建模與座標系統

  1. 1URDF 基礎:描述機器人的外型與結構
  2. 2xacro:讓 URDF 可以參數化與重複利用
  3. 3TF2:座標轉換系統
  4. 4RViz2 基礎:機器人的視覺化除錯工具

第 5 章:模擬環境

  1. 1Gazebo 基礎:啟動模擬世界與物理引擎概念
  2. 2把機器人模型匯入 Gazebo
  3. 3Gazebo 感測器模擬

第 6 章:導航(Nav2)── 支線 A

  1. 1Nav2 導航系統總覽
  2. 2SLAM Toolbox 建圖基礎
  3. 3Nav2 代價地圖與路徑規劃
  4. 4Nav2 行為樹

第 7 章:機械手臂與操作(MoveIt2)── 支線 B

  1. 1MoveIt2 總覽:機械手臂的運動規劃框架
  2. 2MoveIt2 逆向運動學與路徑規劃
  3. 3MoveIt2 抓取與夾爪控制

第 8 章:感知與 AI 整合 ── 支線 C

  1. 1影像處理:image_transport 與 cv_bridge
  2. 2點雲處理:PCL 基礎
  3. 3ROS2 整合 YOLO 物體偵測

第 9 章:系統設計與最佳實踐

  1. 1Lifecycle Node:撰寫自己的生命週期節點
  2. 2QoS 深入:Deadline 與 Liveliness
  3. 3ROS2 測試框架
  4. 4多機器人系統設計

第 10 章:部署與進階主題

  1. 1用 Docker 部署 ROS2 系統
  2. 2micro-ROS 與即時系統
  3. 3SROS2:ROS2 安全機制
  4. 4從模擬到實機:Sim-to-Real 部署

收尾專案

  1. 1收尾專案:打造一台自主導航機器人

全部文章

動作(Action)

處理長時間任務的通訊模式:goal/feedback/result 的完整生命週期、goal handle 狀態機,以及跟 Service 的取捨時機。

閱讀文章

收尾專案:打造一台自主導航機器人

把整套課程學到的技術(模型、模擬、導航、感知)串成一個完整專案,用物體偵測觸發自主移動任務,並附上系統整合順序與整合階段常見的除錯策略。

閱讀文章

colcon build 與依賴管理

colcon build 常用參數、rosdep 依賴安裝,以及讓每次編譯更快的增量編譯技巧。

閱讀文章

這套課程在教什麼、不教什麼

ROS2 完整課程的學習地圖:先備知識、章節安排,以及跟其他資源的差異定位。

閱讀文章

Gazebo 基礎:啟動模擬世界與物理引擎概念

Gazebo 與 ROS2 之間透過 ros_gz_bridge 溝通的架構、SDF 世界檔案的基本結構,以及物理引擎的即時因子與常見的效能排查。

閱讀文章

把機器人模型匯入 Gazebo

用 xacro 產生的 URDF 搭配 Gazebo 專用外掛,把機器人模型 spawn 進模擬世界,並用 ros_gz_bridge 打通關節控制與狀態回報的雙向資料流。

閱讀文章

Gazebo 感測器模擬

在 URDF 裡加上雷射雷達與相機的 Gazebo 感測器插件、透過橋接取得模擬資料,以及噪聲模型與更新頻率對下游演算法測試的實際影響。

閱讀文章

影像處理:image_transport 與 cv_bridge

sensor_msgs/Image 與 OpenCV 影像格式之間的轉換、image_transport 的壓縮傳輸機制,以及顏色格式不一致導致的常見顯示異常。

閱讀文章

launch 檔案設計

用 Python launch 系統一次啟動多個節點、注入參數與 remapping,並用 DeclareLaunchArgument 讓 launch 檔案可以重複利用於不同場景。

閱讀文章

Lifecycle Node:撰寫自己的生命週期節點

從零實作一個 rclpy LifecycleNode,理解 configure/activate/deactivate/cleanup 各個轉換回呼該做什麼,以及轉換失敗時系統會如何反應。

閱讀文章

micro-ROS 與即時系統

micro-ROS 如何讓資源受限的微控制器參與 ROS2 通訊、micro-ROS Agent 橋接架構,以及即時性需求跟一般 ROS2 節點設計取捨的差異。

閱讀文章

MoveIt2 抓取與夾爪控制

夾爪的獨立規劃群組設定、Pick 動作的接近-抓取-撤離三階段序列,以及 attached object 機制如何讓規劃器在抓取後正確處理物體碰撞。

閱讀文章

MoveIt2 逆向運動學與路徑規劃

用末端執行器姿態或關節角度設定規劃目標、OMPL 取樣式規劃器的運作邏輯,以及規劃時間過長或軌跡不自然時的參數調校方向。

閱讀文章

MoveIt2 總覽:機械手臂的運動規劃框架

MoveIt2 的核心元件(Planning Scene、Move Group、規劃器插件)如何協同運作,以及 move_group 節點的參數載入流程與常見的啟動失敗排查。

閱讀文章

多機器人系統設計

用命名空間與 TF prefix 隔離多台機器人的主題與座標系,ROS_DOMAIN_ID 的網路層隔離機制,以及跨機器人共享資訊時的常見陷阱。

閱讀文章

Nav2 行為樹

行為樹的節點類型與執行邏輯、Nav2 預設行為樹的實際運作流程,以及如何客製化行為樹加入自訂的復原行為。

閱讀文章

Nav2 代價地圖與路徑規劃

global costmap 與 local costmap 的分工、常用的 layer 插件如何疊加成最終代價地圖,以及規劃器找不到路徑時的排查順序。

閱讀文章

Nav2 導航系統總覽

Nav2 的整體架構、各個伺服器如何透過生命週期節點被統一管理,以及 map、odom、base_link 三層座標系各自的職責分工。

閱讀文章

節點(Node)概念

深入 rclpy 的 Node 類別、executor 執行模型、callback group 併發控制,以及節點在 DDS 底層如何被發現。

閱讀文章

參數系統(Parameter)

動態參數宣告與型別限制、用 add_on_set_parameters_callback 攔截並驗證變更、以及用 .yaml 檔案批次載入參數的實務作法。

閱讀文章

點雲處理:PCL 基礎

sensor_msgs/PointCloud2 的資料結構、PCL 的體素降採樣與濾波流程,以及點雲資料量過大導致效能問題時的排查方向。

閱讀文章

QoS 深入:Deadline 與 Liveliness

超越第 2.2 節基礎三維度,深入 Deadline、Liveliness、Lifespan 這幾個較少用但在正式系統設計時關鍵的 QoS 政策,以及怎麼用內建 QoS 事件回呼偵測違規。

閱讀文章

ros2 CLI 指令大全

整理 20 個日常開發最常用的 ros2 CLI 指令,依節點、主題、服務、動作、參數分類,每個都附上實際會看到的輸出範例。

閱讀文章

用 Docker 部署 ROS2 系統

ROS2 專案的 Dockerfile 分層策略、多階段建置縮小映像檔體積,以及容器間 DDS 通訊需要注意的網路模式設定。

閱讀文章

安裝與環境設置

在 Ubuntu 26.04 上安裝 ROS2 Lyrical Luth 的完整步驟,包含環境變數設定與常見安裝錯誤排解。

閱讀文章

ROS2 測試框架

用 launch_testing 做多節點整合測試、pytest 搭配 rclpy 做單一節點的單元測試,以及測試裡常見的非同步時序陷阱。

閱讀文章

ROS2 整合 YOLO 物體偵測

把 YOLO 模型包裝成 ROS2 節點的標準模式、推論延遲與影像佇列堆積的處理方式,以及偵測結果如何轉換成下游模組可用的座標資訊。

閱讀文章

rosbag2:紀錄與重播

rosbag2 的儲存格式與 metadata 結構、如何只錄特定主題並依大小切分檔案,以及重播時常被忽略的 QoS 與時間軸細節。

閱讀文章

rqt 與 rqt_graph

rqt 外掛架構的運作原理、怎麼讀懂 rqt_graph 畫出的節點關係圖,以及幾個日常除錯最常用的外掛。

閱讀文章

RViz2 基礎:機器人的視覺化除錯工具

RViz2 的 Fixed Frame 與 Display 機制、如何載入機器人模型與感測器資料,以及畫面空白或模型顯示錯誤時的排查順序。

閱讀文章

服務(Service)

同步請求-回應通訊模式的實作細節、Future 物件的正確用法,以及為什麼在 callback 裡同步等待 service 會讓節點死鎖。

閱讀文章

從模擬到實機:Sim-to-Real 部署

模擬與真實硬體之間常見的落差來源(感測器雜訊、致動延遲、摩擦力模型),循序漸進的實機驗證步驟,以及第一次上機測試前的安全檢查清單。

閱讀文章

SLAM Toolbox 建圖基礎

SLAM 同時定位與建圖的基本原理、用 slam_toolbox 搭配模擬光達資料建立一張地圖,並儲存供 Nav2 後續定位使用。

閱讀文章

SROS2:ROS2 安全機制

SROS2 基於 DDS-Security 的身分驗證與加密機制、用 sros2 工具產生金鑰與存取控制原則,以及安全機制啟用後常見的連線失敗排查。

閱讀文章

TF2:座標轉換系統

TF2 如何用一棵樹追蹤座標系之間的關係、static 與動態 broadcaster 的差異,以及 lookupTransform 最常見的例外狀況與排查方式。

閱讀文章

主題(Topic)與 Pub/Sub

深入非同步發布訂閱模式的 QoS 設定細節(Reliability、Durability、History),以及如何建立自訂 message 型別。

閱讀文章

URDF 基礎:描述機器人的外型與結構

URDF 的 link/joint 結構、visual/collision/inertial 三種幾何描述的差異,以及機器人模型載入失敗時最常見的排查步驟。

閱讀文章

什麼是 ROS2?為何要有 ROS2

從 DDS 架構、去中心化通訊到即時系統支援,說明 ROS2 相較 ROS1 的核心改變,以及為什麼整個產業都在往 ROS2 遷移。

閱讀文章

工作空間與套件結構

認識 colcon workspace 的資料夾結構、package.xml 的角色,以及 Python 與 C++ 套件的差異。

閱讀文章

xacro:讓 URDF 可以參數化與重複利用

用 xacro 的巨集、屬性與檔案引用機制,解決手寫 URDF 在重複結構與尺寸調整上的維護問題。

閱讀文章