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 是顯示工具,教學模型不是物理動力學,反饋里程計不是世界真值。示例輸出說明現象,實際數值會受引數、執行時長和排程影響。裝置專用實現需要實際硬體獨立驗收。