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