標籤:

機器人運動規劃中的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): (x,y,	heta)^T
  • 無人機,它的 C-Space 就是特殊歐式群 SE(3): (x,y,z,roll,pitch,yaw)^T
  • 六軸機械臂,它的 C-Space 就是六維向量空間 mathbb{R}^6,也就是人們常說的關節空間 : (	heta_1, 	heta_2, 	heta_3, 	heta_4, 	heta_5, 	heta_6)^T

簡單的說,我們可以用一組向量來完全描述機器人的空間狀態,所有這組向量的集合便是 C-Space (註:集合 + 特定運算 = 空間,對於機器人,特定運算就是指不同 Configurations 之間的變換動作)。

直觀地看看吧

對於平面機器人,簡單地說,C-Space 就是以機器人的尺寸為基礎,對 Work-Space 進行一定的膨脹即可得到。複雜點的形狀,可以用閔科夫斯基和(Minkowski Sum)來獲取。

而對於二自由度機械臂,其 C-Space 就不再是簡單地膨脹變化了:

Delta 二軸機械臂 C-Space (左)與 Work-Space (右),出處見Lumelsky et. al., 1993

當然,上圖的 C-Space 也不完全正確,實際上應該是下面這樣的:

Delta 圓環

為什麼

最後,回答問題,為什麼不在笛卡爾空間(我覺得題主想表達的是工作空間 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 中,機器人就是一個點(向量):

Delta 用 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這本書讀一遍,不做實驗,是大概率讀不太懂得。如果你不希望把這本書讀成&,不妨在第一遍沒搞懂一些概念的時候先跳過,後面再來迭代(本人資質比較愚鈍,目前是第三遍看這本書,才對一些比較抽象的諸如manifold有了一些認識)。

當然,如果你是考慮進入motion planning學術圈,把planning相關的點搞清楚就很重要了,畢竟寫文章要寫出一些通用的學術術語才能夠凸顯自己的專業性。


推薦閱讀:

TAG:機器人 |