5.1.4 预设动作控制

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

预设动作控制服务

服务名称

数据类型

描述

/aimdk_5Fmsgs/srv/SetMcPresetMotion

SetMcPresetMotion

执行预设动作

  • 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联合使用映射具体动作,目前提供如下组合供预设动作控制:

    动作名称

    motion

    area

    右手挥手

    1002

    2

    左手挥手

    1002

    1

    右手握手

    1003

    2

    左手握手

    1003

    1

    右手举手

    1001

    2

    左手举手

    1001

    1

    右手飞吻

    1004

    2

    左手飞吻

    1004

    1

    鼓掌

    3017

    11

    右手敬礼

    1013

    2

    左手敬礼

    1013

    1

    双手比心

    1007

    3

    右手比心

    1007

    2

    左手比心

    1007

    1

    拥抱

    3008

    11

    加油

    3011

    11

    双手平举

    1010

    3

    右手平举

    1010

    2

    左手平举

    1010

    1

    拜拜

    3031

    11

    动感光波

    3007

    11

    右手击掌

    1008

    2

    左手击掌

    1008

    1

    双手打叉

    3009

    11

    胸前右手挥手

    1011

    2

    胸前左手挥手

    1011

    1

    鞠躬

    3001

    11

    挠头

    3024

    11

    抓屁股

    3025

    11

    • 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判断请求成功与否

编程示例

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

安全注意事项

警告

动作执行限制

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

备注

最佳实践

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

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