以下整理了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...