当前位置:   article > 正文

MIT miniCheetah mpc的简单matlab仿真_matlab min cheetah

matlab min cheetah

介绍:使用 Dynamic Locomotion in the MIT Cheetah 3 Through Convex Model-Predictive Control一文中介绍的凸模型进行mpc控制的简单仿真。物理参数和权重等基本和miniCheetah 相同;

框架如图;由于是单刚体仿真可以省略掉状态估计和腿部控制器;参考轨迹由人工通过速度指令累加生成,或将生成好的路径分段提供给CMPC控制器中进行轨迹跟踪;

代码较为简单,基本照搬MIT开源代码进行部分语言适配即可;MIT开源代码可以看我之前的贴子。原理讲解CSDN上也有很多人进行了分析,可以参考盒子君的文章

腿序号如图所示,左前腿为1号腿 ;坐标系参考如图

下面是四腿支撑时进行质心轨迹控制的效果:

0395386570314c68ab8808e2c6745fb0.gif

后续工作:

仿照MIT开源项目的步态时间规划,为mpc提供接触信息;

将提前触地检测加入到mpc计算中,

演示设置为右前腿在摆动相相位0.7时触地,参考位姿设置高度0.28,其他均为0;

命令行中的为输入到仿真的力,可以证明其为对角步态,其稳定运行16秒的位姿如图所示;

5f6334ac062e4f3081005ce7192de88d.gif

 35260a82f0a04a0fbcf8edc2ff1cc758.png

后续工作2:

加入步态时间表和落足点调整:

5e6415e36500402481b77f8c44be73b2.gif

后续工作3:

修正了bug,重写了绘制函数,加入了一个通过pid的路径跟踪代码:

f856ca5366d4469c947f9256aba608a2.gif

  1. next_des=max(min(nextPoint+1,length(linex)),1);
  2. temp=[linex(next_des);liney(next_des)]-[linex(nextPoint);liney(nextPoint)];
  3. des_yaw=atan2(temp(2),temp(1));
  4. desyaw_plot=[desyaw_plot;des_yaw];
  5. yaw_err=X_out(3,iter)-des_yaw;
  6. yaw_turn_rate=-4*yaw_err;
  7. kp=diag([0.03,0.03,0]);
  8. kd=diag([0.003,0.003,0]);
  9. err=[X_out(4:5,iter);0]-[linex(nextPoint);liney(nextPoint);0];
  10. div=err-lasterr;
  11. v_des_world=-(kp*err+kd*div);
  12. lasterr=err;
  13. v_des_world=v_des_world/norm(v_des_world)*1;

后续工作4:

更改路径跟踪方式为直接将路径提供给CMPC控制器中进行路径跟踪,如果参考路径经过插值处理使得更加合理后,跟踪效果应该效果不错;

轨迹跟踪效果如图:紫色为参考轨迹

  1. %查找当前最近的路径点
  2. for i=1:length(linex)
  3. if norm([X_out(4:5,iter)]-[linex(i);liney(i)])<last_norm
  4. last_norm=norm([X_out(4:5,iter)]-[linex(i);liney(i)]);
  5. lasti=i;
  6. if last_norm<0.05 %提前结束查询
  7. break;
  8. end
  9. end
  10. end
  11. %% 处理轨迹信息 根据自身情况进行更改
  12. %%
  13. %将生成的轨迹信息填入MPC参考
  14. for i =1:future_period
  15. X_ref_mpc((i-1)*13+1:(i-1)*13+13)=zeros(13,1);
  16. X_ref_mpc((i-1)*13+4)=xtr(i);
  17. X_ref_mpc((i-1)*13+5)=ytr(i);
  18. X_ref_mpc((i-1)*13+6)=0.28;
  19. X_ref_mpc((i-1)*13+3)=yaw_d(i);
  20. X_ref_mpc((i-1)*13+9)=dotyaw(i);
  21. X_ref_mpc((i-1)*13+10)=dotx(i);
  22. X_ref_mpc((i-1)*13+11)=doty(i);
  23. end

NMPC版本地址:非常不完善的版本,期望有大佬能优化一下

NaCl-1374/RPC_cheetah: Policy Regularized Model Predictive Control simulated by matlab (github.com)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/414760
推荐阅读
相关标签
  

闽ICP备14008679号