63 lines
2.5 KiB
C++
63 lines
2.5 KiB
C++
#define int8_t int
|
||
#define int16_t int
|
||
#define int32_t int
|
||
#define int64_t int
|
||
|
||
/**
|
||
* 基本控制
|
||
* URL: udpm://239.255.76.67:7671?ttl=255
|
||
* 通道: robot_control_cmd
|
||
* 频率: 2~500Hz,超时500ms触发趴下保护
|
||
*/
|
||
|
||
struct robot_control_cmd_lcmt {
|
||
int8_t mode; // 控制模式
|
||
int8_t gait_id; // 步态ID
|
||
int8_t contact; // 四足着地状态
|
||
int8_t life_count; // 生命计数,计数增加时命令生效
|
||
|
||
float vel_des[3]; // 期望速度 [x, y(1.6), yaw(2.5)] m/s
|
||
float rpy_des[3]; // 期望姿态 [roll, pitch, yaw(0.45)] rad
|
||
float pos_des[3]; // 期望位置 [x, y, z(0.1-0.32)] m
|
||
float acc_des[6]; // 跳跃加速度 m^2/s
|
||
float ctrl_point[3]; // 姿态控制点 m
|
||
float foot_pose[6]; // 前后足位置 [x,y,z] m
|
||
float step_height[2]; // 小跑步态步高 0~0.08m
|
||
|
||
int32_t value; // 控制标志位
|
||
// bit0: 舞蹈模式下是否使用MPC轨迹
|
||
// bit1: 0-内八节能步态 1-垂直步态
|
||
int32_t duration; // 命令执行时间
|
||
};
|
||
|
||
|
||
/** 状态反馈
|
||
* URL: "udpm://239.255.76.67:7670?ttl=255"
|
||
* channel: "robot_control_response"
|
||
* frequncy: 50HZ
|
||
*/
|
||
struct robot_control_response_lcmt {
|
||
int8_t mode; // 控制模式
|
||
int8_t gait_id; // 步态ID
|
||
int8_t contact; // 四足着地状态
|
||
int8_t order_process_bar; // 进度条 order process, 1 == 1 %
|
||
int8_t switch_status; // 0:Done, 1:TRANSITIONING, 2:ESTOP, 3:EDAMP, 4:LIFTED 5:BAN_TRANS 6:OVER_HEAT 7:LOW_BAT
|
||
int8_t ori_error; // 姿态误差
|
||
int16_t footpos_error; // 足端位置误差
|
||
int32_t motor_error[12]; // 电机误差
|
||
};
|
||
|
||
/** 里程计数据
|
||
* URL: "udpm://239.255.76.67:7667?ttl=255"
|
||
* channel: "global_to_robot"
|
||
* frequncy: 50HZ
|
||
*/
|
||
struct localization_lcmt {
|
||
float xyz[3]; // 表达在腿式里程计坐标系的机身位置
|
||
float vxyz[3]; // 表达在腿式里程计坐标系的机身线速度
|
||
float rpy[3]; // 表达在腿式里程计坐标系的机身欧拉角
|
||
float omegaBody[3]; // 表达在机身坐标系的机身角速度
|
||
float vBody[3]; // 表达在机身坐标系的机身线速度
|
||
int64_t timestamp; // 时间戳,单位 nanoseconds
|
||
};
|