Cassie 2018年反馈控制论文阅读笔记
最近空闲时间在思考双足走草地的控制方案,查找资料发现了密歇根大学2020年展示了一个很牛的双足过草地的demo:
所用的平台是Cassie机器人,完整视频:https://www.bilibili.com/video/BV1iV411k7Qo,作者表示论文还在写……然后看了下他们以往的视频,他们2018年就在Cassie上进行了实验,视频中就已经显示了其优秀的复杂地形(沙地、雪地、被烧过的草地……)通行能力,如下图所示:
2018年的控制方案在他们2018年的论文《Feedback Control of a Cassie Bipedal Robot Walking, Standing, and Riding a Segway 》中有详细的阐述,核心思想就是反馈控制。并且他们的控制器代码也开源了,https://github.com/UMich-BipedLab/Cassie_FlatGround_Controller
仿真结果视频见笔者B站账号:https://www.bilibili.com/video/BV1Yi4y1g7Rs/
控制代码就在FG_Controller.m中,其他的是一些机器人模型文件、数学工具、步态参数等的库,控制代码还是比较好懂的。
Cassie每条腿有7个自由度,其中5个关节是电机驱动,其他两个关节是欠驱动的(图中的q5,q6),主要是四边形连杆以及弹簧,一方面用来适应不平坦地形,另一方面可以用来检测触地。
个人感觉这个检测触地的方法还挺妙的,既省去了脚底安装力传感器,也省去了不用力传感器为机器人设计触地检测算法的复杂工作(关于这块,可以看一下MIT为cheetah 3设计的不依靠力传感器的触地检测算法《Contact model fusion for event-based locomotion in unstructured terrains》,还是多少有点复杂的)
论文中指出在Cassie的控制过程中,所关注的是机器人身体6个方向的自由度以及两条腿总共14个关节,即
这里考量的量实际就是浮动基建模的广义坐标量,论文中也指出他们用FROST软件(https://github.com/UMich-BipedLab/Cassie_Model)基于Cassie的URDF模型自动生成了浮动基的动力学模型:
对于每条腿的q5,q6两个欠驱动关节,论文中指出默认状态下将他们设为常量,因此两条腿加起来要控制的关节总数为10个。然后论文用了一种较简单的反馈控制方案,要控制的量为:
这里的身体(torso)的roll,pitch实际控制输入可以通过几何关系转化为关节输入。
指定要控制的量的期望值,便可以得到残差:
而后对残差进行PD控制律,此处的y是指经过传感器后进行滤波后的值(论文中用了一阶滤波器),便可以得到控制输入。
当然在他们的实际代码中还对控制身体的roll、pitch的关节加了另一个反馈补偿,如下所示:
其中s_L:[0,1],0表示空中摆动,1表示完全触地。其实这里的补偿我觉得可以直接计算身体重力对roll、pitch转轴造成的额外转矩,然后当作一个前馈,这样响应会更快。
每个控制周期期望的状态主要是每个步态周期中从初始值到目标值之间的贝塞尔曲线插值,然后每个控制周期通过PD控制律控制10个关节。
另外笔者注意到了论文中也提到了通过不平坦地形的长短腿控制,如图:
这一点让我感觉和腿足机器人爬楼梯的方案有些异曲同工之处,下次再把这块总结下。
回顾整个方案,说到底就是简单的PD控制方案,但在实际中也展现出了较强的鲁棒性,再次证明了反馈控制的经典,拜服。