当前位置:   article > 正文

MIT Cheetah3 虚拟支撑多边形_四足 虚拟支撑多边形

四足 虚拟支撑多边形

 如图所示,中心的蓝色*号是虚拟支撑多边形计算出的期望质心位置;根据仿真,此方法的效果不明显;参考文献为【MIT Cheetah 3: Design and Control of a Robust, Dynamic Quadruped Robot】;

部分代码如下,提供给算法足端位置,各个脚的接触状态和摆动状态的相位,即可得出虚拟支撑多边形

  1. %虚拟支持多边形会偏离了接近接触阶段结束的腿朝向即将着陆的腿。
  2. sigma=ones(4,1)*0.2;
  3. KcC=zeros(4,1);
  4. KcS=zeros(4,1);
  5. Fai=zeros(4,1);
  6. legnum=[2,3;4,1;1,4;3,2];
  7. for leg=1:4
  8. sq=2^0.5;
  9. % if abs(contactstate(leg))<0.001
  10. KcS(leg)=0.5*(2+erf(-swingstate(leg)/(sigma(3)*sq) ) + erf( ( swingstate(leg)-1 ) /( sigma(4)*sq ) ) );
  11. % else
  12. KcC(leg)=0.5*( erf( contactstate(leg) / (sigma(1)*sq) ) + erf( ( 1-contactstate(leg) )/(sigma(2)*sq )) );
  13. % end
  14. Fai(leg)=ceil(contactstate(leg))*KcC(leg)+ceil(swingstate(leg))*KcS(leg);
  15. end
  16. E=zeros(6,4);
  17. Ee=zeros(3,4);
  18. for leg=1:4
  19. p=[foot_pos(:,leg),foot_pos(:,legnum(leg,1));foot_pos(:,leg),foot_pos(:,legnum(leg,2))];
  20. E(:,leg)=p*[Fai(leg);1-Fai(leg)];
  21. Ee(:,leg)= foot_pos(:,leg)*Fai(leg)+ Fai(legnum(leg,1))*E(1:3,leg)+Fai(legnum(leg,2))*E(4:6,leg);
  22. Ee(:,leg)=Ee(:,leg)/(Fai(leg)+Fai(legnum(leg,1))+Fai(legnum(leg,2)));
  23. end
  24. off=sum(Ee')/4;
  25. clf;
  26. center=sum(foot_pos')/4;
  27. plotx=[E(1:2,1),E(4:5,2),E(1:2,2),E(4:5,4),E(1:2,4),E(4:5,3),E(1:2,3),E(4:5,1),E(1:2,1)];
  28. plot(plotx(1,:),plotx(2,:))
  29. hold on;
  30. plot(Ee(1,:),Ee(2,:),'o'); %虚拟接触多边形顶点
  31. plot(off(1),off(2),'*'); %期望质心位置
  32. plot(foot_pos(1,:),foot_pos(2,:),'.'); %足点
  33. plot(center(1),center(2),'o'); %足点的中心

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

闽ICP备14008679号