MIT四足机器人控制方案理解笔记(3)——Mini Cheetah 19年的MPC+WBC控制方案

2019年,MIT在Mini Cheetah上采用了MPC+WBC的控制方案,论文《Highly Dynamic Quadruped Locomotion via whole-body impulse control and model predictive control》中称加入WBC后Mini的最高运动速度由18年只采用MPC时的2.45m/s增加到19年的3.7m/s。

笔者这几天看了下Mini上的WBC,在此处谈谈自己一些粗浅的理解,如有错误,请各位指正。

mini上所用的MPC与Cheetah 3上的相同,笔者在上一篇博文https://mp.csdn.net/console/editor/html/108088051中也谈了下自己对Cheetah 3上的凸模型预测控制的理解。在cheetah 3中,MPC优化出的地面反作用力取负号后左乘雅可比转置得到关节力矩,笔者的理解是此处的关节力矩的计算更多的是反映了静力学层面的关系,其间并没有考虑关节速度、加速度等对关节力矩的影响,即没有考虑动力学。而mini上的WBC恰好是在MPC计算得到地面反作用力的基础上利用动力学模型得到关节的位置、速度、加速度以及力矩这些量,实现更精准的控制。因为机器人是在不断运动的,因此mini所用的是机器人浮动基动力学模型,即机器人的基座是运动的,求解难度是大于基座固定不动的工业机器人的。浮动基动力学方程表达形式如下:

mini中的WBC的核心思想是操作空间有优先级的多任务控制组织方案,关于优先级、多任务这点,举个简单的例子,比如一个机械臂,指定了期望的末端速度,同时我们要求在保证达到期望的末端速度前提下,机械臂的第一、二个关节速度要尽可能接近0,这便是一个简单的有优先级的多任务控制问题。解决此类问题最常用的方法是零空间组织法(null space projection)。

关于null space projection,可以看一下ETH的精简机器人学讲义:https://ethz.ch/content/dam/ethz/special-interest/mavt/robotics-n-intelligent-systems/rsl-dam/documents/RobotDynamics2017/RD_HS2017script.pdf,笔者刚所举的例子在这份讲义的第44页有详细的讲解。

mini的关节位置、速度、加速度求解其实也是用了相同的方法:

这里位置、速度的任务雅可比在讲义的43页有阐述,加速度的任务雅可比在讲义的73页也有阐述(主要是基于接触约束导出的null space projection)然后,便是将计算出的位置、速度、加速度带入动力学方程做一个优化,

关于关节位置的计算论文中是说:

其中qj是此刻测得的关节位置,笔者在https://mp.csdn.net/console/editor/html/108085284中提过在摆动腿的控制中,大多是从初始位置到末端位置进行插值,然后计算每个控制周期的期望关节位置、速度。我的理解是此处摆动腿便不能再用插值的方式进行控制,而是每个控制周期都会有基于null space projection的关节位置、速度指令,需要对其做PD控制律,然后再加上一个基于动力学模型的力矩前馈。

论文中优化问题的核心思想是在满足动力学方程约束的情况下,允许机器人基座与期望状态之间存在些许的偏差,这种放松更有利于机器人的高速运动,而后将优化出的地面反作用力、关节加速度以及之前计算】得到的关节位置、速度带到动力学方程里:

便可以求出支撑腿、摆动腿的力矩,(摆动腿没有接触力fr这一项)求出的这个力矩会做为一个前馈,然后加上关节位置、速度的PD控制律,对机器人的支撑腿、摆动腿进行控制。按论文中所述,这种控制方案让mini跑的更快了,如下图:

按照笔者的理解,其实这一套方案要部署到自己的机器人上,难度是很大的。尤其是浮动基的动力学建模,非常复杂,虽说好像目前有部分软件可以直接基于机器人模型文件,例如URDF自动求出机器人的浮动基动力学模型,但笔者还没使用过。如果有使用过的读者,还请赐教一下。

 

笔者QQ:1876421464

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值