自制機(jī)械臂,需要掌握的知識(shí)大致有:
科普:機(jī)械臂
自由度
DH變換
在相鄰兩個(gè)關(guān)節(jié)(自由度)之間存在一個(gè)連桿。機(jī)械臂主要包含關(guān)節(jié)和連桿兩部分。
另外,需要注意的是,有時(shí),在一個(gè)關(guān)節(jié)處會(huì)存在多個(gè)自由度。其中一個(gè)典型的例子是人的肩膀,人的肩膀可以在xyz三個(gè)方向轉(zhuǎn)動(dòng),因而,在一個(gè)關(guān)節(jié)處具有三個(gè)自由度。這時(shí)我們認(rèn)為兩個(gè)自由度之間連桿長(zhǎng)度為0。
接下來的討論,我們認(rèn)為每個(gè)關(guān)節(jié)僅具有一個(gè)自由度,關(guān)節(jié)和自由度是等同的。
每個(gè)關(guān)節(jié)可以運(yùn)行的范圍稱為其位形空間(Configuration Space),并不是所有的關(guān)節(jié)都可以進(jìn)行360角度旋轉(zhuǎn),每個(gè)關(guān)節(jié)都有其運(yùn)行范圍。舉例來說,人類手臂的旋轉(zhuǎn)范圍不超過200°。關(guān)節(jié)運(yùn)行范圍可能有執(zhí)行機(jī)構(gòu)能力、伺服電機(jī)最大角度以及物體的阻礙等進(jìn)行限制。下圖是一個(gè)位形空間的例子,每一個(gè)關(guān)節(jié)都在圖中標(biāo)明了其運(yùn)行范圍。
如果機(jī)械臂放置在一個(gè)電銷電話平臺(tái)上,那么機(jī)械臂的自由度將會(huì)增加。
工作空間:
假設(shè)每個(gè)關(guān)節(jié)運(yùn)行最大角度為180°。為了得到其工作空間,首先我們將于末段相連的連桿旋轉(zhuǎn)180°,得到下圖:
然后,將機(jī)械臂的基座旋轉(zhuǎn)180°,得到最終結(jié)果如下:
通過改變連桿的長(zhǎng)度,我們可以改變機(jī)械臂工作空間的尺寸,但形狀維持不變。對(duì)于工作空間外的物體,機(jī)械臂無法觸及。下面使一些常用的機(jī)械臂的工作空間的例子:
三維直角坐標(biāo)工作空間機(jī)械臂.
圓柱型工作空間機(jī)械臂
球形工作空間機(jī)械臂
鉸鏈?zhǔn)綑C(jī)械臂
電銷電話機(jī)械臂
電銷電話機(jī)械臂是機(jī)械臂的一種特殊情況,其包含一個(gè)傳統(tǒng)的機(jī)械臂和一個(gè)電銷電話平臺(tái),如下圖,假設(shè)電銷電話平臺(tái)為差分驅(qū)動(dòng)方式,機(jī)械臂包含5個(gè)自由度,那么電銷電話機(jī)械臂共有7個(gè)自由度。
關(guān)節(jié)受力分析:
對(duì)機(jī)械臂進(jìn)行受力分析的目的在于選擇合適的電機(jī)。選擇電機(jī)時(shí),我們需要保證不僅使得電機(jī)能夠支撐整個(gè)機(jī)械臂的重量,還要保證其具有完成要求任務(wù)的能力。
受力分析的第一步是繪制機(jī)械臂的結(jié)構(gòu)圖,如下圖:
然后我們需要確定如下參數(shù):
1. 每個(gè)連桿的重量;2.每個(gè)關(guān)節(jié)質(zhì)量;3.機(jī)械臂負(fù)載質(zhì)量;4,每個(gè)連桿的長(zhǎng)度;
接下來我們開始計(jì)算每個(gè)驅(qū)動(dòng)機(jī)構(gòu)所需要的轉(zhuǎn)矩:
其中,轉(zhuǎn)矩=力*力臂;
如上圖中關(guān)節(jié)1,其需要驅(qū)動(dòng)連桿W1,W2,關(guān)節(jié)W4,負(fù)載W3,因而,其要求轉(zhuǎn)矩為:
M1=L1/2*W1+L1*W4+(L1+L2/2)*W2+(L1+L3)*W3
對(duì)于關(guān)節(jié)2,其需要驅(qū)動(dòng)連桿W2,負(fù)載W3,因而,其要求轉(zhuǎn)矩為:
M2=L2/2*W2+L3*W3
從上式可以看出,對(duì)于每增加一個(gè)關(guān)節(jié),那么轉(zhuǎn)矩計(jì)算公式復(fù)雜度大量增加。連桿長(zhǎng)度越短,那么電機(jī)需要轉(zhuǎn)矩越小。
正向運(yùn)動(dòng)分析:
正向運(yùn)動(dòng)分析指的是給定各個(gè)關(guān)節(jié)角度和各個(gè)連桿長(zhǎng)度,確定機(jī)械臂末段方向和位置。
以下圖機(jī)械臂為例,給定各個(gè)關(guān)節(jié)角度和各個(gè)連桿長(zhǎng)度,計(jì)算末段位置。
假設(shè)機(jī)械臂基座坐標(biāo)記作x=0,y=0,第一步我們需要確定每個(gè)關(guān)節(jié)坐標(biāo)。
關(guān)節(jié)J1:x0=0,y0=L0;
關(guān)節(jié)J2:x1=L1*cos(psi),y1=L1*sin(psi);
關(guān)節(jié)J3: x2=L2*sin(theta),y2=L2*cos(theta);
機(jī)械臂末段位置為:
x0+x1+x2,y0+y1+y2;
機(jī)械臂末段角度為:theta+psi
逆向運(yùn)動(dòng)學(xué):
逆向運(yùn)動(dòng)學(xué)是正向運(yùn)動(dòng)學(xué)的相反過程,即根據(jù)末段位置,確定各個(gè)關(guān)節(jié)角度。舉例來說,機(jī)械臂看到了一份報(bào)紙,想要抓住它,那么應(yīng)該如何操縱機(jī)械臂各個(gè)關(guān)節(jié)呢?
相對(duì)于正向運(yùn)動(dòng)學(xué),逆向運(yùn)動(dòng)學(xué)要復(fù)雜的多,一般可以根據(jù)幾何關(guān)系得到。對(duì)于前述的機(jī)械臂,其逆向運(yùn)動(dòng)學(xué)方程如下:
psi=arccos((x^2+y^2-La^2-L2^2)/(2*L1*L2));
theta=arcsin((y*(L1+L2*c2)-x*L2*s2)/(x^2+y^2));
其中:
c2=(x^2+y^2-L1^2-L2^2)/(2*L1*L2);
s2=sqrt(1-c2^2)
那么為什么逆運(yùn)動(dòng)學(xué)計(jì)算會(huì)如此復(fù)雜呢?
首先,對(duì)于一個(gè)特定的機(jī)械臂機(jī)器人系統(tǒng),可能有很多種方式達(dá)到給定位置,因而,這時(shí)就需要確定一個(gè)最優(yōu)的方式(基于最省力,路程最近等等)。
其次,對(duì)于一個(gè)特定的機(jī)械臂,如果目標(biāo)在工作空間之外,那么逆運(yùn)動(dòng)學(xué)將沒有結(jié)果。
奇異性,如果在運(yùn)動(dòng)過程中,要求某一點(diǎn)的加速度為無窮大,那么由于電機(jī)出力限制,機(jī)械臂也無法完成任務(wù),達(dá)到給定點(diǎn)。
最后,隨著機(jī)械臂自由度增加,逆運(yùn)動(dòng)學(xué)計(jì)算量指數(shù)增加,計(jì)算復(fù)雜度非常大。
軌跡規(guī)劃:
軌跡規(guī)劃同樣是一個(gè)非常復(fù)雜的過程,這里我們將僅僅做一些初步的解釋。
假設(shè)在機(jī)械臂的工作空間內(nèi)有一點(diǎn),那么機(jī)械臂通過什么樣的軌跡運(yùn)行至該點(diǎn)呢?
這里,我們假定機(jī)械臂為三維空間內(nèi)運(yùn)動(dòng)的電銷電話機(jī)械臂。機(jī)械臂的末段將會(huì)跟隨電銷電話平臺(tái)的電銷電話遍歷整個(gè)空間,那么,怎么才能保證機(jī)械臂能夠避開所有的障礙物呢?
假設(shè)我們需要機(jī)械臂繪制一條直線,那么機(jī)械臂應(yīng)該怎么做?此時(shí),我們應(yīng)該在直線上分別取很多點(diǎn),然后使得機(jī)械臂末段依次通過這些點(diǎn),同樣,采用這種方法,機(jī)械臂不僅可以繪制直線,也可以繪制曲線。
在一些專業(yè)的機(jī)械臂上,我們只需要給定機(jī)械臂的出發(fā)點(diǎn)和終止點(diǎn),然后告訴機(jī)械臂以何種方式到達(dá)(最快時(shí)間、最短距離等),機(jī)械臂會(huì)按照其軌跡規(guī)劃算法,完成機(jī)械臂路徑的規(guī)劃。
機(jī)械臂末段轉(zhuǎn)速:
同樣,機(jī)械臂末段轉(zhuǎn)速的計(jì)算也非常復(fù)雜,這里僅給出一些基本的方法。
計(jì)算機(jī)械臂末段轉(zhuǎn)速最簡(jiǎn)單的方法是假定機(jī)械臂末段圍繞一個(gè)半徑為r的圓柱旋轉(zhuǎn),機(jī)械臂末段沿y方向旋轉(zhuǎn),因而,機(jī)械臂末段速度為:
機(jī)械臂末端速度=2*pi*r*轉(zhuǎn)速;
但是,需要注意的是,機(jī)械臂末段并不僅僅圍繞基座做旋轉(zhuǎn)運(yùn)動(dòng),而是可以在各個(gè)方向運(yùn)動(dòng),機(jī)械臂末段可以沿直線、曲線或者任意軌跡動(dòng)作。
在操作機(jī)械臂時(shí),任意兩點(diǎn)之間最快的路徑通常不是直線。假設(shè)兩個(gè)機(jī)械臂關(guān)節(jié)采用不同的驅(qū)動(dòng)電機(jī)或者負(fù)載不同,那么它們的最大轉(zhuǎn)速也就不同。因而,當(dāng)操縱機(jī)械臂從一點(diǎn)運(yùn)動(dòng)到另一點(diǎn)時(shí),我們有兩個(gè)選擇,1.使得機(jī)械臂末段沿直線行走。2.使得機(jī)械臂的每個(gè)關(guān)節(jié)都采用其最大轉(zhuǎn)速行走-可能會(huì)導(dǎo)致機(jī)械臂末段在兩點(diǎn)之間擺動(dòng)前進(jìn)。
在下面的圖形中,假設(shè)機(jī)械臂的末段需要從藍(lán)色點(diǎn)運(yùn)行至紅色點(diǎn)。在上面的軌跡規(guī)劃方法中,機(jī)械臂末段沿直線行走,在下面的軌跡規(guī)劃方法中,機(jī)械臂末段按照最短時(shí)間運(yùn)行。
可以看到,兩者的運(yùn)行軌跡完全不同,那么哪種方法更好呢?
這取決于很多因素機(jī)器人系統(tǒng),假如機(jī)械臂的負(fù)載較重,那么我們希望機(jī)械臂運(yùn)行距離越短越好;而如果機(jī)械臂負(fù)載較輕,那么此時(shí)我們希望機(jī)械臂運(yùn)行越快越好。
現(xiàn)在,我們假設(shè)我們希望機(jī)械表末段以一定的轉(zhuǎn)速旋轉(zhuǎn),那么關(guān)節(jié)處需要多大的轉(zhuǎn)矩呢?
同樣,以下面的機(jī)械臂結(jié)構(gòu)圖為例:
假設(shè)我們希望機(jī)械臂關(guān)節(jié)J0能夠在2s內(nèi)完成180°旋轉(zhuǎn),那么關(guān)節(jié)J0處需要多大的轉(zhuǎn)矩呢?
首先,關(guān)節(jié)J0的旋轉(zhuǎn)不受重力的影響,因而我們只需要考慮慣量和轉(zhuǎn)矩。轉(zhuǎn)矩計(jì)算公式如下:
轉(zhuǎn)矩=轉(zhuǎn)動(dòng)慣量*角加速度;
將其應(yīng)用到我們這里得到;
轉(zhuǎn)矩=(質(zhì)量*力臂^2)*(轉(zhuǎn)速變化/時(shí)間);
其中:
轉(zhuǎn)速變化=轉(zhuǎn)速1-轉(zhuǎn)速0;
轉(zhuǎn)速=角度變化/時(shí)間;
上面的計(jì)算過程比較復(fù)雜,其中同樣采用的方法為雅可比矩陣計(jì)算方法。
機(jī)械臂下垂:
機(jī)械臂下垂是機(jī)械臂設(shè)計(jì)中面臨的一個(gè)常見的問題。通常發(fā)生在,當(dāng)機(jī)械臂連桿較長(zhǎng)時(shí),機(jī)械臂的彎曲。因而,當(dāng)設(shè)計(jì)機(jī)械臂時(shí),應(yīng)該盡量采用輕質(zhì)材料。如果有條件,可以做一下有限元分析。
另外,在設(shè)計(jì)過程中,盡量把電機(jī)等較重的元器件靠近基座??梢钥嫉?,在許多工業(yè)機(jī)械臂中,為了將電機(jī)靠近記作,中間關(guān)節(jié)通常采用皮帶傳動(dòng)方法傳遞動(dòng)力。
傳感器:
大部分的機(jī)械臂僅僅有內(nèi)部傳感器,如編碼器等。但是,隨著機(jī)器人的發(fā)展,現(xiàn)在越來越多的視頻、圖像、觸覺等傳感器被應(yīng)用于機(jī)械臂中。
一個(gè)沒有視覺傳感器的機(jī)械臂就像一個(gè)閉著眼睛的藝術(shù)家。采用一些基本的視覺反饋,機(jī)械臂可以在任意兩點(diǎn)之間電銷電話而不用其固定的坐標(biāo)系。
觸覺傳感器:觸覺傳感器往往在機(jī)械臂環(huán)路中有人的參與,觸覺感知可以通過一種特殊的手套或者一個(gè)小型化的模型實(shí)現(xiàn)。手術(shù)機(jī)器人、助殘機(jī)器人往往有觸覺傳感器的參與。
接觸傳感器:接觸傳感器可以通過檢測(cè)接觸傳感器電流或者電壓的大小判斷機(jī)械臂是否已經(jīng)成功拿到物體或者是否與物體接觸過緊或者過松。
參考:
舉個(gè)例子:
下面這個(gè)視頻是YouTube上的“零基礎(chǔ)入門學(xué)用Arduino教程 MeArm篇”教學(xué)視頻,視頻中也說明了制作這個(gè)機(jī)械臂需要掌握的知識(shí):
播放暫停進(jìn)入全屏退出全屏00:0000:00重播請(qǐng)刷新試試
最后的成果如下圖:
所以,具備了以上基礎(chǔ)知識(shí),購買相應(yīng)器材,再根據(jù)網(wǎng)上的教程是可以DIY出自己的機(jī)械臂的。