Mini Cheetah 代码分析(三)快速从仿真中获取数据

首先启动仿真

cd ~/wbc_v5/build

./sim/sim

界面选择好后,在build目录下ctrl+shift+t开启新终端,运行MIT控制器。

./user/MIT_Controller/mit_ctrl m s

在中央面板中,将 use_rc 设置为 0,
将 control_mode 改为 6 (recovery stand), 运行到站立姿态
将 control_mode 改为 3 (balance stand), 平衡站立(力控状态)
将 control_mode 改为 4 (locomotion), 此时开始走路,修改在/home/quadruped/wbc_v5_usb/user/MIT_Controller/Controllers/convexMPC目录下的ConvexMPCLocomotion.cpp文件,不修改的话,默认进行以 Tort 步态运行。

重点来了,在运行的同时,切换目录到 cd ~/wbc_v5/scripts

运行如下指令,打开LCM spy程序,显示来自模拟器和控制器的详细信息,可以看到新窗口,鼠标双击能看到实时数据流和数据曲线。

cd ~/wbc_v5/scripts
./launch_lcm_spy.sh

运行lcm-logger,记录数据

lcm-logger

ctrl+c后,结束记录,在目录下生成了lcmlog-2022-04-15.00的文件,将日志文件转换为.mat文件用于MATLAB的读取。

./log_convert.sh -o lcmlog-2022-04-15.00

生成-o.mat文件,重命名为o.mat后,可以直接在MATLAB中读取,数据都是以结构体的形式进行保存的。

load("o.mat")

数据的结构目录如下:

global_to_robot =              

        rpy: [4044×3 double]%身体姿态角
        omegaBody: [4044×3 double]%都是零
        xyz: [4044×3 double]%身体坐标
        vxyz: [4044×3 double]%都是零
        lcm_timestamp: [1×4044 double]%时间戳

leg_control_command = %腿部运动的控制指令

         f_ff: [4044×12 double]%都是零
        v_des: [4044×12 double]%期望足端速度,触地时刻为0
        qd_des: [4044×12 double]
        tau_ff: [4044×12 double]%前馈的关节扭矩
        kp_joint: [4044×12 double]%常数矩阵,关节控制器kp
        kd_joint: [4044×12 double]%常数矩阵,关节控制器kd
        p_des: [4044×12 double]%都是零
        kd_cartesian: [4044×12 double]%矩形波状常数矩阵
        q_des: [4044×12 double]%期望的关节角
        kp_cartesian: [4044×12 double]%都是零
        lcm_timestamp: [1×4044 double]%时间戳

leg_control_data = %采集到的腿部数据,用于控制器计算

        lcm_timestamp: [1×4044 double]%时间戳
        q: [4044×12 double]%关节角度
        p: [4044×12 double]%足端位置的坐标,相对于髋关节坐标系
        qd: [4044×12 double]%关节角速度
        v: [4044×12 double]
        tau_est: [4044×12 double]%都是零

simulator_state = %仿真器输出的机器人状态数据
               vb: [4043×3 double]
              vbd: [4043×3 double]%几乎都是接近于零
              rpy: [4043×3 double]
             quat: [4043×4 double]
                v: [4043×3 double]
    lcm_timestamp: [1×4043 double]%时间戳
           omegab: [4043×3 double]
                p: [4043×3 double]
             time: [1×4043 double]
        timesteps: [1×4043 int64]%仿真的时间步数
            omega: [4043×3 double]

spi_debug_cmd = %用于调试的接口的数据

             f_ff: [405×12 double]
            v_des: [405×12 double]
           qd_des: [405×12 double]
           tau_ff: [405×12 double]
         kp_joint: [405×12 double]
         kd_joint: [405×12 double]
            p_des: [405×12 double]
     kd_cartesian: [405×12 double]
            q_des: [405×12 double]
     kp_cartesian: [405×12 double]
    lcm_timestamp: [1×405 double]

state_estimator = 

       omegaWorld: [4044×3 double]
           aWorld: [4044×3 double]
            vBody: [4044×3 double]
              rpy: [4044×3 double]
             quat: [4044×4 double]
    lcm_timestamp: [1×4044 double]
            aBody: [4044×3 double]
                p: [4044×3 double]
         vRemoter: [4044×3 double]
        omegaBody: [4044×3 double]
           vWorld: [4044×3 double]

wbc_lcm_data = 

      foot_local_vel: [4044×12 double]
            foot_vel: [4044×12 double]
        foot_pos_cmd: [4044×12 double]
        foot_acc_cmd: [4044×12 double]
        body_vel_cmd: [4044×3 double]
                jvel: [4044×12 double]
                  Fr: [4044×12 double]
       lcm_timestamp: [1×4043 double]
                jpos: [4044×12 double]
              Fr_des: [4044×12 double]
            body_vel: [4044×3 double]
            jpos_cmd: [4044×12 double]
            jvel_cmd: [4044×12 double]
        body_ang_vel: [4044×3 double]
        body_ori_cmd: [4044×4 double]
         contact_est: [4044×4 int64]
        body_pos_cmd: [4044×3 double]
    body_ang_vel_cmd: [4044×3 double]
            body_pos: [4044×3 double]
      foot_local_pos: [4044×12 double]
            foot_pos: [4044×12 double]
            body_ori: [4044×4 double]
          vision_loc: [4044×3 double]
        foot_vel_cmd: [4044×12 double]
    foot_acc_numeric: [4044×12 double]
            jacc_cmd: [4044×12 double]

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 26
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值