冗餘度求解
冗餘度求解,講的是當機器人擁有的關節比任務嚴格所需的還多時,它如何在「能把同一件事做成」的眾多方式裡做出選擇。你自己的手臂就是絕佳例子:把手平摁在桌面上不動,你仍能抬高或放低手肘,讓它在空中劃動,而手卻紋絲不動。手的任務已經被完全規定死了,手臂卻還剩下一份可以擺弄的自由。一個擁有這同一份多餘自由的機器人,每時每刻都面臨一個選擇——而冗餘度求解,就是它用來明智地做出這個選擇的規則。
這份多餘的自由是恩賜,而非累贅,因為它讓機器人能在牢牢完成主任務的同時,「順手」去追求第二個目標。在手被釘在正確位置上的同時,手臂可以悄悄重塑手肘的姿態去避開障礙物、躲開運動學奇異點(那種被卡住的姿態)、讓關節遠離各自的極限位置,或者乾脆挑最省力的方式去動。冗餘度求解,就是從無窮多種都成立的手臂形狀裡,挑出那個同時也最能服務於你最在意的次要目標的那一種的配方。
從機械上說,這些多餘的動作活在所謂的零空間裡——也就是那一類只在原地折騰手臂、卻完全不挪動手的關節運動。冗餘度求解的做法是:先讓主任務把手的運動完全定下來,再用剩下的那點零空間自由去滿足次要目標。一條優雅、近乎人手的機器臂,正是這樣伸進堆滿雜物的架子的:手死死鎖定目標,手肘則禮貌地在所有擋路的東西之間穿來繞去。
一條七關節手臂必須端著一杯滿滿的咖啡、保持水平,越過一張堆得滿滿的檯面把它送過去。讓杯子保持直立又平穩,已經把手臂大部分姿態都定死了,但還剩一份多餘的自由。冗餘度求解就把這份自由花在把手肘甩到一邊,讓它絕不碰倒糖罐——而這一切的同時,杯子始終保持紋絲不動的水平。
多出來的關節讓手臂能去追第二個目標——這裡是躲開糖罐——而不打擾主任務。
當一條手臂的關節數比任務所需的還多時,就稱它對該任務是冗餘的——例如一條七關節手臂去做一件只需完全規定六個手部運動方向的活兒。