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.章節目錄
- 環境準備與源碼地圖
- ros2_control整體工作過程
- 運行第一個RRBot實例
- 從零創建學習工作區
- URDF與控制接口
- YAML與spawner啓動過程
- 從零編寫模擬硬件插件
- 狀態接口與命令接口源碼
- 硬件與控制器生命週期
- read-update-write控制週期
- 狀態廣播與機械人顯示
- 命令轉發與控制模式
- Joint-Trajectory-Controller
- Harmonic機械臂物理仿真
- DiffBot與差速底盤控制
- Harmonic差速底盤仿真
- 多接口與硬件類型
- 從零編寫控制器
- 管理器與資源管理源碼
- 實時循環與異步通信
- 虛擬串口與模擬下位機
- 單執行器實物適配
- 完整機械人與進階實例
- 綜合工程與系統排錯
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 是顯示工具,教學模型不是物理動力學,反饋里程計不是世界真值。示例輸出説明現象,實際數值會受參數、執行時長和調度影響。設備專用實現需要實際硬件獨立驗收。