跳到主要内容
版本:V2.0.4.x

8.7 双臂关节

8.7.1 状态获取接口

1. 获取双臂关节信息

  • 说明:获取双臂关节的状态信息,其中包含关节的当前位置、速度、电流和温度,适用于天工行者全系列。

  • 控制方式:topic

  • 话题名称:/arm/status

  • 数据定义位置:bodyctrl_msgs::msg::MotorStatusMsg.msg

  • 数据格式:

    std_msgs/Header header
    MotorStatus[] status

    MotorStatus定义如下:
    uint16 name # MotorName
    float32 pos # rad
    float32 speed # rad
    float32 current # A
    float32 temperature
    uint32 error

    error 错误字段值定义如下:

    error = 33072,设备掉线
    error = 33073,关节位置超限
    error = 1,关节电机过温
    error = 2,过流
    error = 3,电压过低
    error = 4,关节 mos 过温
    error = 5,堵转
    error = 6,电压过高
    error = 7,缺相
    error = 8,编码器错误

8.7.2 控制接口

1. 位置模式

  • 说明:关节的位置控制接口,需要提供期望位置、期望速度、最大电流,适用于天工行者全系列。

  • 控制方式:topic

  • 话题名称:/arm/cmd_pos

  • 数据定义位置:bodyctrl_msgs::msg::CmdSetMotorPosition.msg

  • 数据格式:

    std_msgs/Header header
    SetMotorPosition[] cmds

    # SetMotorPosition.msg
    uint16 name # MotorName
    float32 pos # rad
    float32 spd # rad/s
    float32 cur # 电流
  • 示例命令:

    ros2 topic pub /arm/cmd_pos bodyctrl_msgs/msg/CmdSetMotorPosition "{cmds: [{name: 12, pos: 0.3, spd: 0.2, cur: 8.0 }]}"
    ros2 topic pub /arm/cmd_pos bodyctrl_msgs/msg/CmdSetMotorPosition "{cmds: [{name: 22, pos: -0.3, spd: 0.2, cur: 8.0 }]}"

2. 力位混合模式

  • 说明:关节的力位混合控制接口,需要提供期望位置、期望速度、前馈力矩、kp、kd系数,适用于天工行者全系列。

  • 控制方式:topic

  • 话题名称:/arm/cmd_ctrl

  • 数据定义位置:bodyctrl_msgs::msg::CmdMotorCtrl.msg

  • 数据格式:

    std_msgs/Header header
    MotorCtrl[] cmds

    # MotorCtrl.msg
    uint16 name
    float32 kp
    float32 kd
    float32 pos
    float32 spd
    float32 tor
  • 示例命令:

    ros2 topic pub /arm/cmd_ctrl bodyctrl_msgs/msg/CmdMotorCtrl "{cmds: [{name: 13, kp: 30.0, kd: 10.0, pos: 0.2, spd: 0.0, tor: 0.0}]}"
    ros2 topic pub /arm/cmd_ctrl bodyctrl_msgs/msg/CmdMotorCtrl "{cmds: [{name: 23, kp: 30.0, kd: 10.0, pos: 0.2, spd: 0.0, tor: 0.0}]}"

3. 速度模式

  • 说明:关节的速度控制接口,需要提供期望速度、最大电流,适用于天工行者全系列。注意这个消息一旦发布,该电机将以该速度持续转动,直到该话题收到一个spd为0.0的消息,因此需要谨慎使用。

  • 控制方式:topic

  • 话题名称:/arm/cmd_vel

  • 数据定义位置:bodyctrl_msgs::msg::CmdSetMotorSpeed.msg

  • 数据格式:

    std_msgs/Header header
    SetMotorSpeed[] cmds

    #SetMotorSpeed.msg
    uint16 name # MotorName
    float32 spd # rad/s
    float32 cur # A

4. 手臂关节标零

  • 说明:双臂关节的标零接口,调用此接口时会将手臂指定的电机当前位置设置为零位,需要配合标零工具使用,没有标零工具时请谨慎使用,适用于天工行者全系列。
  • 控制方式:topic
  • 话题名称:/arm/cmd_set_zero
  • 数据定义位置:std_msgs::msg::String
  • 数据格式:
    以字符串形式发送关节的id实现标零
    双臂关节id:
    左臂:11---17,
    右臂:21---27;