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