r = rejθ ------(3.17)
3-5.1 速度公式
物體之位移對時間t微分的結果設為V,則速度V為:
V=dr/dt=d/dt(rejθ)=r'ejθ+jrθ'ejθ
=r'ejθ+jrωejθ
=(r'+jrω)ejθ
=(r'+jrω)(cos(θ)+sin(θ))
=r'ejθ+rωej(θ+π/2)------------------------------------------(3.18)
若連桿組由三桿組成,則就三連桿之位置向量進行微分,可以得到如圖1.1中之最終速度Vp之變化,即:
Vp=rp'=r1'+r2'+r3'
=Σk=1-3(rk'+jrkωk)ejθk
=Σk=1-3(rk'+jrkω)(cos(θk)+sin(θk))
=Σk=1-3(rk'cos(θk)-rkωksin(θk)+j(rk'sin(θk)+rkωkcos(θk))
----------------------------------------(3.19)
上式中若桿長固定或徑向無速度變化時, r'項為零,故可簡化如下:
Vp=rp'=r1'+r2'+r3'
=Σk=1-3jrkωk)ejθk
=Σk=1-3jrkω(cos(θk)+jsin(θk))
=Σk=1-3rkωk(-sin(θk)+jcos(θk))-----------------------------(3.20)
若變換為直角座標時,則對應如下:
Vp=rp'=r1'+r2'+r3'
=Σk=1-3(rk'cos(θk)-rkωksin(θk)+j(rk'sin(θk)+rkωkcos(θk))
------------------------------(3.21)
程式內容
程式velo2.m可以輸入位置向量及對應之角速度,由此計算其合位移及速度,其中包括絕對值及對應角度。在此程式中,假設徑向量無變化,故成為多桿連結的狀況。各桿之長度與角度採一對一的型式。角速度可以單一值亦可配合各桿之對應值。若不輸入則以一單位代替。
輸出部份有sv與thetap,前者中有兩項,一項為位移絕對值,另一項為速度之絕對值。thetap則為對應之水平夾角,以度數表示,亦分為兩項,前者屬合位移之夾角,後者則為合速度之夾角,兩者依原理應相互垂直,或相差九十度。
function [sv,thetap]=velo2(theta,rho,omega)
% Find the velocity Vp for the
% connecting vectors with theta,rho and w
% theta: angle in degrees for each vector
% rho: radial displacement, or link length
% omega: angular velocity of each vector
% Example: [sv,thetap]=velo2([20 40 50],[3 4 5],2)
theta=theta(:);rho=rho(:);
n=length(rho);
if nargin==2,
omega=ones(size(rho));
elseif length(omega)==1
omega=ones(size(rho))*omega;
end
omega=omega(:);
d2g=pi/180; %轉換為弧度
itheta=i*theta*d2g;
ss=rho.*exp(itheta);
vv=i*rho.*exp(itheta).*omega; %將極座標換為複數座標
sp=sum(ss);vp=sum(vv); %行矩陣之加總
sv=[abs(sp) abs(vp)];%位移與速度之絕對值
thetap=[angle(sp) angle(vp)]/d2g;%位移與速度之相角,並轉回一般角度
設有支連桿以旋轉結相連,其位置向量分別為[3 4 5]公分,角度為[20 40 50]度,角速度均為5rad/s,利用velo2函數可以計算其合位移及速度向量,其對應量存於sv(1)及sv(2),其對應向量水平角分別為thetap(1),thetap(2):
>> [sv,thetap]=velo2([20 40 50],[3 4 5],5)
sv =
11.744 58.721
thetap =
39.23 129.23
下面之程式是將各桿之位置圖,速度向量圖及合速度圖繪出。利用函數vectordraw可以得到比較的圖案。其程式結構如下:
function [ss,vv]=vectordraw(r,dg,w)
% Example: [ss,vv]=vectordraw([10 20 30],[30 40 50],[1 2 3])
d2g=pi/180;
r=r(:);dg=dg(:);w=w(:);
ith=exp(i*dg*d2g);
s=r.*ith;v=i*s.*w;s=[0;s];
x0=real(s(1));y0=imag(s(1));
for k=1:length(r)
x1=real(s(k+1))+x0;y1=imag(s(k+1))+y0;
line([x0 x1],[y0 y1],'marker','o','linewidth',2);
line([x1 x1+real(v(k))],[y1 y1+imag(v(k))],'marker','>>','color','r')
x0=x1;y0=y1;
end
ss=[real(sum(s)) imag(sum(s))];
vv=[real(sum(v)) imag(sum(v))];
line([0 ss(1)],[0 ss(2)],'linestyle',':','linewidth',2)
line([ss(1) ss(1)+vv(1)],[ss(2) ss(2)+vv(2)],...
'marker','>','color','g','linewidth',2)
axis equal;grid on
設連桿長為[10 20 30]度,對應水平角度為[30 50 90]cm,其對應角速度為[1 2 3]rad/s,則可依上述函數指令執行如下:
>> vectordraw([10 20 30],[30 50 90],[1 2 3])
ans =
21.5160 50.3209
藍色代表連桿位置,紅色為各桿之速度,虛線及綠色為合速度之方向及大小
No comments:
Post a Comment