Mini Cheetah 代码分析(六)机身控制器MPC控制器

MIT的机器狗包括MIT Cheetah 3和MIT Mini Cheetah使用了一种叫做Convex Model-Predictive的控制器,需要结合已经发表的文章去看才更容易理解该算法的代码(标题为:Dynamic Locomotion in the MIT Cheetah 3 Through Convex Model-Predictive Control),本篇解析重要的控制器实现的文件ConvexMPCLocomotion.cpp。该文件也是实现各种功能的入口,跑仿真的时候使用的主要也是这个文件。对应的ConvexMPCLocomotion.h的文件中的类有很多变量的定义,涉及到一些地形自适应或者质心规划的变量需要结合这篇文章才能看懂(标题为:MIT Cheetah 3: Design and Control of a Robust, Dynamic Quadruped Robot)

horizonLength表示MPC控制器的预测步数,此处设为10步。

下面进入ConvexMPCLocomotion::ConvexMPCLocomotion函数

iterationsBetweenMPC(_iterations_between_mpc),//控制频率用。

dtMPC = dt * iterationsBetweenMPC;//mpc计算用时 在状态空间方程离散化时用 iterationsBetweenMPC MPC迭代次数。

trotting这些代码定义了步态,使用向量来进行标识,向量按照{FL, FR, BL, BR} 的顺序进行索引,表示时间占比,这里好像没有将步态周期进行归一化,代码中预定义了多种步态。

比如trot步态可以表示成下图

trotting(horizonLength*1.6, Vec4<int>(0,8,8,0), Vec4<int>(11,11,11,11),"Trotting"),
bounding(horizonLength, Vec4<int>(5,5,0,0),Vec4<int>(5,5,5,5),"Bounding"),
jumping(horizonLength, Vec4<int>(0,0,0,0), Vec4<int>(2,2,2,2), "Jumping"),
standing(horizonLength, Vec4<int>(0,0,0,0),Vec4<int>(10,10,10,10),"Standing"),
walking(int(horizonLength*1.6), Vec4<int>(0,8,4,12), Vec4<int>(12,12,12,12), "Walking"),

_SetupCommand中加载了一些配置指令,机器人型号为MINI_CHEETAH,机身高度0.3等。rc是radio control,指的是遥控器。filter是一个变量,用于防止速度指令的突变。

剩下的主要内容就在ConvexMPCLocomotion::run函数中,就可以理解在仿真操作中的一系列操作的设定。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值