机器人的状态估计可以说是在实物样机中最重要的部分,例如对于无人机来说高实时、高精度的状态估计能大大简化控制器的设计复杂度,这也是为何早期PIX4飞控采用串级PID加一些简单的补偿就能实现可靠的飞行,而其中的EKF2或AutoQuad等飞控采用的UKF才是最关键的部分,对于四足机器人来说也一样,高动态的状态估计对于四足机器人的作用在于:

(1)高动态的速度反馈能更好地用于落足点控制:众所周知目前大部分四足机器人落足点选择都是基于Raibert的中性点模型,如MIT采用了双足机器人中的捕获点,但其中最关键的都是机器人速度的反馈,在外力扰动下实时的速度估计能让落足点快速的反应;

(2)精确的速度估计有利于质心稳定:状态估计的精度越高,那相同的控制器下其控制精度也越高,对于四足机器人来说前向速度的控制非常影响俯仰轴,而高度估计在上下台阶时对机体缓冲过程也十分重要;

目前四足机器人比较通用的状态估计手段一种是直接对足端速度微分,同时考虑支撑腿数量求取平均值,这样的方法虽然简单,但是由于没有考虑机体姿态变化,使得姿态扰动下前后向、高度向速度会发送波动,目前大家采用的状态估计方法还是MIT的KF滤波框架,这部分相关解析很多,我也不再赘述:

总之,MIT KF框架的核心即构建了一个单刚体多点支撑模型,通过融合足端速度、位置和加速度来实现对质心状态的精确估计,由于其直接输入了解算后的姿态角度,因此只需要构建一个KF线性方程,使得整个滤波器的计算量和实时性都很好,通过融合加速度计能使得对原始足端里程计的滤波系数很大,避免由于误接触和摆动抖动造成的速度波动,从而使得质心控制更加平滑,同时借助加速度作为系统输入,来补偿由于低通滤波带来的相位滞后,因此整个过程实际和无人机飞控气压计融合的例子非常类似,当然MIT KF框架明显存在着几个问题:

(1)足端高度测量值Z方向均为0:由于MIT整个控制框架是在世界坐标系下,因此其默认输入的足端测量高度为0,这导致机器人在单边或对角腿高程大幅度变化情况下会出现上下颠簸;

(2)未考虑足端滑移:MIT控制框架中默认支撑时足端不存在滑移,而在实际系统中难以保证,如果想实现Vision60在冰面上的稳定控制,如果不考虑滑移那是无法实现的,传统上可以通过扩张系统状态来实现;

(3)未考虑地形:这一点和(2)类似由于未考虑地形导致,控制时无法很好的适应坡度和地形起伏;

上述这些问题都需要进一步修改,而从无人机飞控状态估计的发展可知,后续采用EKF或UKF的改进方法也是非常重要提高机器人动态性能的方向,这里仅列出基于原始MIT KF框架下的实验结果,如下图所示左上图为Z位置,右上图为Z速度,左下为X速度,图中实线为加权平均结果,虚线为KF估计结果,最后的为加速度;

速度测量噪声0.02

如上图所示原始MIT代码中速度测量噪声和位置噪声为0.005,我采用0.02测试可以看到虚线位置相比实线超前,这体系了KF的好处,而速度估计跟随性能不好;

速度测量噪声0.05

增大噪声后速度估计结果跟随平均值,但是前向速度出现随测量值的前后波动,这在原地控制中会造成机器人来回抖动,因此进一步调节:

速度测量噪声0.035

最终采用0.035下高度、速度跟踪能较好地体现运动趋势,而前向滤波也能较好平滑抖动,在实验中发现采用原始参数当机器人运动速度过快的时候会出现机体高度越来越低,这和绝影X20的视频效果类似,不知道其是不是也采用了MIT的方法?

https://vdn6.vzuu.com/HD/75a104c8-7216-11ec-ba8e-060646c5ee4a-v4_t10000111-wbkjWRw5SE.mp4?pkey=AAVDUmkzmNAaZ7rQqvP6azS4Y8szXRpJfR7j6qJOkzv2Sctc7xL5VXhGg_TLZTHTSJ4h0nGzHOz8BQlHSUIrw3OU&c=avc.0.0&f=mp4&pu=da4bec50&bu=http-da4bec50&expiration=1664263050&v=ks6