前言:

    近些年来足式机器人在国内外发展的非常火热,其中控制方法可以说是百花齐放,在MIT开源其基于凸优化的MPC方法之前,许多小伙伴都是采用MIT在很早时候提出的Virtual Model Control(VMC)方法。该文主要讲述作者所提出的Virtual Suspension Model Control (VSMC)方法,并运用于点足站立平衡,代码已经开源,可以在本文(或者论文原文)最后给出的GitHub链接中找到。论文支持材料如该视频

  VMC足够简单而且有效,其要求设计直观的虚拟机械组件,以此作为依据生成参考力。具体的文章可以参考论文原文下的参考文献,作者对其进行了较好的总结。

  VSMC其实在广义上就是VMC,只是为了描述其机械组件的特点而多添加了一个Suspension (悬挂)的意思。文章中提出使用VSMC来解决腿式机器人点足站立平衡问题,这是一种静态平衡问题,在2019年之前实现该效果的参考很少。动态平衡可以Raibert的Legged Robots That Balance一书为参考。

  文章中首先就是从一个简化模型入手,在二维平面内展开。对于点足站立问题的最基本描述就是,足端与地面相对位置不变,躯干主体可以维持姿态和位置稳定。这很明显是自然不稳定的,使用一般的虚拟模型框架是不行的(对比可以在论文或者视频中找到)。所以,作者提出采用一段虚拟高度将姿态维持转化到位移空间中将位置维持融合在一起的方法。这非常有意思,任务本来是分开的为什么还要耦合在一起呢?论文中的主要点就是,尽管耦合在一起但是控制任务确是自动分级进行的。这点非常让人激动!!!

  对于这种没有支撑多边形的平衡任务,大家可能主要的视野集中在了躯干部分,却忽略了足端部分。自动分级控制的思想就是将足端作为参考。假设足端位置不变,可以将质心和足端连线作为一根杆1,把虚拟高度作为作为杆2,杆1比杆2要长很多。在机器人开始倾斜时,可以很明显发现 杆1末端(质心)相对与足端变化 远大于 杆2末端相对于质心的变化,所以虚拟弹簧阻尼器主要维持的是质心的位置而不是姿态,在质心位置恢复的差不多后,杆1对姿态的调节开始起主导作用。所以控制的优先级就自动被分成了 质心位置优先,姿态其次。为什么说是Suspension 呢?主要是由于 两个合成的矢量力类似于空间中又有个点 牵扯着虚拟高度的末端,好比一个悬挂约束的物体

  细想之后感觉是非常巧妙的,数学方法很简单,没有什么太难的地方,然后具体的代码也不是很难读懂。但是这种稳定性没有在论文中证明,只是简单阐述了一下。其次,这种方法也不属于最优控制。所以还有许多工作可以在这个基础上展开。

  论文还讲述了虚拟高度设定的参考依据,理论上说明了在一定参数设定情况下,虚拟高度合适的范围应该是多少。还有就是论文中将这种悬挂系统分布于每条腿,还有一种方案是在机器人中心定虚拟模型然后分解力到每条腿。代码和论文中采用的是前者。

 

  

  论文中实验比较丰富。描述了三种腿式机器人实验场景(四足机器人对足站立,二足机器人站立,单足机器人站立)。通过自由倒立摆冲击机器人躯干,机器人站立平衡于一个动态斜坡,和重心偏移来说明靠扰动性能。由于作者对机器人体积设计比较小,因此整体惯量较低,所以冲击的数值量不是很明显,但是通过机器人摆动幅度上来讲可以体现扰动还是相对较大的。四足和双足站立平衡是可以接受的,但是单足静态站立也能达到出乎意料的效果着实还是令人兴奋的。当然了由于点足站立的原因,其躯干yaw没有办法维持稳定,因此对干扰的抵抗性弱,另外也由于腿的非规则性,也加速了yaw的不稳定性,作者也在文中进行了阐述。

  这篇文章的遗憾就是作者因为某些原因没有进行实物实验,否则将是极好的结果。

  具体的数学实现,在文中可以找到非常的详细这里就不进行重复书写了,如果有小伙伴不理解,可以在下方留言,一起探讨。对于本文叙述有什么疑问的地方,还希望指出。

  最后,作者在B站上做了一个缓慢trot步态的尝试,效果还可以,具体为视频。作者开源的python代码链接为 github