移動機器人與運動方式

完整約束與非完整約束

完整約束和非完整約束是限制機器人如何移動的兩類規則,二者的區別在於:這條規則能不能歸結為關於各部件位置的一種關係,還是只管住了速度——也就是機器人在每一刻該怎麼動。完整約束是一種可以純粹用各部件「在哪裡」來表述的規則:它把某些位置鎖在一起,因而真正縮小了機器人所能到達的位置的範圍。非完整約束則更微妙——它限制的是機器人的瞬時運動,卻不禁止任何目的地,於是機器人仍然哪兒都能到,只是永遠沒法筆直地朝那裡走過去。

購物車就是再貼切不過的寫照。商店裡沒有哪個位置是這輛車到不了的,所以它並不排除任何最終位置——可這輛車卻無法直接向旁邊平移;在每一刻,它都只被允許沿著輪子所指的方向滾動。要想橫著挪進一道縫裡,你只能前一下、後一下地來回挪,一邊扭動輪子,直到一點點蹭過去。這條「不准橫滑」的禁令就是一種非完整約束:一種對瞬時速度的限制,它永遠無法被改寫成一條只關乎位置的規則——而這正是它之所以「非完整」的原因。汽車和差速驅動機器人都活在同一條規則之下,這正是為什麼平行泊車要小心翼翼地跳上一支舞。

為什麼要費心區分這兩者?因為它告訴你路徑規劃會有多難,也告訴你什麼才算是完整約束的機器人。一台完整約束的機器人——比如全向驅動,它不受任何這種速度限制,能在任意一刻朝任意方向溜走——可以沿著最顯而易見的直線被一徑引向目標,因此為它規劃運動很容易。一台非完整約束的機器人雖然同樣能到達那個目標,卻必須在一路上遵守它那些瞬時的限制,於是它的規劃器得把一連串被允許的扭動和弧線串接起來。一台機器人面對的是哪一類約束,是工程師在決定該如何讓它動起來之前,第一件要弄清楚的事。

同樣要求向右移動一米,全向機器人徑直滑過去就是了,而差速驅動機器人卻必須先轉身、再向前開、再轉回來——兩者都能到達那個點,但只有一個能筆直地朝它走過去。

目的地相同,抵達它的自由度卻大不相同。

大致來說:完整約束的機器人能瞬時移動的方向數,與它的自由度數一樣多;非完整約束的機器人,其瞬時可走的方向,比它能到達的位置所暗示的要少。

又稱
holonomic constraintnonholonomic constraint完整性约束非完整性约束