全身控制
全身控制是一种指挥多关节机器人的方式——比如一台有两条手臂、两条腿和一个躯干的人形机器人——它让所有这些关节像一支队伍那样协同配合,同时完成好几件事。你不必逐个告诉每个关节该怎么动,而是用朴素的目标来告诉机器人你想要什么:保持平衡、去够那个杯子、把视线稳住、别在桌子上压得太用力。控制器随后每秒求解许多次,算出那一组最能同时满足所有这些目标的关节指令。可以把它想象成一个人去够高处的架子:你的腿、胯、背和肩会自动同时调整,这样你的手往上伸时身体才不会摔倒。
之所以必须一次性求解,是因为机器人的各项任务在争抢同一个身体。向前够得太远会让机器人的重心偏移,从而威胁平衡;转头对脚没有任何影响,却彻底改变了摄像头的朝向。全身控制器把每个目标都当作一项任务,算出能同时为它们服务的关节运动和力,并在这一过程中始终尊重那些硬性极限——关节只能弯到一定角度,电机只能使出一定的力,脚也绝不能打滑。它的做法是在每个控制周期里搭建并求解一个小小的优化问题,追问在同一瞬间,哪一组指令最能兼顾所有这些请求。
尤为关键的是,这些目标通常按优先级排序,因为它们不可能同时被完美满足。保持平衡、别把自己的手臂弄断,排在最上面;准确够到目标点排在其次;动作好不好看排在最后。带优先级的全身控制器先满足高优先级的任务,再用剩下的自由度去追求较低的那些,于是人形机器人即便要为此让手离杯子差了一厘米,也能稳住自己的脚跟。正是这一点,让腿式机器人能够一边在碎石堆上行走、一边搬运重物、一边稳住身体,而不必把这些事一件一件地分开来做。
一台人形机器人弯下身去搬起一个沉重的箱子:全身控制把它的脚踝、膝盖、髋、背和手臂协调在一起,让它在正确的位置抓住箱子,同时把重心始终保持在双脚之上,并且绝不超出任何一个电机的力量极限。
众多关节、众多目标,每个周期都重新算出的同一个解。
全身控制把整台机器人当作一个相互耦合的整体来处理;这与单独控制每条肢体或每个关节形成对照,后者忽略了动一个部位会扰动其余部位。