Wiki
完整機械人與進階實例
約 3 分鐘閱讀
本文由簡體中文內容確定性轉換,並受版本化術語表保護。
從單執行器擴展為完整機械人時,保留接口契約,顯式管理每個設備的映射和有效性。
1.示例 1:多關節映射
joint1 → 设备 A → 方向、零点、范围 A
joint2 → 设备 B → 方向、零点、范围 B
不能把先收到的幀當作第一個關節。通信快照應保留設備身份、時間和故障狀態;部分設備過期時,要按整機策略決定是否允許繼續控制。
整機一次收發更適合統一 System;獨立執行器則結合 Actuator 的生命週期與故障邊界組織。
2.示例 2:真實差速底盤
沿用輪子 velocity 命令與 position/velocity 反饋,統一轉換到輸出輪軸單位。先分別校驗方向,再驗證同號目標是否前進,隨後標定輪半徑與有效輪距。
open_loop=false 表示里程計使用反饋,但仍可能因輪胎、接觸和打滑漂移。定位融合屬於後續系統集成,不能僅憑 odom Topic 存在就認定完成定位。
3.Jazzy 進階實例地圖
| 實例 | 閲讀目標 |
|---|---|
| example_4、5 | 集成與外部傳感器 |
| example_6、14 | 獨立執行器與附加狀態 |
| example_7 | 六自由度工程組織 |
| example_8 | 傳動與電機側、關節側變量 |
| example_10 | GPIO 接口 |
| example_12 | 控制器串聯和 reference 接口 |
| example_13、15 | 多機械人、namespace 和多管理器 |
| example_16 | 差速底盤與串聯控制 |
| example_17 | 硬件狀態與診斷髮布 |
基礎章節只選擇構建部分實例。進階實例需按固定提交的實際目錄和説明,另行安裝依賴、構建和驗證。不存在於所用提交的實例,應先核對版本,不能直接混入其它分支文件。
4.示例 3:按需構建
以傳動實例為例:
source /opt/ros/jazzy/setup.bash
cd ~/ros2_control_jazzy_demos_ws
rosdep install --from-paths src --ignore-src -r -y --rosdistro jazzy
colcon build --symlink-install --packages-up-to ros2_control_demo_example_8 \
--cmake-args -DBUILD_TESTING=OFF
source install/setup.bash
ls $(ros2 pkg prefix ros2_control_demo_example_8)/share/ros2_control_demo_example_8/launch
再按實際文件名運行,先查看 --show-args。閲讀一個實例時記錄“增加了什麼接口、組件或管理邊界”,然後再決定怎樣引入自己的工程。
4.1.框架異步組件與通信線程
框架異步 read/write 或不同更新頻率,和 Asio 線程處理字節流不是同一功能。前者調度組件,後者完成協議與設備 IO;兩者仍要解決快照、時效和資源生命週期。
4.2.診斷與控制循環
get_node 等擴展能力應以固定源碼版本為準。低頻狀態發佈放在非實時回調中,不能在每輪 read 中構造大量字符串並無限制發佈。
官方入口:Jazzy demos。
返回 Jazzy 總覽 · 上一篇:單執行器實物適配 · 下一篇:綜合工程與系統排錯