MATLAB機械人學常用函式(1)

2021-08-15 11:23:44 字數 3547 閱讀 8689

以下整理了matlab在機械人學中常用的函式

%%

%二維座標系變換及繪圖

t=se2(0,0,30);%建立變換 x=0 y=0 theta=30°

trplot2(t, 'frame', '1', 'color', 'b','axis',[-3 3 -3 3]);%繪圖,

% 名字: 顏色:藍色 座標軸範圍[-5 5 -5 5]

hold on;

t = se2(1,2,60);%生成其次矩陣物件,引數x位移,y位移,逆時針旋轉角度,

%se2.t表示其其次變換矩陣

trplot2(t, 'frame', '2', 'color', 'r');%繪製變換座標系

p = [1;1];%一點p

plot_point(p,'label','p');%畫一點p

p1 = homtrans(t.t,p);%計算p在t中表達 t.t為se2物件轉matrix,才能計算

plot_point(p1,'label','p1');

hold off

%%%三維座標系變換及繪圖

r=rotx(30)*roty(30)*rotz(30);%產生3*3旋轉矩陣

trplot(r)%繪製座標系

tranimate(r)%產生變換動畫

r=eul2r(30,30,30);%尤拉三角度表示法zyz,輸出旋轉矩陣,輸入角度,文件錯了

tr2eul(r,'deg')%尤拉三角度反變換,輸出角度

r=rpy2r(30,30,30,'xyz');%卡爾單角to旋轉矩陣,xyz,輸入角度

tr2rpy(r)%逆變換

%三維齊次變換,旋轉+位移

r1=eul2r(0,0,0);

r2=eul2r(90,90,90);

position1=se3(r1,[0 0 0]);

position2=se3(r2,[1 2 3]);

tranimate(position1.t,position2.t);

%更常用方法:

trans = transl(0.4,0.2,0)*trotx(pi);%位移*旋轉,建立齊次變換矩陣

%%%補充:特徵值看出旋轉矩陣旋轉軸

%[v,lambda]=eig(rpy2r(30,30,30));%lambda為1對應的特徵向量為轉軸

r=rpy2r(30,30,30,'xyz');%卡爾單角to旋轉矩陣,xyz,輸入角度

[theta,v]=tr2angvec(r);%得到軸線與轉角

axis([-1 1 -1 1 -1 1]) %設定座標系範圍

line([0 v(1)],[0 v(2)],[0 v(3)])%畫出軸線

hold on;

tranimate(r)%產生變換動畫

%%%軌跡 從s=0 平滑移動至s=1的方法

%平滑一維軌跡

%使用的軌跡方程 s=at^5+bt^4+ct^3+dt^2+et^1+f

%通過匯入開始結束時速度加速度為零約束條件求解abcdef

[s,sd,sdd]=tpoly(0,1,50);%返回軌跡為0~1差值50個點,[路程,速度,加速度]

plot([s sd sdd])%繪製

[s,sd,sdd]=lspb(0,1,50);%另一種軌跡方法,加減速較快,比較理想

plot([s sd sdd])%繪製

%二維軌跡平滑

s=mtraj(@tpoly,[0 2],[1 -1],50);

plot(s)

s=mtraj(@lspb,[0 2],[1 -1],50);

plot(s)

%基於中間點生成多段軌跡

via=[4 1;4 4;5 2;2 5];%軌跡點

q=mstraj(via,[2 1],,[4 1],0.05,5);%軌跡點,每軸最大速度,

%每段運動時間,每軸起點座標,取樣時間,加速時間

plot(q)

%三維軌跡生成

%僅旋轉

r0=[0 0 0];

r1=[90 90 90];

rpy=mtraj(@tpoly,r0,r1,50);

tranimate(rpy2tr(rpy));

%旋轉+位移

r1=eul2r(0,0,0);%旋轉矩陣

r2=eul2r(90,90,90);

position1=se3(r1,[0 0 0]);%構造三維齊次變換矩陣

position2=se3(r2,[1 2 3]);

s=trinterp(position1,position2,[0:49]/49);%平移部分線性插值,旋轉部分四元數

plot(s)

%%%機械臂建模與正運動學

%建立dh引數

l(1)=link([0 0 1 0 0]);%建立連桿模型,引數:theta d a alpha 旋轉軸

l(2)=link([0 0 1 0 0]);

two_link=seriallink(l,'name','two_link');%構建模型

two_link.fkine([0 0])%計算證運動學位姿,輸入theta0=0;theta1=0,

% 結果為se3物件,se3.t得到其其次變換矩陣

%繪圖two_link.plot([0 0]);%對位置[0 0]畫位姿圖

two_link.plot([pi/2 0]);%對位置[pi/2 0]畫位姿圖

%%%逆運動學

mdl_puma560%調出puma560 dh模型作為實驗物件

t = p560.fkine([0 0 0 0 0 0]);%生成乙個位姿

qi=p560.ikine6s(t);%逆運動學計算,封閉解

i=5;

while(i)%對比結果

pause(1)

p560.plot([0 0 0 0 0 0])

pause(1)

p560.plot(qi)

i=i-1;

end%%

%運動學軌跡

mdl_puma560%調出puma560 dh模型作為實驗物件

t=[0:0.05:2]';%兩秒完成軌跡,步長0.05

%關節運動(產生兩位置間路徑,結果表達為一系列中間點的關節角度)

%產生位姿矩陣法1:直接給出關節角度

%t1 = p560.fkine([0 0 0 0 0 0]);%生成乙個位姿

%t2 = p560.fkine([pi 0 0 0 0 0]);%生成乙個位姿

%產生位姿矩陣法2:描述位置

t1 = transl(0.4,0.2,0)*trotx(pi);%位移*旋轉,建立齊次變換

t2 = transl(0.4,-0.2,0)*trotx(pi/2);

q=p560.jtraj(t1,t2,t);%輸入se3 or 4*4變換矩陣,生成軌跡

p560.plot(q)%繪製軌跡

%笛卡爾運動(笛卡爾空間中直線運動,生成從se3空間兩點間直線的

%一系列中間位置,結果表達為4*4齊次換矩陣

ts=ctraj(t1,t2,length(t));

%%

機械人學導論學習(1)

下面是對機械人學導論乙個概括 1 章對介紹了機械人學的背景以及發展前景,然後對本書的各個章節核心思想進行了介紹。2 章用數學的方法建立三維空間的座標系來描述操作臂的位置與姿態,主要包括笛卡爾空間與關節空間。3 章介紹了操作臂的正運動學,研究物體的運動而不考慮物體的力,主要內容是笛卡爾空間想關節空間的...

NAO機械人學習筆記(1)

1 nao機械人硬體 1.1 紅外線 紅外線發射角度 60 60 波長940nm.1.2 超聲波 聲納 nao能夠探測前方0.25 2.55m內是否有障礙物,探測角度60 超聲波頻率為49khz.1.3 感測器 1.3.1 接觸感測器 頭部感測器周圍 12個led 耳部 2 10個16級藍色led,...

機械人學 機械人感知(Mapping)

軌跡規劃任務是再metric map的基礎上完成的。當然,層次最高的是語意圖,語意圖是未來研究的熱點方向。獲取metric map 的難度最大之處在於 1 感測器雜訊 may be solved by pgm 2 機械人在移動 location 問題 常見的map是基於ugv而言的,使用的地圖是oc...