運動與路徑規劃

自由空間與障礙空間

一旦你把機器人的各種姿態想像成一張地圖(也就是位形空間),這張地圖自然就裂成兩塊區域。自由空間是所有那些機器人沒碰到任何不該碰的東西的姿態的集合——它乾乾淨淨地待在世界裡,沒有和牆、桌子、或它自己的身體重疊。障礙空間則是剩下的一切:那些被禁止的姿態,因為機器人若真擺成那樣,它身上某個部位就會卡進障礙物裡,或者跟自己纏在一起。於是,真實世界裡那條把「允許」和「不允許」分開的界線,原封不動地重現,直接畫到了這張姿態地圖上。

這樣切分 C空間的意義在於:規劃一段安全的運動,變成了一道純粹的幾何題——為那個點找一條全程都待在自由空間裡、絕不闖進障礙空間的路線。有一個出人意料卻很重要的事實:障礙物投在地圖上的「影子」,看起來跟障礙物本身一點都不像。房間裡一根小小的圓柱,可能在 C空間裡挖出一大塊形狀古怪的禁區,因為機器人要避開這根柱子的,是它的整副身軀——而不只是一個點——而且在每一種姿態下都得避開。正是這種變形,使得規劃器要在 C空間裡思考:在那裡,禁區只不過是一塊要繞開的區域,無論真實世界裡的碰撞幾何曾經有多奇怪。

想像一臺又寬的清潔機器人待在走廊裡。它停在中間空地的那些姿態屬於自由空間;它緊貼著牆、輪廓會嵌進牆面的那些姿態則屬於障礙空間。地圖上那條分界線,距離每面牆都留出了機器人一個半徑的餘地,而不是正好貼在牆上。

禁區會按機器人自身的尺寸「脹大」——障礙物在 C空間裡的影子,比障礙物本身更大。

自由空間常寫作「C-free」。規劃器的全部任務,就是找出一條從起點到目標、始終留在 C-free 之內的路徑。

又稱
free spaceC-freeobstacle space自由空间障碍空间