1/22/07

2.6 機器人的軸節

利用Matlab可以模擬工業機器人軸節之運動情形。下面為一個執行例,以 robot IRB 140 (ABB) 為模擬對象,可以看到其軸節間之運動情形。



就目前所學之平面二軸之迴轉,亦可仿不同軸節之機器人動作。程式link_robot函數可以依輸入之桿長及對應角度與各桿之迴轉速度繪出其連續性之運動。本程式並呼叫linkxy求得各桿中間之座標,然後進行繪製。其程式內容如下:


function link_robot(lens,angle,omega,w)
%link_robot.m will call linkspace.m
%draw connecting links as a connected mechanism.
%Input:lens:lengths of links
% angle:link angles w/t the former link, degs
% omega:angular velocity, rad/s
% w:width of links
% time:[stop delt]
%Example:
% link_robot([5 3 4 6],[30 60 90 145],2:5)
%Author:DSFon, BIME,NTU. Date:Jan. 25, 2007
if nargin<4,w=1;end
if nargin<3,omega=1;end;
lens=lens(:);angle=angle(:);omega=omega(:);
if length(omega)==1,
omega=ones(size(lens))*omega;
end
t=0;nn=length(lens);clf;
for i=1:nn,
h(i)=line('xdata',[],'ydata',[],'erasemode','xor');
end
mm=sum(lens)-min(lens);
axis([-mm mm -mm mm]);axis equal;axis off;
title('Hit ctr-C to stop');
while 1
th=cumsum(angle+omega*t)*pi/180;
x=[0;cumsum(lens.*cos(th))];
y=[0;cumsum(lens.*sin(th))];
for i=1:nn
[xi,yi]=linkxy([x(i) y(i)],[x(i+1) y(i+1)],w);
set(h(i),'xdata',xi,'ydata',yi);
end
drawnow;
pause(0.1)
t=t+1;if t>1000,t=0;end
end

function [x,y]=linkxy(A,B,d)
% Draw a link
% Inputs:
% A,B:Initial & final coordinates of link
% d:thickness of link
% Example: linkshape([0 0],[5,5])
if nargin==2,d=1;end;
d=abs(d);
AB=(B(1)+j*B(2))-(A(1)+j*A(2));
D=abs(AB);th=angle(AB);
t=linspace(pi/2,2.5*pi,20);
Cout=max(d/2,0.2)*exp(j*t');Cin=Cout/2;
if d>0,
P=[0;Cin;Cout(1:10);D+Cout(11:20);D+Cin;D+Cout(20);Cout(1)];
else
P=[Cin;0;D;D+Cin];
end
xx=real(P);yy=imag(P);
x=xx*cos(th)-yy*sin(th)+A(1);
y=xx*sin(th)+yy*cos(th)+A(2);

執行上述程式可得到下面影像之動作:

>> link_robot([5 3 4 6],[30 60 90 145],2:5)