ROS
從節點通訊到 Nav2/MoveIt2/感知整合的完整 ROS2 課程,Ubuntu 26.04 + ROS2 Lyrical Luth。
建議學習路徑
第 0 章:課程總覽
第 1 章:ROS2 基礎與環境建置
第 2 章:核心通訊機制
第 3 章:開發工具與除錯
第 4 章:機器人建模與座標系統
第 5 章:模擬環境
第 6 章:導航(Nav2)── 支線 A
第 7 章:機械手臂與操作(MoveIt2)── 支線 B
第 8 章:感知與 AI 整合 ── 支線 C
第 9 章:系統設計與最佳實踐
第 10 章:部署與進階主題
收尾專案
全部文章
動作(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 在重複結構與尺寸調整上的維護問題。
閱讀文章