Wiki
多接口与硬件类型
About 3 min read
Existing English translations were reused. 14 current source blocks remain in Simplified Chinese, without triggering paid translation.
多接口声明不等于设备允许所有模式同时工作;组件类型也应按通信与管理边界选择。
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差速底盘仿真 · 下一篇:从零编写控制器