先进控制

状态观测器(龙伯格观测器)

状态观测器是一段软件,当你无法直接测量一台机器的全部内部情况时,它能把那些看不见的内部状态推算出来。许多控制器都需要知道机器人完整的内部状态——每个关节的角度,以及每个关节转动的快慢——但传感器往往昂贵、笨重又带噪声,所以你常常只能测到其中一部分,比如只测得到角度,却测不到速度。观测器负责把剩下的补齐。它在计算机里运行一份机器人数学模型的小副本,盯着你手头那几个真实的测量值,不断修正它对其余一切的猜测,直到这台“想象出来的机器人”动得和真机器人一模一样。

它的核心藏着一个巧妙的窍门:观测器的内部模型会预测传感器“应该”读出什么数;接着它把这个预测和传感器“实际”读出的数作比较,两者之间的差距——也就是预测误差——再被反馈回来,把猜测往正确的方向轻轻一推。如果模型以为手臂应该在某个位置,而真实传感器说它稍稍越过了那里,观测器就会同时修正它对位置和那个测不到的速度的估计。龙伯格观测器以大卫·龙伯格命名,他在 20 世纪 60 年代提出了它,这是用来选取观测器增益——也就是“这个修正该使多大劲”——的经典做法,目的是让估计的误差既能快速收敛到零,又不会冲过头。

这对机器人为什么重要呢?因为良好的控制通常取决于知道每个关节的速度,可是把速度测准却很难——直接读出的速度往往抖动得很厉害。与其给每个关节都买一个速度传感器,不如只测位置,再让观测器把速度平滑地估算出来。同样的思路还能让机器人在某个传感器失灵时继续工作,让无人机凭有限的读数感知自己的倾斜,并让控制器即使无法看到全部,也能像看得见一切那样去动作。

一台两轮平衡机器人用传感器测出自己的倾斜角度,却没有干净的办法读出它倒下的快慢;龙伯格观测器仅凭这个角度就估算出倒下的速度,控制器再同时用上这两者来保持直立。

只测一样,估算其余——然后就像看得见一切那样去控制。

观测器有一个前提:系统必须是“可观测的”——也就是你确实测到的那几个信号里,要含有足够的信息来重建那些隐藏的状态;如果信息不够,再好的观测器也无法把它们还原出来。

又称
observerLuenberger observer状态估计器狀態估計器