Skip to content

5.1.4 预设动作控制

预设动作控制用于触发并控制机器人执行一系列常见的预定义动作,如挥手、握手、举手等。该接口通过简单的调用,能迅速控制机器人执行特定的动作,适用于常见的交互场景和任务。

预设动作控制服务

服务名称数据类型描述
/aimdk_5Fmsgs/srv/SetMcPresetMotionSetMcPresetMotion执行预设动作(请先进入稳定站立模式)
  • SetMcPresetMotion ros2-srv @ mc/motion/srv/SetMcPresetMotion.srv
# 执行预设动作
# 服务名称: /aimdk_5Fmsgs/srv/SetMcPresetMotion

# 请求
RequestHeader header             # 请求头
McControlArea area               # 控制区域
McPresetMotion motion            # 预设动作
bool interrupt                   # 是否打断前一个动作
string ani_path                  # 自定义动作地址 (待开放)

---

# 响应
CommonTaskResponse response      # 任务响应

其中

* `McControlArea` ros2-msg @ mc/motion/McControlArea.msg
# 控制区域定义
int32 value                      # 区域值
* `McPresetMotion` ros2-msg @ mc/motion/McPresetMotion.msg
# 预设动作定义
int32 value                      # 动作值

注意: v0.8.0开始area原有的分区概念已经弱化, 仅和motion联合使用映射具体动作,目前提供如下组合 供预设动作控制:

动作名称motionarea说明
右手挥手10022稳定站立模式下执行
左手挥手10021同上
右手握手10032同上
左手握手10031同上
右手举手10012同上
左手举手10011同上
右手飞吻10042同上
左手飞吻10041同上
鼓掌301711同上
右手敬礼10132同上
左手敬礼10131同上
双手比心10073同上
右手比心10072同上
左手比心10071同上
拥抱300811同上
加油301111同上
双手平举10103同上
右手平举10102同上
左手平举10101同上
拜拜303111同上
动感光波300711同上
右手击掌10082同上
左手击掌10081同上
双手打叉300911同上
胸前右手挥手10112同上
胸前左手挥手10111同上
鞠躬300111同上
挠头302411同上
抓屁股302511同上
* `CommonTaskResponse` ros2-msg @ common/CommonTaskResponse.msg
# 内嵌response msg

ResponseHeader header  # 响应头
uint64 task_id  # 任务ID
CommonState state  # 状态
  * `ResponseHeader` ros2-msg @ common/ResponseHeader.msg
builtin_interfaces/Time stamp
int64 code  # (0:成功,其他-失败)

基于response.header.code判断请求成功与否

编程示例

详细的编程示例和代码说明请参考:

安全注意事项

警告

动作执行限制

  • 某些动作可能需要特定的机器人姿态,请确保机器人处于安全状态

小心

ROS的服务(service)机制在跨板通信时存在一些待优化问题, 二次开发时请参考例程添加异常处理、快速重试等保护机制

备注

最佳实践

  • 使用interrupt=true可以打断当前正在执行的动作

  • 建议根据交互场景选择合适的动作和区域

📡 Gitee 私有仓库 | 📖 Cloudflare Pages | 基于 AGIBOT X2 平台构建