機(jī)器人建模:機(jī)械臂位姿描述及計(jì)算詳解

1 什么是工業(yè)機(jī)器人

? ? ? ?機(jī)械臂(又稱操作臂)扬卷,實(shí)際上就是機(jī)器人的一種颤介,機(jī)器人學(xué)稱之為工業(yè)機(jī)器人。對于操作臂而言跟匆,在建模過程中主要關(guān)心的是末端執(zhí)行器的位置和它的姿態(tài)异袄,確保在完成工業(yè)上的某些工藝?yán)绾附拥龋軌驕?zhǔn)確的描述并控制機(jī)器人到達(dá)需求位置玛臂。


2 怎么描述機(jī)械臂的“位姿”烤蜕?

? ? ? ?機(jī)械臂末端執(zhí)行器的位姿,指的是它的“位置”和“姿態(tài)”迹冤。位置指的是“位移”(筆者認(rèn)為讽营,主要是為了描述機(jī)械臂的方向與距離),而姿態(tài)指的實(shí)際上是“旋轉(zhuǎn)”泡徙。我們用三維空間里的一個位移和一個旋轉(zhuǎn)橱鹏,就可以清楚描述機(jī)械臂的位姿。實(shí)際上堪藐,只要是剛體莉兰,它的位姿就可以嘗試用這種方式來描述。


? ? ? ?描述位姿的方式有很多種礁竞,以下描述位姿的方式是齊次變換方法

2.1 位置

? ? ? ?位移和旋轉(zhuǎn)都需要一個參考糖荒。這個參考可以放在工業(yè)機(jī)器人的“根部”位置,設(shè)置一個三維笛卡爾坐標(biāo)系模捂,我們把它叫做參考系A(注意捶朵,都是“右手系”)蜘矢。也就是說,我們可以在參考系A下泉孩,使用一個三維坐標(biāo)來描述一個空間點(diǎn)的位置硼端。我們把這個坐標(biāo)用向量來描述并淋,稱之為位置矢量^A\vec{p}寓搬。

? ??????????????????????????????????????????????????????????????^A\vec{p} = \begin{bmatrix}^Ap_x\\^Ap_y\\^Ap_z\\\end{bmatrix}

? ? ? ?左上標(biāo)“A”表示是在A參考系下。位置向量^Ap是從參考系A的原點(diǎn)O_A起源的一個矢量县耽,它在參考系上的三個分量就是空間中某個點(diǎn)的在該參考系下坐標(biāo)句喷。

? ? ? ?因此,我們選取機(jī)械臂末端的執(zhí)行器上的某個點(diǎn)兔毙,取名為O_B唾琼。那么,O_B點(diǎn)跟隨著機(jī)械臂一起移動澎剥,我們就可以用O_B點(diǎn)在參考系A中的位置矢量锡溯,描述出工業(yè)機(jī)器人的位置。這個向量我們稱之為^A\vec{p}_{B_{O}}哑姚。

? ? ? ?左上標(biāo)的A仍然表示在參考系A中祭饭,這里的B和O將在后面解釋⌒鹆浚總之倡蝙,它就是指O_B這個點(diǎn)在參考系A中的位置矢量。


2.2 姿態(tài)

? ? ? ?姿態(tài)意味著“旋轉(zhuǎn)”绞佩。與2.1一樣寺鸥,我們把選定的O_B點(diǎn)視作另一個參考系的原點(diǎn),重新建立一個新的坐標(biāo)系B品山,我們稱之為工作坐標(biāo)系胆建。它是末端執(zhí)行器上的一個坐標(biāo)系,隨著機(jī)械臂的運(yùn)動肘交,它與末端執(zhí)行器的相對位置保持不變笆载。

? ? ? ?位置矢量^A\vec{p}_{B_{O}}的含義便是:工作坐標(biāo)系B中的O點(diǎn)(也叫O_B),在參考坐標(biāo)系A(chǔ)中的位置矢量酸些。

? ? ? ?既然是描述“旋轉(zhuǎn)”宰译,那么我們應(yīng)該拋棄“位置”這個概念。也就是說魄懂,我們在研究姿態(tài)的時候沿侈,可以先把工作坐標(biāo)系整個平移到參考坐標(biāo)系,讓它們的原點(diǎn)重合市栗,使得位置向量^A\vec{p}_{B_{O}}變成0缀拭。這個時候咳短,我們只關(guān)心該如何使用參考系A(chǔ)來描述參考系B。

? ? ? ?這里我們只需要描述清楚工作參考系B三個向量就可以實(shí)現(xiàn)——這三個向量是工作參考系B的主向量蛛淋,也就是沿著參考系B的三個軸的正向咙好、長度為1的單位向量:

? ??????????????????\begin{bmatrix}\vec{x}_B&\vec{y}_B&\vec{z}_B\end{bmatrix},也就是\begin{bmatrix}1&0&0 \\0&1&0\\0&0&1\\\end{bmatrix}(這里的每個向量視為列向量)

? ? ? ?我們把這個三個向量褐荷,用參考坐標(biāo)系A(chǔ)重新描述一遍勾效,也就是說,我們把系B的三個主向量放到系A(chǔ)中叛甫,分別把每個主向量分解到系A(chǔ)的三個軸上层宫,重新獲得三個新的坐標(biāo)值:\begin{bmatrix}^A\vec{x}_B&^A\vec{y}_B&^A\vec{z}_B\end{bmatrix}。這里A的含義是指把這個向量用系A(chǔ)來描述其监,B的含義是指它是系B中的某個向量萌腿,這里指的是系B的三個主向量。這里我們會獲得一個矩陣抖苦,我們給它起名叫做旋轉(zhuǎn)矩陣^AR_B毁菱。

? ? ? ?這個矩陣肯定也是一個3\times 3的矩陣,它長什么樣子呢锌历?

? ? ? ?我們先描述一些簡單的情況贮庞。首先,如果系A(chǔ)和系B完全一致辩涝,三個軸的方向完全一樣贸伐,那么系B的三個主向量的坐標(biāo)在A中沒有任何變化,則有:

? ??????????????????????????????????????????????????????^AR_B=\begin{bmatrix}1&0&0 \\0&1&0\\0&0&1\\\end{bmatrix}

? ? ? ?如果此時怔揩,系B繞著它的z軸旋轉(zhuǎn)了逆時針一個45度角捉邢。那么,B的^A\vec{x}_B向量在系A(chǔ)中原先的坐標(biāo)(1, 0,0)變成了系A(chǔ)中的(\sqrt2,\sqrt 2,0)商膊;B的^A\vec{y}_B向量將會從原先的?(0,1,0)變成系A(chǔ)中的(-\sqrt2,\sqrt2,0)伏伐;而B的^A\vec{z}_B沒有任何變化(你可以理解為這個軸上沒有“旋轉(zhuǎn)信息”),還是(0,0,1)晕拆。因此藐翎,旋轉(zhuǎn)矩陣為:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?^AR_B=\begin{bmatrix}\sqrt2/2&-\sqrt2/2&0 \\\sqrt2/2&\sqrt2/2&0\\0&0&1\\\end{bmatrix}

? ? ? ?目前現(xiàn)有的教科書上的,描述繞著單獨(dú)軸旋轉(zhuǎn)旋轉(zhuǎn)矩陣就是這么來的实幕。然而吝镣,絕大多數(shù)沒有說清楚的是,它們給出的公式的角度昆庇,實(shí)際上是逆時針旋轉(zhuǎn)得到的末贾。以下就是教科書給出的系B如果和系A(chǔ)在一開始是重合的,此時系B只關(guān)于z軸旋轉(zhuǎn)一個固定角度的旋轉(zhuǎn)矩陣的公式:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????? ? ? ?R(z,\theta )=\begin{bmatrix}\cos\theta &-\sin\theta &0 \\\sin\theta &\cos\theta &0\\0&0&1\\\end{bmatrix}

? ? ? ?旋轉(zhuǎn)矩陣就是我們想要的“旋轉(zhuǎn)”的信息整吆」澳欤或者說“姿態(tài)”辉川。

? ? ? ?獲得了旋轉(zhuǎn)矩陣之后,該怎么使用呢拴测?或者說乓旗,怎么把系B中的任意一個向量用系A(chǔ)來描述呢?教科書上給你了一個看上去簡單易懂的公式:^A\vec p = ^AR_B\times ^B\vec p集索,獲得了旋轉(zhuǎn)矩陣后屿愚,你就可以通過它來輕松的把在系B中描述的向量轉(zhuǎn)化成系A(chǔ)中的坐標(biāo)。


? ? ? ?但是為什么旋轉(zhuǎn)矩陣是左乘抄谐?為什么乘以旋轉(zhuǎn)矩陣就能轉(zhuǎn)換了渺鹦?以下是筆者的解釋(可以不用看):

? ? ? ?首先我們先假設(shè)在一個空間中有一個任意向量\vec p,它可以先用系B來描述一次蛹含,獲得它在系B中的三個坐標(biāo)(a,b,c)。這個P我們使用列向量^B\vec p=[a,b,c]^T來表示塞颁。

? ? ? ?它在B中的三個坐標(biāo)意味著什么浦箱?相信我不用解釋大家都知道。我們把^B\vec p分解到系B三根軸上的三個向量祠锣,它們的模就是坐標(biāo)酷窥。換個角度理解,我們可以認(rèn)為^B\vec p是由系B的三個主向量的“線性組合”以及平行四邊形法則來合成的一個矢量伴网,也就是:

? ? ? ? ? ? ? ? ? ? ??????????????????????????????????????^B\vec p=a\vec x_B+b\vec y_B+c\vec z_B

? ? ? ?\vec{x}_B,\vec{y}_B,\vec{z}_B這三個列向量蓬推,本質(zhì)上就是^A\vec{x}_B,^A\vec{y}_B,^A\vec{z}_B,只是描述方法不同澡腾。如果我們換用\begin{bmatrix}^A\vec{x}_B&^A\vec{y}_B&^A\vec{z}_B\end{bmatrix}三個列向量來線性組合獲得\vec p沸伏,至少(a,b,c)這三個系數(shù)是不會變化的,因?yàn)樗谋举|(zhì)就是沿著原來的方向伸長或者縮短向量动分。

? ? ? ?所以毅糟,列向量^B\vec p里面包含的三個“系數(shù)”,如果恰好左乘旋轉(zhuǎn)矩陣澜公,那么這個表達(dá)式所代表的線性組合就是:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??^AR_B·^B\vec p=a^A\vec x_B+b^A\vec y_B+c^A\vec z_B=^A\vec p_B=^A\vec p


3 齊次變換矩陣

? ? ? ?其實(shí)到這里姆另,位姿就已經(jīng)描述清楚了。當(dāng)然坟乾,旋轉(zhuǎn)矩陣在線性代數(shù)中是一種正交矩陣迹辐,還有一些很特別的性質(zhì),在這里就不多贅述了甚侣。不過為了同時描述位姿明吩,以及方便計(jì)算,我們定義了一個新的矩陣:齊次變換矩陣渺绒。

? ? ? ?首先贺喝,我們把位置向量\vec p視為一個列向量菱鸥,并在它的末端添加一個1。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????? ? ?^B\vec p = \begin{bmatrix} ^B\vec r\\1 \end{bmatrix}

? ? ? ?^B\vec r是指系B從原點(diǎn)指向某點(diǎn)的一個向量躏鱼,其大小為3\times 1氮采,因此這個位置向量變成了4\times1。然后我們定義齊次變換矩陣^AT_B

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????^AT_B = \begin{bmatrix}^AR_B & ^A\vec p_{B_O}\\000\end{bmatrix}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?顯而易見的是染苛,這是一個4\times 4的矩陣鹊漠。旋轉(zhuǎn)矩陣是3\times 3的,下方的三個空缺使用0來填補(bǔ)茶行,也就是3個0(000)躯概。

? ? ? ?它也有^A\vec p = ^AT_B\times ^B\vec p這個公式,只不過這里的位置向量一定是第三大節(jié)這樣補(bǔ)充過的列向量才可以畔师。補(bǔ)充一點(diǎn):^A\vec p_{B_O}在前面的幾節(jié)提到過娶靡,這里也需要補(bǔ)充一個1的元素到列向量的末尾。


4 結(jié)語

? ? ? ?本節(jié)內(nèi)容是筆者個人理解看锉,若有錯誤姿锭,歡迎大家指出并討論。

? ? ? ?同時伯铣,由于旋轉(zhuǎn)矩陣的特殊性質(zhì)呻此,在實(shí)際運(yùn)用中還有更多技巧。這些可以參考教科書《工業(yè)機(jī)器人》或者《機(jī)器人學(xué)》腔寡。? ? ? ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末焚鲜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子放前,更是在濱河造成了極大的恐慌忿磅,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件犀斋,死亡現(xiàn)場離奇詭異贝乎,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)叽粹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門览效,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人虫几,你說我怎么就攤上這事锤灿。” “怎么了辆脸?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵但校,是天一觀的道長。 經(jīng)常有香客問我啡氢,道長状囱,這世上最難降的妖魔是什么术裸? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮亭枷,結(jié)果婚禮上袭艺,老公的妹妹穿的比我還像新娘。我一直安慰自己叨粘,他們只是感情好猾编,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著升敲,像睡著了一般答倡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上驴党,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天瘪撇,我揣著相機(jī)與錄音,去河邊找鬼鼻弧。 笑死设江,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的攘轩。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼码俩,長吁一口氣:“原來是場噩夢啊……” “哼度帮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起稿存,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤笨篷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后瓣履,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體率翅,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年袖迎,在試婚紗的時候發(fā)現(xiàn)自己被綠了冕臭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡燕锥,死狀恐怖辜贵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情归形,我是刑警寧澤托慨,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站暇榴,受9級特大地震影響厚棵,放射性物質(zhì)發(fā)生泄漏蕉世。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一婆硬、第九天 我趴在偏房一處隱蔽的房頂上張望狠轻。 院中可真熱鬧,春花似錦柿祈、人聲如沸哈误。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蜜自。三九已至,卻和暖如春卢佣,著一層夾襖步出監(jiān)牢的瞬間重荠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工虚茶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留戈鲁,地道東北人。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓嘹叫,卻偏偏與公主長得像婆殿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子罩扇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1.旋轉(zhuǎn)矩陣 2.齊次坐標(biāo) 3.齊次矩陣 4.1平移相乘 4.2旋轉(zhuǎn)相乘 例子1 例子2 想要對機(jī)器人的機(jī)械臂進(jìn)行...
    成吉253閱讀 2,503評論 0 3
  • 位置描述 建立坐標(biāo)系后用一個 3×1 的位置矢量就可以確定坐標(biāo)系當(dāng)中的任何點(diǎn)位 用一個向量就可以表示婆芦,圖中的是 用...
    KFKFKF123閱讀 154評論 0 0
  • 1 前言 OpenGL渲染3D模型離不開空間幾何的數(shù)學(xué)理論知識,而本篇文章的目的就是對空間幾何進(jìn)行簡單的介紹喂饥,并對...
    RichardJieChen閱讀 7,005評論 1 11
  • 視覺SLAM之三維空間剛體運(yùn)動描述 數(shù)學(xué)工具:旋轉(zhuǎn)矩陣,變換矩陣,四元數(shù),歐拉角編程庫:Eigen庫 "旋轉(zhuǎn)矩陣"...
    樓頂?shù)南挑~閱讀 104評論 0 0
  • 一直在做圖像處理员帮,也經(jīng)常聽到相機(jī)內(nèi)參相機(jī)外參或粮,我卻沒深入理解什么是相機(jī)內(nèi)外參,什么是相機(jī)標(biāo)定捞高。 1氯材、相機(jī)內(nèi)參數(shù)是與...
    萱兒媽閱讀 14,396評論 0 1