Modern Robotics:机器人的构型空间
Modern Robotics機器人的構型空間
機器人的構型(configuration)是一個機器人所有點的位置。描述機器人構型的最小實數坐標的個數n是機器人的自由度的數目。這個n維空間包括著機器人所有可能的構型(configurations)稱為機器人的構型空間(configuration space,C-space)。機器人的構型可以由它的構型空間里的一個點描述。
機器人的自由度
機器人常見的關節如下圖所示
旋轉關節(revolute joint,R),平移關節(prismatic joint,P),螺旋關節(Helical joint,H)都是只有一個自由度。關節也可以有多個自由度,例如圓柱關節(cylindrical joint ,C)有兩個自由度,萬向節(Universal joint,U)有兩個自由度,球形關節(spherical joint,S)有三個關節,其功能與人體的肩關節很像。
Gru¨bler′sGr\ddot {\text u}bler'sGru¨bler′s公式
考察一個又NNN個連桿構成的機械系統,地面也看做一個連桿。假設JJJ是關節的數量,mmm是剛體的自由度(對于平面剛體m=3m=3m=3,對于空間剛體m=6m=6m=6),fif_ifi?為第iii個關節具有的自由度數目,cic_ici?是第iii個關節具有的約束數目,這里對所有iii都有fi+ci=mf_i+c_i=mfi?+ci?=m。那么Gru¨bler′sGr\ddot {\text u}bler'sGru¨bler′s計算機器人的自由度數目為
dof=m(N?1)?∑i=1Jci=m(N?1)?∑i=1J(m?fi)=m(N?1?J)+∑i=1Jfi(2.4)dof=m(N-1)-\sum_{i=1}^J c_i\\ =m(N-1)-\sum_{i=1}^J (m-f_i)\\ =m(N-1-J)+\sum_{i=1}^J f_i \tag{2.4} dof=m(N?1)?i=1∑J?ci?=m(N?1)?i=1∑J?(m?fi?)=m(N?1?J)+i=1∑J?fi?(2.4)
這個公式成立的條件是所有的關節約束是獨立的。
下面是計算該公式的C語言模塊。
/** *@brief Description:使用GrublersFormula公式計算機構的自由度. *@param[in] N 連桿的數目(包括大地). *@param[in] m 連桿(剛體)的自由度(平面剛體m=3,空間剛體m=6). *@param[in] J 關節的數量. *@param[in] f 數組,每個關節的自由度. *@return 返回輸入該機構的自由度. *@note: 各個關節的約束是獨立的才能使用該函數計算機構的自由度. *@waring: */ int GrublersFormula(int m, int N, int J, int *f) {int i;int dof;int c = 0;for (i=1;i<=J;i++){//計算自由度的約束c = c + f[i-1];}dof = m*(N - 1 - J) + c;return dof; }Example 2.4使用Gru¨bler′sGr\ddot {\text u}bler'sGru¨bler′s公式計算下面的平面機構自由度
這些連桿是平面剛體,因此m=3
(a) dof=3?(5?1?4)+4=4dof=3*(5-1-4)+4=4dof=3?(5?1?4)+4=4
(b)dof=3?(5?1?5)+5=2dof=3*(5-1-5)+5=2dof=3?(5?1?5)+5=2
?dof=3?(6?1?7)+7=1dof=3*(6-1-7)+7=1dof=3?(6?1?7)+7=1
(d)dof=3?(6?1?7)+7=1dof=3*(6-1-7)+7=1dof=3?(6?1?7)+7=1
Example2.5 計算如下圖有重疊關節的平面機構自由度。
大連桿左端三個連桿連接于一點,可以各自轉動。關節的定義為兩個連桿的連接,因此這不能算作一個關節,而是兩個關節。因此自由度為
dof=3?(8?1?9)+9=3dof=3*(8-1-9)+9=3 dof=3?(8?1?9)+9=3
構型空間拓撲
一個點在球面上運動,這個點的構型空間(C-space)是2維的,因為可以用兩個坐標表示,緯度和經度。一個點在平面上運動,具有一個2維構型空間(C-space),有坐標(x,y)。一個平面和一個球面都是2維,但是它們的形狀不同,平面無限延伸,而球面互相連在一起。一個橢圓的美國足球與球面有類似的形狀,它們具有相等的拓撲。例如一條線段可以把它彎曲成一個開口的半圓,一個開口的半圓也可以直為一條線段,因此它們由相等的拓撲結構。不那么嚴格地,如果一個空間可以不進行粘合或剪切,通過連續變形得到另一個空間,我們說這兩個空間具有相等的拓撲。
圓數學上寫為SSS或$ S^1,是1維“球”,直線寫為,是1維“球”,直線寫為,是1維“球”,直線寫為\mathbb E或或或\mathbb E^1,意味1維歐拉空間,因為一個點在,意味1維歐拉空間,因為一個點在,意味1維歐拉空間,因為一個點在\mathbb E^1上可以寫成一個實數,因此通常寫為上可以寫成一個實數,因此通常寫為上可以寫成一個實數,因此通常寫為\mathbb R或或或\mathbb R^1$。
拓撲是空間的屬性,與我們選擇則怎樣的坐標來描述是無關的。例如一個圓,確定一個零角度后,可以選擇一個角度θ\thetaθ來描述,也可以在圓心建立一個坐標系,用坐標(x,y)和約束x2+y2=1x^2+y^2=1x2+y2=1.無論選擇怎樣的坐標來描述,該空間沒有發生改變。
一些C-space可以表示成兩個或多個低維的笛卡爾積。例如一個平面剛體的C-space可以寫成R2×S1\mathbb R^2\times S^1R2×S1,因為其構型可以用坐標(x,y)表示R2\mathbb R^2R2,一個角度θ\thetaθ表示S1S^1S1,這兩個坐標串在一起表示剛體構型。
構型空間表示
如下圖是四個拓撲不同的二維C-space及表示
選擇nnn個坐標或參數表示一個nnn維空間叫做空間的顯式參數化。
使用緯度和經度兩個坐標表示球面,在兩個極點會出現奇異。解決奇異的方法有:
- 使用多個坐標圖表示該空間。每個坐標圖只是空間一部分的顯式參數化,在每個坐標圖都沒有奇異性。多個坐標圖重疊覆蓋要表示的空間,當在某個坐標圖出現奇異時,切換到另一個坐標圖表示。
- 使用隱式表示而不是顯式參數化。一個隱式表示把nnn維空間看成是內含與大于n維的空間的歐拉空間。例如2維球面可以看成是包含于3維歐拉空間的一個面。一個隱式表示使用的坐標數高于該空間的維度,當需要約束冗余的自由度。例如使用(x,y,z)(x,y,z)(x,y,z)和一個約束x2+y2+z2=1x^2+y^2+z^2=1x2+y2+z2=1表示單位球面。
在機器人學里通常使用隱式表示,例如使用9個數值,6個約束,表示剛體在空間的3個方向自由度,該表示稱旋轉矩陣.
構型和速度約束
一般的機器人包含一個或多個閉環,構型空間可以通過一個列向量θ=[θ1,...,θ2]T∈R2\mathbf \theta=[\theta _1,...,\theta_2]^T\in\mathbb R^2θ=[θ1?,...,θ2?]T∈R2和閉環方程隱式表示
g(θ)=[g1(θ1,...,θn)?gk(θ1,...,θn)]=0,(2.5)g(\mathbf \theta)= \left [ \begin{matrix} g_1(\theta_1,...,\theta_n)\\ \vdots\\ g_k(\theta_1,...,\theta_n)\\ \end{matrix}\right] =0,\tag{2.5} g(θ)=????g1?(θ1?,...,θn?)?gk?(θ1?,...,θn?)?????=0,(2.5)
閉環方程是kkk個獨立的方程,k≤nk\le nk≤n.這樣的約束稱為完整約束(holomomic contraints).C-space可以看成一個包含于Rn\mathbb R^nRn中的n?kn-kn?k維的面.
假設θ\thetaθ是關于時間的軌跡,兩邊求導有
ddtg(θ(t))=0(2.6)\fracze8trgl8bvbq{dt}g(\mathbf \theta (t))=0\tag{2.6} dtd?g(θ(t))=0(2.6)
因此
[?g1(θ)?θ1θ˙1+...+?g1(θ)?θnθ˙n??gk(θ)?θ1θ˙1+...+?gk(θ)?θnθ˙n]=0\left [ \begin{matrix} \frac{\partial g_1 (\theta)}{\partial \theta _1}\dot \theta _1+...+\frac{\partial g_1 (\theta)}{\partial \theta _n}\dot \theta _n\\ \vdots\\ \frac{\partial g_k (\theta)}{\partial \theta _1}\dot \theta _1+...+\frac{\partial g_k (\theta)}{\partial \theta _n}\dot \theta _n\\ \end{matrix}\right] =0 ??????θ1??g1?(θ)?θ˙1?+...+?θn??g1?(θ)?θ˙n???θ1??gk?(θ)?θ˙1?+...+?θn??gk?(θ)?θ˙n???????=0
即
[?g1(θ)?θ1θ˙1…?g1(θ)?θnθ˙n????gk(θ)?θ1θ˙1…?gk(θ)?θnθ˙n][θ˙1?θ˙n]=0\left [ \begin{matrix} \frac{\partial g_1 (\theta)}{\partial \theta _1}\dot \theta _1& \dots & \frac{\partial g_1 (\theta)}{\partial \theta _n}\dot \theta _n \\ \vdots & \ddots &\vdots \\ \frac{\partial g_k (\theta)}{\partial \theta _1}\dot \theta _1& \dots & \frac{\partial g_k (\theta)}{\partial \theta _n}\dot \theta _n\\ \end{matrix}\right] \left [ \begin{matrix} \dot \theta_1\\ \vdots \\ \dot \theta_n\\ \end{matrix}\right] =0 ??????θ1??g1?(θ)?θ˙1???θ1??gk?(θ)?θ˙1??…?…??θn??g1?(θ)?θ˙n???θn??gk?(θ)?θ˙n???????????θ˙1??θ˙n??????=0
可以繼續寫成
?g(θ)?θθ˙=0(2.7)\frac{\partial g(\theta)}{\partial \theta}\dot \theta=0\tag{2.7} ?θ?g(θ)?θ˙=0(2.7)
這里?g(θ)?θ∈Rk×n\frac{\partial g(\theta)}{\partial \theta}\in\mathbb R^{k\times n}?θ?g(θ)?∈Rk×n,θ,θ˙∈Rn\theta,\dot {\theta}\in \mathbb R^nθ,θ˙∈Rn,又可以寫成
A(θ)θ˙=0(2.8)A(\mathbf \theta)\dot \theta=0 \tag{2.8} A(θ)θ˙=0(2.8)
這里A(θ)∈Rk×nA(\theta)\in\mathbb R^{k\times n}A(θ)∈Rk×n.速度的這種約束形式稱為Pfaffian約束。g(θ)g(\theta)g(θ)可以由A(θ)A(\theta)A(θ)積分得到,因此完整約束g(θ)g(\theta)g(θ)又稱為積分約束–速度約束可以積分得到構型約束。對于不能通過速度約束積分得到構型約束的Pfaffian約束稱為非完整約束.
任務空間和工作空間
機器人的任務空間是機器人任務自然表達的一個空間(與機器人的構型空間無關)。機器人的工作空間是機器人末端能夠到達的構型。
小結
- 一個機器人由一系列關節連接的連桿構成。連桿通常建模為剛體。末端執行器,例如抓手常常會固定到機器人的連桿上。驅動器傳遞力或扭矩給關節,驅動機器人運動。
- 最常用的單自由度關節是旋轉關節,可以繞關節軸線轉動,以及平移關節,可以沿關節軸線平移。圓柱關節有兩個自由度,由一個旋轉關節和移動關節串聯組成,萬向節由兩個正交的旋轉關節組成,球形關節有三個自由度,其功能與人的肩關節相似。
- 一個剛體的構型其所有點的位置。在平面運動的剛體,需要3個獨立參數表示其構型。在空間運動的剛體需要6個參數表示其構型。
- 一個機器人的構型是其所有連桿的構型。機器人的構型空間是其一系列所有可能的構型。機器人構型空間的維數是其自由度數目。
- 機器人自由度數目可以通過Gru¨bler′sGr\ddot ubler'sGru¨bler′s公式計算
dof=m(N?1?J)+∑i=1Jfi\text {dof}=m(N-1-J)+\sum _{i=1}^J f_i dof=m(N?1?J)+i=1∑J?fi?
對于平面機構m=3m=3m=3,空間機構m=6m=6m=6,NNN是連桿的數目(包括地面連桿),JJJ是關節數目,fif_ifi?是第iii個關節的自由度數目。如果關節的約束不是相互獨立,Gru¨bler′sGr\ddot ubler'sGru¨bler′s提供的是自由度數目的一個下界。
- 機器人的C-space可以顯式參數化或隱式參數化。對于nnn個自由度的機器人,顯示參數化至少使用nnn個坐標,隱式表示則需要mmm個坐標,m≥nm\ge nm≥n,這mmm個坐標受m?nm-nm?n個約束方程約束。使用隱式表示,機器人的C-space可以看做是包含于高維數的mmm維空間的一個nnn維表面。
- nnn個自由度的機器人的C-space,結構的一個或多個閉環約束,可以隱式地使用kkk個閉環方程表示,其形如g(θ)=0g(\theta)=0g(θ)=0,θ∈Rm\theta \in\mathbb R^mθ∈Rm,且g:Rm→Rkg:\mathbb R^m\to \mathbb R^kg:Rm→Rk。這樣的約束方程稱為完整約束。假設θ\thetaθ隨時間ttt變化,完整約束g(θ(t))g(\theta(t))g(θ(t))對ttt微分得到
?g(θ)?θθ˙=0,\frac{\partial g(\theta)}{\partial \theta}\dot \theta=0, ?θ?g(θ)?θ˙=0,
這里?g(θ)/?θ\partial g(\theta)/\partial \theta?g(θ)/?θ是k×mk\times mk×m的矩陣。
- 機器人的運動可以通過速度約束的形式表示
A(θ)θ˙=0,A(\theta)\dot \theta =0, A(θ)θ˙=0,
這A(θ)A(\theta)A(θ)是k×mk\times mk×m矩陣,不能表示為某個函數g(θ)g(\theta)g(θ)的導數,即不存在a任何的g(θ),g:Rm→Rkg(\theta),g:\mathbb R^m \to R^kg(θ),g:Rm→Rk,使得
A(θ)=?g(θ)?θ.A(\theta)=\frac{\partial g(\theta)}{\partial \theta}. A(θ)=?θ?g(θ)?.
這樣的約束稱為非完整約束,或不可積約束。這些約束減少可行速度的維度,單數不會減少可達C-space的維度。在動量守恒或滾動而不滑動的機器人系統中會出現非完整約束。
- 機器人的任務空間是機器人任務自然表達的一個空間(與機器人的構型空間無關)。機器人的工作空間是機器人末端能夠到達的構型。
參考文獻
Kenvin M. Lynch , Frank C. Park, Modern Robotics Mechanics,Planning , and Control. May 3, 2017
總結
以上是生活随笔為你收集整理的Modern Robotics:机器人的构型空间的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 正则用法_Java正则用法
- 下一篇: LTE无线网络优化岗位及工作任务分析