跳到主要内容

1. 通信流程图


目录​


2. mpc的x和u

2.1 OCS2中状态向量顺序​

也即话题 /humanoid_mpc_observation 里的 state。

idx类型content
0float64vcom_x
1float64vcom_y
2float64vcom_z
3float64L_x / robotMass
4float64L_y / robotMass
5float64L_z / robotMass
6float64p_base_x
7float64p_base_y
8float64p_base_z
9float64theta_base_z
10float64theta_base_y
11float64theta_base_x
12:nafloat64[]关节角度

注意: na 表示由 NUM_JOINT 配置决定,例如 NUM_JOINT=28 时关节角度索引为 12:28

2.2 OCS2中控制向量顺序​

也即话题 /humanoid_mpc_observation 里的 input, 顺序如下:

idx类型content
0:3float64ll_heel_force
3:3float64ll_toe_force
6:3float64lr_heel_force
9:3float64lr_toe_force
12:3float64rl_heel_force
15:3float64rl_toe_force
18:3float64rr_heel_force
21:3float64rr_toe_force
24:nafloat64[]关节速度

注意: na 表示由 NUM_JOINT 配置决定

3. 话题说明

/humanoid/**​

类型: (可视化相关)

用于可视化的话题,可以忽略

/humanoid_controller/**​

类型: (多个)

控制器相关的话题,主要有:

话题消息类型描述
/humanoid_controller/com/rstd_msgs/Float64MultiArray质心位置
/humanoid_controller/com/r_desstd_msgs/Float64MultiArray质心期望位置
/humanoid_controller/com/rdstd_msgs/Float64MultiArray质心速度
/humanoid_controller/com/rd_desstd_msgs/Float64MultiArray质心期望速度
/humanoid_controller/optimizedState_mrt_/angular_vel_xyzstd_msgs/Float64MultiArray从mpc(mrt)取得的质心线速度,顺序为xyz(注意:话题名为 angular_vel 但实际发布的是线速度,单位 m/s)
/humanoid_controller/optimizedState_mrt/com/angular_zyxstd_msgs/Float64MultiArray从mpc(mrt)取得的质心角速度,顺序为zyx
/humanoid_controller/optimizedState_mrt/base/linear_vel_xyzstd_msgs/Float64MultiArray从mpc(mrt)取得的躯干线速度
/humanoid_controller/optimizedState_mrt/base/pos_xyzstd_msgs/Float64MultiArray从mpc(mrt)取得的躯干位置
/humanoid_controller/optimizedState_mrt/joint_posstd_msgs/Float64MultiArray从mpc(mrt)取得的关节位置
/humanoid_controller/optimizedInput_mrt/force_*std_msgs/Float64MultiArray从mpc(mrt)取得的第x个接触点的接触力
/humanoid_controller/optimizedInput_mrt/joint_velstd_msgs/Float64MultiArray从mpc(mrt)取得的关节期望速度
/humanoid_controller/optimized_modestd_msgs/Float64mpc给出的mode
/humanoid_controller/swing_leg—摆动腿控制相关话题
/humanoid_controller/wbc_planned_body_acc/angularstd_msgs/Float64MultiArraywbc优化后的躯干角加速度
/humanoid_controller/wbc_planned_body_acc/linearstd_msgs/Float64MultiArraywbc优化后的躯干线性加速度
/humanoid_controller/wbc_planned_contact_force/left_footstd_msgs/Float64MultiArraywbc优化后的左脚所有接触点的接触力
/humanoid_controller/wbc_planned_contact_force/right_footstd_msgs/Float64MultiArraywbc优化后的右脚所有接触点的接触力
/humanoid_controller/wbc_planned_joint_accstd_msgs/Float64MultiArraywbc优化后的关节加速度

/humanoid_controller/transport_mode_command(service): 搬运模式控制服务,进入/退出/掉使能

/humanoid_controller/controller_switch_event(latching): 控制器切换事件 (kuavo_msgs/ControllerSwitchEvent),包含 from_controller / to_controller

/humanoidmpc**​

类型: (多个)

ocs2源码中mpc交互的相关话题.

话题消息类型描述
/humanoid_mpc_gait_time_namekuavo_msgs/gaitTimeName步态的时间和名字
/humanoid_mpc_mode_scalestd_msgs/Float32步态的缩放比例,用于控制步频
/humanoid_mpc_mode_scheduleocs2_msgs/mode_schedule步态序列
/humanoid_mpc_observationocs2_msgs/mpc_observation观测,mpc端接收
/humanoid_mpc_policyocs2_msgs/mpc_flattened_controllermpc计算的结果
/humanoid_mpc_targetocs2_msgs/mpc_target_trajectories发送给mpc的期望状态

/joint_cmd​

类型: kuavo_msgs/jointCmd

用于控制机器人

消息字段:

字段类型描述
headerstd_msgs/Header时间戳等信息
joint_qfloat64[]关节角度
joint_vfloat64[]关节速度
taufloat64[]关节扭矩
tau_maxfloat64[]最大关节扭矩
tau_ratiofloat64[]扭矩系数
joint_kpfloat64[]kp 参数
joint_kdfloat64[]kd 参数
control_modesint32[]每一个关节对应的控制模式

使用说明:

  • 数组长度为配置文件中的 NUM_JOINT,即关节总数
  • 关节控制模式中, 0: Torque 控制模式, 1: Velocity 控制模式, 2: Position 控制模式

/monitor​

类型: std_msgs/Float64

监控mpc,wbc等模块的频率(Hz)与耗时(ms)

/sensors_data_raw​

类型: kuavo_msgs/sensorsData

实物机器人, 仿真器发布的传感器原始数据

/state_estimate/**​

类型: (多个)

话题消息类型描述
/state_estimate/end_effector/contact_point_*/feet_heightstd_msgs/Float64MultiArray第x个接触点的"足端高度"
/state_estimate/end_effector/contact_point_*/posstd_msgs/Float64MultiArray第x个接触点的位置
/state_estimate/end_effector/contact_point_*/velstd_msgs/Float64MultiArray第x个接触点的速度
/state_estimate/modestd_msgs/Float64估计的步态mode
/state_estimate/base/linear_velstd_msgs/Float64MultiArray估计的躯干线速度,顺序为xyz
/state_estimate/base/pos_xyzstd_msgs/Float64MultiArray估计的躯干位置,顺序为xyz
/state_estimate/base/angular_vel_zyxstd_msgs/Float64MultiArray估计的角速度,顺序为zyx
/state_estimate/base/angular_zyxstd_msgs/Float64MultiArray估计的欧拉角,顺序为zyx(ypr)
/state_estimate/joint/posstd_msgs/Float64MultiArray估计的关节位置
/state_estimate/joint/velstd_msgs/Float64MultiArray估计的关节速度

/tf​

类型: tf2_msgs/TFMessage

tf树

/odom​

类型: nav_msgs/Odometry

用于可视化,无需关注

/pose​

类型: (状态估计器定义)

由状态估计器发布,无需关注