5.1.3 MC控制信号设置
MC控制信号设置实现了多输入源统一管理,确保机器人始终响应优先级最高的控制信号。
控制信号设置是智元机器人X2 AimDK的核心功能之一,支持多个控制源的统一管理和优先级仲裁。该功能确保机器人在面对多个控制源时能够安全、可靠地响应最高优先级的控制指令。
核心特性
多源接入
RC控制: PS5遥控手柄控制(优先级80)
VR控制: 遥操控制(优先级70)
APP控制: 移动应用控制(优先级60)
语音控制: 语音指令控制(优先级50)
…
二次开发: 自定义控制源(优先级20-100可配置)
优先级管理
动态调整:支持运行时动态调整优先级
自动仲裁:自动选择最高优先级输入源
冲突处理:同优先级时响应最先接入的源
输入源配置
优先级参考
100-80:系统级控制(紧急停止、安全模式)
79-60:高级控制(遥控器、APP)
59-40:中级控制(语音、手势)
39-20:低级控制(二次开发)
19-0:备用控制(调试、测试)
仲裁流程
仲裁机制
输入源仲裁和管理规则:
被禁用的输入源和未知输入源, 其控制指令被丢弃
从未被丢弃指令的输入源中选定最高优先级的有效输入源,只接受其控制
出现非选定的更高优先级有效输入源时,改选其作为选定输入源
选定输入源非活跃状态(timeout等)则被视为最低优先级, 将从活跃的其他有效控制源中重新选定
注意系统重启后输入源优先级状态将重置
二次开发的模块应结合以上情况, 注册其他名称 的控制源并设置优先级 (建议20-100)
系统内的既有控制输入源情况如下:
|
说明 |
优先级 |
超时阀值(ms) |
|---|---|---|---|
rc |
遥控手柄 |
80 |
1000 |
app_proxy |
移动APP端Agibot Go |
60 |
1000 |
vr |
遥操模块 |
70 |
1000 |
interaction |
智元灵犀交互模块 |
50 |
1000 |
pnc |
智元灵犀Planner模块 |
40 |
1000 |
输入源管理服务
服务名称 |
数据类型 |
描述 |
|---|---|---|
|
|
查询当前控制输入源 |
|
|
设置输入源 |
GetCurrentInputSourceros2-srv @ mc/motion/srv/GetCurrentInputSource.srv# 获取当前控制输入源 # 服务名称: /aimdk_5Fmsgs/srv/GetCurrentInputSource # 请求 CommonRequest request # 公共请求头 --- # 响应 CommonTaskResponse response # 公共任务响应, response.header.code为0表成功 McInputSource input_source # 输入源
McInputSourceros2-msg @ mc/motion/McInputSource.msgstring name # 当前选定的输入源名称, 如rc/vr/app_proxy/... int32 priority # 配置状态:优先级(0-100) int32 timeout # 配置状态:超时时间(ms)
SetMcInputSourceros2-srv @ mc/motion/srv/SetMcInputSource.srv# 服务名称: /aimdk_5Fmsgs/srv/SetMcInputSource # 请求 CommonRequest request # 公共请求头 McInputAction action # 操作类型 (ADD/MODIFY/DELETE/DISABLE/ENABLE) McInputSource input_source # 输入源 --- # 响应 CommonTaskResponse response # response.header.code 0表成功
McInputActionros2-msg @ mc/motion/McInputAction.msgint32 value # 操作类型 (1001:ADD, 1002:MODIFY, 1003:DELETE, 2001:ENABLE, 2002:DISABLE)
操作类型(值)
说明
input_source必须参数ADD(1001)
添加新输入源
name,priority,timeoutMODIFY(1002)
修改现有输入源
name,priority,timeoutDELETE(1003)
删除输入源
nameENABLE(2001)
启用输入源
nameDISABLE(2002)
禁用输入源
name
编程示例
详细的编程示例和代码说明请参考:
注意事项
重要
版本兼容性 MC控制信号设置功能仅在X2_AimDK-v0.7及之后的版本中可用,不支持0.6及之前的版本。
注意
二次开发的模块应结合系统模块情况, 注册其他名称 的控制源并设置优先级 (建议20-100)
备注
运控系统未获取任意有效输入前(如刚上电启动未操作移动, 下发速度控制量全为0), 查询当前输入源可能为空