機器人運動規劃中的C space怎樣理解?為什麼不直接在笛卡爾坐標系下運算呢?
很高興能遇到做運動規劃(Motion Planning)的小夥伴,也希望以後能有更多小夥伴入坑,畢竟這個方向未來大有可為。
和 @Pickles Husky 一樣,我也一直是推薦入門的小夥伴去看《Principles of Robot Motion - Theory, Algorithm and Implementation》這本書。不因為其他,就是因為它把 Configuration Space (C-Space) 放在了足夠重要的位置上,而不是像其他材料一樣完全脫離機器人,一上來就講 RRT、PRM。
在我的理解里,C-Space 是機器人運動規劃的理論基礎,很多問題必須結合機器人的具體情況,才可能得到比較好的規劃結果。
先講定義:
構形空間(或者其他各種譯名,如:配置空間、構位空間等),顧名思義就是與機器人構形相關的空間:
- 平面機器人,它的 C-Space 就是特殊歐式群 SE(2): ;
- 無人機,它的 C-Space 就是特殊歐式群 SE(3): ;
- 六軸機械臂,它的 C-Space 就是六維向量空間 ,也就是人們常說的關節空間 :
簡單的說,我們可以用一組向量來完全描述機器人的空間狀態,所有這組向量的集合便是 C-Space (註:集合 + 特定運算 = 空間,對於機器人,特定運算就是指不同 Configurations 之間的變換動作)。
直觀地看看吧:
對於平面機器人,簡單地說,C-Space 就是以機器人的尺寸為基礎,對 Work-Space 進行一定的膨脹即可得到。複雜點的形狀,可以用閔科夫斯基和(Minkowski Sum)來獲取。
而對於二自由度機械臂,其 C-Space 就不再是簡單地膨脹變化了:
二軸機械臂 C-Space (左)與 Work-Space (右),出處見Lumelsky et. al., 1993
當然,上圖的 C-Space 也不完全正確,實際上應該是下面這樣的:
圓環面
為什麼:
最後,回答問題,為什麼不在笛卡爾空間(我覺得題主想表達的是工作空間 Work-Space)里做規劃。
- Work-Space 中有些場景可能規劃不出;
從 C-Space 到 Work-Space 的映射是運動學正解;從 Work-Space 到 C-Space 的映射是運動學逆解。
正解:滿射,在 C-Space 中規劃的結果,肯定可以正確執行;
逆解:多解、奇異點等,在 W-Space 中規劃的結果可能無法執行(不知道選哪個解、奇異點無法經過等)。
在 C-Space 中設計規劃演算法,才可能保證在有解的前提下一定能找到解。
所以,對於機械臂而言,一切工作理論上都可以只在 C-Space 中完成。Work-Space 是給非專業人士準備的。
- 大多數通用規劃演算法都是面向 Point Agent 的;
目前各種通用規劃演算法都是針對點狀機器人(Point Agent)設計的,如 A*, RRT 等。如果要調用一些通用運動規劃庫,就應該先把機器人描述成一個點。這比為每個機器人單獨設計規劃演算法會便利很多。
而在 C-Space 中,機器人就是一個點(向量):
用 A* 在 C-Space 中對機械臂進行規劃
當然,並不是任何時候都非得在 C-Space 中進行規劃。對於一些問題,在 Work-Space 規劃會更容易找到解,這部分工作尚未發表,之後有機會我會再更新的。
簡單答幾點,肯定不全面,還等大神們詳答
1、一個首先我們先理解C space是configuration space的縮寫,一般指運動機構直接輸出的位置量,例如一般的機械臂,C space就是所有關節角度位置的空間。例如一個機械臂只有兩個旋轉關節,那它的C space就是二維的線性空間,寫作R^2,每一個維度各代表一個關節所處的位置。與C space相對應的就是工作空間work space,我們這裡縮寫為W space,就是機器人與我們所處的三維空間。當然這不是嚴格的定義,題主如果想深入了解的話可以看Principles of Robot Motion - Theory, Algorithm and Implementation這本書,運動規劃的入門書。
2、使用C space進行運動規劃主要有幾個優點:
第一,運動規劃的目的是求解一條機器人可執行的運動軌跡,而機構執行動作是在C space上進行的,比如你控制機械臂運動的方法是直接控制關節電機的角度,而不是直接控制關節的位置(就算需要控制關節在W space的位置,也需要通過控制關節電機角度來間接控制)。自然的講,在C space上規划出的線路非常方便直接執行,而不需要進行任何轉換。
第二,很多機構的運動限制是在C space上描述的,比如關節電機的最大角度、關節電機的最大角速度等,在C space上進行規劃也方便考慮這些限制。
第三,我個人認為比較重要的一點,是C space與W space在互相轉換時的不對稱。C-&>W轉換是機構正運動學(forward kinematics),一般機構(機械臂類似的機構,不討論non-holonomic的情況),正運動學存在解析解且解唯一,實現中非常容易計算且計算速度非常快。舉例來看,對於一個機械臂,在各個關節角度確定的時候,整個機械臂位置是完全確定且很容易計算的。W-&>C轉換是機構逆運動學(inverse kinematics),給定空間中機構末端位置求關節角度。逆運動學對於簡單的機械臂類似機構也是很難的問題,不一定存在解(比如你後背上的某些地方你的手就抓不到),存在解也不一定唯一(你抓面前的點有多種手臂姿勢可以抓),還存在奇點等情況,到現在學術界認為逆運動學問題也沒有完全解決。總的來說C space與W space在互相轉換時難度完全不一樣。如果你在求解軌跡是需要同時考慮C space與W space,當然是傾向於在C space上進行求解,需要時轉換到W space,而不是做難度大得多的相反過程。
最後,運動規劃是門機器人學下屬的小學科,很多東西很難在知乎上用幾句話解釋清楚,推薦題主看運動規劃的入門書Principles of Robot Motion - Theory, Algorithm and Implementation,或者類似的中英文書都可以,熟悉基本概念後帶著問題看書效果很好。
相當於對work space和機器人的shape做了個Minkowski sum,然後你就可以把機器人抽象成一個質點了,大大減少了問題複雜度。
因為planning說一門科學,一門科學需要有其自身完備的數學體系,而configuration space是可以用來統一描述planning問題。和 @fly qq 的看法不太一樣,我認為configuration space恰恰是用來剝離實際機器人系統的,因為在configuration space裡面看都是一個點。這樣在configuration space裡面設計的planning演算法就不再是局限於某一機器人系統的planning演算法,而是理論上可以擴展到任意機器人系統,比如在移動機器人領域的常見的potential filed演算法(Principles of Robot Motion專門有一個章節來介紹potential field),如果實在configuration sapce來設計,那麼理論上也是可以擴展到DOF很高的機器人系統上的。
但是是不是一定要掌握了configuration space的概念再去做實際機器人系統的motion planning?我的回答是:不一定。完全可以先應用,再理解,迭代的去理解、實驗、反思planning裡面遇到的每一個知識點。Principles of Robot Motion這本書讀一遍,不做實驗,是大概率讀不太懂得。如果你不希望把這本書讀成&
當然,如果你是考慮進入motion planning學術圈,把planning相關的點搞清楚就很重要了,畢竟寫文章要寫出一些通用的學術術語才能夠凸顯自己的專業性。
推薦閱讀:
TAG:機器人 |