(1) pid控制:kp比例、ki積分、kd微分;
(2) 座標變換基礎
(3) atan2(y,x)雙引數反正切
對機械臂進行逆運動學求解:
(4)(5)建立如下圖所示的二自由度機械臂
p點座標:
p=rot(theta2,『z』)*[a;0;0];
e點座標:
e=p+rot(theta2,『z』)rot(phi,『z』)[b;0;0];
若給定的e點座標與實際利用上式求解的座標一致則說明逆解正確
(1)正運動學
while 1
clc;
clear;
%圓心座標
x0=110;
y0=110;
%半徑r=40;
%連桿長度
a=100;
b=100;
t=1;
for i=0:0.1:2*pi+0.1
x=x0+r*cos(i);
y=y0+r*sin(i);
% x=(a+b)*cos(i);
% y=(a+b)*sin(i);
theta1=atan2(y,x);
% theta1=acos(x/sqrt(x*x+y*y));
c=sqrt(x*x+y*y); % 末端到原點的距離
theta3=acos((c*c+a*a-b*b)/(2*a*c));
theta2=theta1-theta3; % 關節1 角度
phi=pi-acos((a*a+b*b-c*c)/(2*a*b)); %關節2角度
%連桿 p 位置
p=rot(theta2,'z')*[a;0;0];
% 連桿末端位置(正運動學驗證)
e=p+rot(theta2,'z')*rot(phi,'z')*[b;0;0];
%連桿連線處p的座標
px=a*cos(theta2);
py=a*sin(theta2);
%末端繪製圓的座標
rolx(t)=x;
roly(t)=y;
t=t+1;
plotrobot(p(1),p(2),e(1),e(2),rolx,roly); % 繪圖驗證
pause(0.0000001)
hold off
endend
(2)pid
調速跟蹤位置
clc;
clear;
%圓心座標
x0=110;
y0=110;
%半徑r=40;
%連桿長度
a=100;
b=100;
t=1;
% 控制週期
dt=0.05 % 秒
time=[0]; % 當前時間
realtheta=[0];% 關節1實際角度
realphi=[0];%關節2實際角度
errtehta=[0]; % 關節1 角度誤差
errphi=[0]; % 關節2 角度誤差
errthetasum=0;%關節1累積誤差
errphisum=0;%關節2累積誤差
derrtheta=0;%關節1 本次角度誤差與上一次角度誤差的差值
derrphi=0;%關節2 本次角度誤差與上一次角度誤差的差值
% pid 引數(關節1)
kp1=10;
ki1=2;
kd1=4;
% pid 引數(關節2)
kp2=8;
ki2=1;
kd2=2;
for i=0:1:150
theta2=i/150*2*pi;
phi=i/150*pi;
%連桿 p 位置
p=rot(theta2,'z')*[a;0;0];
% 連桿末端位置(正運動學驗證)
e=p+rot(theta2,'z')*rot(phi,'z')*[b;0;0];
% pid 控制
w1=kp1*(theta2-realtheta(end))+derrtheta*kd1+ki1*errthetasum;%關節1 瞬時角速度
w2=kp2*(phi-realphi(end))+derrphi*kd2+ki1*errphisum;%關節2 瞬時角速度
realtheta(end+1)=realtheta(end)+w1*dt;
realphi(end+1)=realphi(end)+w2*dt;
% 誤差
errtehta(end+1)=theta2- realtheta(end);
errphi(end+1)=phi- realphi(end);
errthetasum=errthetasum+errtehta(end);
errphisum=errphisum+errphi(end);
derrtheta= errtehta(end)-errtehta(end-1);
derrphi= errphi(end)-errphi(end-1);
% 當前時間
time(end+1)=dt*i;
%連桿 p 位置
realp=rot(realtheta(end),'z')*[a;0;0];
% 連桿末端位置(正運動學驗證)
reale=p+rot(realtheta(end),'z')*rot(realphi(end),'z')*[b;0;0];
%末端繪製圓的座標
rolx(t)=e(1);
roly(t)=e(2);
t=t+1;
subplot(121);
plotrobot(realp(1),realp(2),reale(1),reale(2),rolx,roly); % 繪圖驗證
根據調速跟蹤位置的**,寫出用pid調節加速度跟蹤位置的**
長期從事機械人學相關研究,涉及機械臂、輪式機械人、四足機械人的建模及**,可共同**機械人相關問題,可指導課程設計及畢業設計,如需,私聊。
六自由度機械臂研究(2) 機械臂座標系建立
機械臂的座標系建立是未來解析推導運動學演算法的基礎,也是機械臂入學者的第乙個坑。坑的原因是網上資料無數,但是幾乎沒有任何乙個建系教程是完全一樣的。更有甚者,有好多部落格還是有或多或少的錯誤,把原理與引數定義搞錯者也是大有人在。博主排坑無數後總結了親測可行的建系方法,有興趣或者有需求的同學可以跟著博主...
Nao機械人學習(二)
用c 使用nao機械人,需要用cmake進行動態編譯,那麼怎樣進行動態編譯呢?用cmd的方法固然簡單,但是新手使用往往摸不著頭腦,這裡提供了一種ui編輯方式,能夠更好地使用c 編譯nao的工程。然後,開啟cmake的視窗介面,如圖,新增 source code directory 和 build b...
六自由度機械人實訓系統
zn ior03六自由度機械人實訓系統 一 概述 機械人已廣泛應用於汽車與汽車零部件製造業 機械加工行業 電子電器行業 橡膠及塑料工業 食品工業 木材與家具製造業等領域。在工業生產中,弧焊機械人,點焊機械人,噴塗機械人及裝配機械人等都被大量使用。zn ior03六自由度機械人實訓系統由機械人和作業物...