跳到正文

Wiki

Jazzy版本

約 9 分鐘閱讀

本文由簡體中文內容確定性轉換,並受版本化術語表保護。

本教程面向 Ubuntu 24.04 和 ROS 2 Jazzy。通過完整實例、運行現象、執行順序和源碼閲讀,學習硬件接口、控制器、物理仿真與設備通信。

1.學習路線

运行官方 RRBot
  → 自己创建双关节学习工程
  → GenericSystem 与自编模拟硬件
  → 接口、生命周期、控制周期与轨迹
  → Harmonic 机械臂与差速底盘
  → 自编控制器与管理器源码
  → Asio 虚拟串口与模拟下位机
  → 根据实际设备完成实物适配

工作區從創建目錄、功能包和文件開始,隨着實踐逐步完善。前半部分不需要真實機械人;實物階段按具體設備協議實現,不把模擬協議直接當作設備驅動。

2.環境與寫法約定

普通用户使用 Ubuntu Bash 終端,系統安裝使用 sudo,工作區構建和程序運行不提權。~ 是當前用户主目錄。每個新終端 source 系統 Jazzy 和當前使用的一個工作區。

代碼以 C++17 為基礎,自編回調優先用 std::bind,官方源碼保留原寫法。每個例子講清目標、文件位置、必要完整代碼、編譯運行、預期現象、關鍵函數及常見問題。

仿真統一採用 Gazebo Harmonic 與 gz_ros2_control。圖形桌面中可運行 RViz 和 Gazebo 窗口,無界面方式可通過接口、Topic、時鐘和世界位姿檢查後台鏈路。

3.章節目錄

  1. 環境準備與源碼地圖
  2. ros2_control整體工作過程
  3. 運行第一個RRBot實例
  4. 從零創建學習工作區
  5. URDF與控制接口
  6. YAML與spawner啓動過程
  7. 從零編寫模擬硬件插件
  8. 狀態接口與命令接口源碼
  9. 硬件與控制器生命週期
  10. read-update-write控制週期
  11. 狀態廣播與機械人顯示
  12. 命令轉發與控制模式
  13. Joint-Trajectory-Controller
  14. Harmonic機械臂物理仿真
  15. DiffBot與差速底盤控制
  16. Harmonic差速底盤仿真
  17. 多接口與硬件類型
  18. 從零編寫控制器
  19. 管理器與資源管理源碼
  20. 實時循環與異步通信
  21. 虛擬串口與模擬下位機
  22. 單執行器實物適配
  23. 完整機械人與進階實例
  24. 綜合工程與系統排錯

4.三個目錄分別做什麼

路徑 用途
~/ros2_control_jazzy_demos_ws 固定提交的官方實例
~/ros2_control_jazzy_ws 自己逐步編寫的學習工程
~/ros2_control_jazzy_reference 框架與控制器源碼閲讀

不要在同一終端疊加不相關的機械人工作區。同一 ROS domain 一次只運行一個本教程機械人,避免管理器和狀態發佈者相互干擾。

5.源碼參考版本

倉庫 標籤或提交
ros2_control 4.48.1 / b7f1a5d420443c7a079f4c81e80d5e39759acf4c
ros2_controllers 4.42.1 / aacd842600a09d556b983ac3d53a0983e9ebcbb1
realtime_tools 3.13.0 / 459776c99f1f80606f7b9616496166ccaf207cf8
gz_ros2_control 1.2.20 / 89ca76ed20842377f879c711c756d444c5b7c20b
ros2_control_demos 34933be69fc76c33b5889f4d8993eb0f3a92e20f

這些版本用於對應具體源碼與配置。Jazzy 的子包會隨維護更新;類型或參數不符時,先核對實際包版本、頭文件和共享庫路徑,再檢查代碼。主線硬件插件採用框架自動創建接口及 HardwareComponentInterfaceParams 的寫法。

6.各階段驗收

階段 應觀察到什麼
環境與官方實例 包可找到,模型與控制器可啓動
自建模擬硬件 接口創建正常,反饋向目標收斂
生命週期與切換 狀態明確,命令資源按預期借用與釋放
軌跡 Action 目標接受,按容差完成或給出可解釋結果
自編控制器 合法目標生效,非法目標被拒絕
Harmonic 機械臂 模型生成、時鐘前進、關節反饋變化
Harmonic 底盤 輪子與車體運動,里程計與世界位姿可對照
虛擬串口 命令、反饋與超時鏈路可觀察
實物適配 身份、單位、方向、模式、故障與停止逐項確認

RViz 是顯示工具,教學模型不是物理動力學,反饋里程計不是世界真值。示例輸出説明現象,實際數值會受參數、執行時長和調度影響。設備專用實現需要實際硬件獨立驗收。

7.官方資料