4.2 底层电机控制接口

4.2.1 底层控制指令

用户通过订阅话题 rt/lowcmd 来发送电机控制指令,具体发送的数据结构如下:

std_msgs/Header header

float32[4] q_des_abad   //期望的Abduction关节角度(目标位置)
float32[4] q_des_hip    //期望的髋关节角度
float32[4] q_des_knee   //期望的膝关节角度
float32[4] qd_des_abad  //期望的Abduction关节角速度(目标速度)
float32[4] qd_des_hip   //期望的髋关节角速度
float32[4] qd_des_knee  //期望的膝关节角速度
float32[4] kp_abad     //Abduction关节的位置控制增益(PD控制中的P)
float32[4] kp_hip       //髋关节的P增益
float32[4] kp_knee      //膝关节的P增益
float32[4] kd_abad     //Abduction关节的速度控制增益(PD控制中的D)
float32[4] kd_hip       //髋关节的D增益
float32[4] kd_knee      //膝关节的D增益
float32[4] tau_abad_ff  //Abduction关节的前馈力矩
float32[4] tau_hip_ff   //髋关节的前馈力矩
float32[4] tau_knee_ff  //膝关节的前馈力矩
int32[4] flags          //每条腿的控制模式标志

4.2.2 底层数据接收

用户通过订阅rt/lowstate话题获取电机、IMU数据,数据结构如下所示:

  • 1、IMU状态信息:

float32[3] imu_angular_velocity   //roll rate(滚转角速度,绕 X 轴)
                                // pitch rate(俯仰角速度,绕 Y 轴)
                               // yaw rate(偏航角速度,绕 Z 轴)
float32[3] imu_linear_acceleration    // x轴加速度
                                      // y轴加速度
                                      // z轴加速度
float32[4] imu_orientation            // 四元数表示的姿态
bool imu_is_valid
uint16 imu_packet_id
  • 2、电机状态信息:

float32[4] q_abad       //Abduction/内收关节角度(单位:弧度)
float32[4] q_hip        //髋关节角度
float32[4] q_knee       //膝关节角度
float32[4] qd_abad      //Abduction关节角速度(单位:rad/s)
float32[4] qd_hip       //髋关节角速度
float32[4] qd_knee      //膝关节角速度
float32[4] tau_abad     //Abduction关节力矩(单位:N*m)
float32[4] tau_hip      //髋关节力矩
float32[4] tau_knee     //膝关节力矩
int32[4] flags          //关节状态标志位
int32 spi_driver_status      //spi驱动状态
int32 abnormal_warning_level_motor  //电机异常警告等级
int32 abnormal_warning_level_soc    //电池电量警告等级