運動與路徑規劃

完整與非完整運動

「完整」和「非完整」描述的是機器人能多自由地運動這一深層差別:它能不能立刻朝它所指向的每一個方向行進,還是說在任意某個瞬間總有一些方向被封住——儘管它仍能透過來回騰挪最終到達那裡。完整型機器人此刻可以隨心所欲地移動——向前、向側、斜著走,或原地轉圈——沒有哪個方向是禁區。非完整型機器人則做不到:在這一瞬間,某些運動根本無法實現,所以要往那些方向去,它必須先挪動、轉向。

最貼近生活的畫面是購物車與汽車之比。四個角都裝有萬向腳輪的購物車是完整型的——你可以讓它筆直地橫向滑進一個狹窄的縫裡,完全不必轉動車身。汽車則是非完整型的:它無法直接橫向滑進一個停車位,儘管那個車位顯然是能到達的,因為它的輪子只能前後滾動和轉向。這正是為什麼側方停車要來回扭動:汽車必須把一連串合法的前進與倒車弧線,湊成它無法直接做出的那個橫向平移。這種限制約束的是每個瞬間有哪些方向可用,而不是最終能到達哪些位置。

這種區別決定了規劃器必須如何工作。對完整型機器人,規劃器往往可以把機器當作一個能自由漂浮的點來畫路線,因為它能沿任意曲折前進。對非完整型機器人,規劃器必須在每一步都尊重那條運動規則——只生成機器真正能描出的路徑,裡面滿是它的輪子所允許的弧線和倒車騰挪——這讓規劃真正變得更難。這些標籤背後更深的含義關乎一種計數:當一個機器人在同一時刻能直接指揮的方向數,等於它獨立的位形方式總數(即它的自由度)時,它就是完整型的;當它能指揮的方向數少於這個總數時,它就是非完整型的。

一台裝有麥克納姆輪的全向機器人,可以筆直地橫著「螃蟹步」穿過門口(完整型);而同樣寬度的差速驅動清潔機,則必須改為原地轉身、再以一道小弧線向前滾動,才能到達同一個門口(非完整型)。

同一個縫隙,兩套運動規則:直接滑進去,還是扭著挪進去。

粗略地說:完整意味著可控的運動方向數與機器人的自由度數相等;非完整意味著可控方向數少於自由度數,儘管所有位置仍然都能到達。

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