Skip to main content
Version: V2.0.4.x

8.6 Waist Joint

8.6.1 Status Interface

1. Get Waist Joint Information

  • Description: Get waist joint status information including current position, velocity, current and temperature. Applicable to Walker Tienkung·Voice & Vision and Walker Tienkung·Embodied Intelligence.

  • Control method: topic

  • Topic name: /waist/status

  • Data definition location: bodyctrl_msgs::msg::MotorStatusMsg.msg

  • Data format:

    std_msgs/Header header
    MotorStatus[] status

    MotorStatus definition:
    uint16 name # MotorName
    float32 pos # rad
    float32 speed # rad
    float32 current # A
    float32 temperature
    uint32 error

    Error field definitions:

    error = 33072,Device offline
    error = 33073,Joint position out of range
    error = 1,Joint motor overtemp
    error = 2,Overcurrent
    error = 3,Low voltage
    error = 4,Joint MOS overtemp
    error = 5,Locked rotor
    error = 6,Overvoltage
    error = 7,Phase missing
    error = 8,Encoder error

8.6.2 Control Interface

1. Position Mode

  • Description: Joint position control interface. Requires desired position, velocity, maximum current. Applicable to Walker Tienkung·Voice & Vision and Walker Tienkung·Embodied Intelligence.

  • Control method: topic

  • Topic name: /waist/cmd_pos

  • Data definition location: bodyctrl_msgs::msg::CmdSetMotorPosition.msg

  • Data format:

    std_msgs/Header header
    SetMotorPosition[] cmds

    # SetMotorPosition.msg
    uint16 name # MotorName
    float32 pos # rad
    float32 spd # rad/s
    float32 cur # A
  • Example commands:

    ros2 topic pub /waist/cmd_pos bodyctrl_msgs/msg/CmdSetMotorPosition "{header: {stamp: {sec: 0, nanosec: 0 }, frame_id: ''},cmds: [{name: 31, pos: -0.3, spd: 0.2, cur: 8.0 }]}"
    ros2 topic pub /waist/cmd_pos bodyctrl_msgs/msg/CmdSetMotorPosition "{header: {stamp: {sec: 0, nanosec: 0 }, frame_id: ''},cmds: [{name: 31, pos: 0.0, spd: 0.2, cur: 8.0 }]}"
    # When using ros2 topic pub command, header can be omitted:
    ros2 topic pub /waist/cmd_pos bodyctrl_msgs/msg/CmdSetMotorPosition "{cmds: [{name: 31, pos: -0.3, spd: 0.2, cur: 8.0 }]}"
    ros2 topic pub /waist/cmd_pos bodyctrl_msgs/msg/CmdSetMotorPosition "{cmds: [{name: 31, pos: 0.0, spd: 0.2, cur: 8.0 }]}"

2. Force/Position Hybrid Mode

  • Description: Joint force/position hybrid control interface. Requires desired position, velocity, feedforward torque, kp, kd coefficients. Applicable to Walker Tienkung·Voice & Vision and Walker Tienkung·Embodied Intelligence.

  • Control method: topic

  • Topic name: /waist/cmd_ctrl

  • Data definition location: bodyctrl_msgs::msg::CmdMotorCtrl.msg

  • Data format:

    std_msgs/Header header
    MotorCtrl[] cmds

    # MotorCtrl.msg
    uint16 name
    float32 kp
    float32 kd
    float32 pos
    float32 spd
    float32 tor
  • Example commands:

    ros2 topic pub /waist/cmd_ctrl bodyctrl_msgs/msg/CmdMotorCtrl "{cmds: [{name: 31,kp: 30.0,kd: 10.0,pos: -0.5,spd: 0.0,tor: 0.0}]}"
    ros2 topic pub /waist/cmd_ctrl bodyctrl_msgs/msg/CmdMotorCtrl "{cmds: [{name: 31,kp: 30.0,kd: 10.0,pos: 0.0,spd: 0.0,tor: 0.0}]}"

3. Velocity Mode

  • Description: Joint velocity control interface. Requires desired velocity, maximum current. Applicable to Walker Tienkung·Voice & Vision and Walker Tienkung·Embodied Intelligence.
  • Control method: topic
  • Topic name: /waist/cmd_vel
  • Data definition location: bodyctrl_msgs::msg::CmdSetMotorSpeed.msg
  • Data format:
    std_msgs/Header header
    SetMotorSpeed[] cmds

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

4. Waist Joint Zero Calibration

  • Description: Waist joint zero calibration interface. When called, the current motor position is set as zero. Remote control "D" zero will move waist motor to this position. Usually used with calibration tools; use with caution without tools. Applicable to Walker Tienkung·Voice & Vision and Walker Tienkung·Embodied Intelligence.
  • Control method: topic
  • Topic name: /waist/cmd_set_zero
  • Data definition location: std_msgs::msg::String
  • Data format:
    Send joint id as string to perform zero calibration;
    Waist joint id: 31