Wiki
多接口與硬件類型
約 3 分鐘閱讀
本文由簡體中文內容確定性轉換,並受版本化術語表保護。
多接口聲明不等於設備允許所有模式同時工作;組件類型也應按通信與管理邊界選擇。
1.示例 1:官方多接口實例
source /opt/ros/jazzy/setup.bash
source ~/ros2_control_jazzy_demos_ws/install/setup.bash
ros2 launch ros2_control_demo_example_3 rrbot_system_multi_interface.launch.py gui:=false
在另一個同樣 source 的終端查看控制器和接口。先閲讀該提交的配置文件,記錄實際控制器名稱,再發送切換請求,不套用其它版本的截圖名稱。
2.兩階段模式切換
prepare_command_mode_switch(start_interfaces, stop_interfaces) 檢查這組切換是否可行;perform_command_mode_switch 在框架安排的執行路徑中完成切換。
位置、速度和力矩接口名字不同,仍可能受同一設備控制模式互斥約束。硬件必須明確支持的組合、停止的模式和初始目標。
3.示例 2:選擇組件類型
| 類型 | 典型通信邊界 | 閲讀實例 |
|---|---|---|
| System | 多關節共用一次通信與管理 | example_1、4 |
| Actuator | 獨立通信和生命週期的執行器 | example_6 |
| Sensor | 只提供狀態 | example_5 |
一條總線上的多個電機可以由一個 System 管理,不能只按“物理上是一台電機”判斷一定使用 Actuator。
4.閲讀和檢查
有哪些完整接口名?
哪些模式允许启动?
哪些模式必须先停止?
同组关节是否要求一致?
失败后硬件和控制器处在什么状态?
模式切換與生命週期是不同維度。設備 active 時仍可能需要選擇控制模式;控制器切換成功也應確認設備模式真實生效。
源碼:ros2_control_demos/example_3/hardware/rrbot_system_multi_interface.cpp。將切換檢查與 read/write 中實際使用的模式變量一起閲讀。
返回 Jazzy 總覽 · 上一篇:Harmonic差速底盤仿真 · 下一篇:從零編寫控制器