2007年5月7日 星期一

作業8



A本週四 (4/26)曾來上課



B有一組四連桿,其桿長分別為r=[4 3 3 5],由桿2驅動,設第一固定桿角度theta1=0度; 角速度 td2=10rad/s; 角加速度tdd2=0 rad/s^2。


問題一:設桿2角度theta2=45度時,求各點之位置、速度與加速度為何?

由機動學講義6.4之function f4bar來分析

[data,form] = f4bar(r,theta1,theta2,td2,tdd2,mode,linkdrive)

其中輸入值
r=[4 3 3 5] (各桿之長度)
theta1 =0° (第一桿之水平角)
theta2 =45° (驅動桿之水平夾角)
td2 =10 (rad/sec) (驅動桿之角速度)
tdd2 =0 驅動桿(第二桿或第三桿)之角加速度(rad/sec^2)。
mode = -1 (閉合型)
linkdrive = 0 (驅動桿為第二桿)

>>[val,form]=f4bar([4 3 3 5],0,45,10,0,-1,0)

val =

1.0e+003 *

Columns 1 through 5

0.0040    0 0   0 0.0212 + 0.0212i
0.0021 + 0.0021i 0.0450 0.0100 0 0.0041 - 0.0245i
0.0011 + 0.0028i 0.0695 -0.0163 0.4914 -0.2121 - 0.2121i
-0.0008 + 0.0049i 0.0995 -0.0050 0.3836 -1.8712 - 0.4391i

Column 6
0.0021 + 0.0021i
0.0032 + 0.0049i
0
0

form =

1


其中第一行顯示為各連桿位置向量,屬於單桿的位置向量,若要以絕對值型式表示,則為
>>abs(val(:,1))'
ans =
4 3 3 5


四連桿之角度為>> abs(val(:,2))'
ans =
0 45.0000 69.4856 99.5246


各桿之角速度則為
>> abs(val(:,3))'
ans =
0 10.0000 16.2681 4.9677



各桿之角加速度為:>>abs(val(:,4))'
ans =
0 0 491.4428 383.6120


>>abs(val(:,5))'
ans =
1.0e+003 *
0.0300 0.0248 0.3000 1.9220



O點及R點因為接地,所以位置、速度及加速度均不變

而P點之位置、速度及加速度分別為3.2 + 4.9i,24.8,1922

Q點之位置、速度及加速度分別為2.1 + 2.1i,30,300




問題二:繪出此四連桿之相關位置及標明各點之速度方向及大小(以程式為之)。



利用6.5的function [values]=drawlinks(r,th1,th2,td2,tdd2,mode,linkdrive)
其中為了繪出速度之方向,將程式稍微修改了一下





function [values]=drawlinks_2(r,th1,th2,td2,tdd2,mode,linkdrive)

if nargin<5,

  linkdrive=0;

end

if nargin<4,

    mode=1;

end

[values b]=f4bar(r,th1,th2,td2,tdd2,mode,linkdrive);

rr=values(:,1);

rr(3,1)=rr(1,1)+rr(4,1);

rx=real(rr(:,1));

rx(4)=0;

ry=imag(rr(:,1));

ry(4)=0;

[unit]=abs(values(:,5))';



vpx=rx(2)+ 1/unit(2)*real(values(2,5));

vpy=ry(2)+ 1/unit(2)*imag(values(2,5));

vqx=rx(3)+ 1/unit(1)*real(values(1,5));

vqy=ry(3)+ 1/unit(1)*imag(values(1,5));


if b==1

plot([0 rx(1)],[0 ry(1)],'k-','LineWidth',4);

hold on;

if linkdrive==0

plot([0 rx(2)],[0 ry(2)],'b-','LineWidth',1.5);

plot([rx(2) rx(3)],[ry(2) ry(3)],'r-','LineWidth',2);

else

plot([0 rx(2)],[0 ry(2)],'r-','LineWidth',2);

plot([rx(2) rx(3)],[ry(2) ry(3)],'b-','LineWidth',1.5);

end

plot([rx(1) rx(3)],[ry(1) ry(3)],'g-','LineWidth',1.5);

plot(rx,ry,'bo');

plot([rx(2) vpx],[ry(2) vpy],'ms-','LineWidth',2);

plot([rx(3) vqx],[ry(3) vqy],'ms-','LineWidth',2);


text(0,0,' O');

text(rx(1),ry(1),' R ');

text(rx(2),ry(2),' P v=30');

text(rx(3),ry(3),' Q v=24.8' );

else

fprintf('Combination of links fail at degrees %6.1f\n',th2);

end

axis equal

grid on










紅色處為增加之部分 其中P和Q點的速度值利用第一題之數據取絕對值算出的
 
>> abs(val(:,5))'



ans =



1.0e+003 *



0.0300 0.0248 0.3000 1.9220












>> drawlinks_2([4 3 3 5],0,45,10,0,-1,0)






圖示













 
 
 
 

 
 
 
 
 
註:圖上速度標示為單位向量,此目的是為使畫面較簡潔易懂,故僅表現出方向,至於實際量值大小以標示為準






 
 
 




問題三:當桿2迴轉時,求出此組四連桿之限制角度,並繪出其位置(以程式為之)。




利用6.6極限函數程式


fb_angle_limits([4 3 3 5],0,0)



ans =



28.9550






故限制角度為28.9550



利用程式繪出極限位置圖





>> drawlimits([4 3 3 5],0,-1,0)



Qstart =



28.9550



Qstop =



331.0450










題目的情形為r1+r2≤r3+r4,r1-r2≤r3-r4


由此可見此為下限限制

從下圖中可以明顯的看出機構之極限位置



















問題四:設theta2=[0:20:360],試繪出此組四連桿之重疊影像,解釋為何有些沒有值。



>> for i=0:20:360;



drawlinks([4 3 3 5],0,i,10,0,-1,0);



end





Combination of links fail at degrees 0.0



Combination of links fail at degrees 20.0



Combination of links fail at degrees 340.0



Combination of links fail at degrees 360.0






上述之四個情況無法成像,由第三題之結果我們可以看出極限角為28.9550,所以驅動桿之運動範圍僅限制在28.9550度至331.0450度間,其他範圍之圖像都不能成立





重疊影像如下







 
 





問題五:若將問題三考慮在內,只在可迴轉的範圍內迴轉,請問你能讓此組四連桿作成動畫方式迴轉嗎?




利用講義6.10之程式move_4paths即可為之,其中由於題目中的連桿均沒有任何延伸點,所以將r6設為0,其動畫結果如下



>>move_4paths([4 3 3 5],0,0,3,0,10,0,-1,0,2,100)




2007年4月25日 星期三

作業7

本人(4/19)有上課


利用機動學講義的dyad和dyad_draw程式及運動學基本定理分析桿在各時間的對應位置,角速度及角加速度,以下是我的程式碼

%此程式是將機動學上課講義第三章後面之dyad及dyad_draw加以
%其目的是為了計算出各桿利用加速度,速度計算之對應位置



a=8+10; %第一桿長為我的學號末一碼+10

%運用dyad_draw來計算及跑出各桿的位置,角速度,角加速度

%利用迴圈跑出t=1,2,3,4,5時的圖形
for t=1:1:5
clf;
axis equal;
axis([-200 200 -200 200]);
dyad_draw([a,a+5,a-5],[0.2*t,0.5*t+0.5*0.1*t^2,0.3*t+0.5*0.2*t^2],[0.2,0.5+t*0.1,0.3+t*0.2],[0,0.1,0.2]);
%第一項輸入為各桿的桿長由a值決定
%第二項輸入為各桿的角度,是利用公式theta=theta0+omega*t+0.5*alfa*t^2
%第三項輸入為各桿的角速度,是利用公式omega=omega0+alfa*t
pause(2)

end;






由程式執行結果可以看出各桿之對應位置,角速度,角加速度
其中圖中之紅色為各桿之加速度,藍色為速度,綠色為合速度

2007年4月16日 星期一

作業6-1

我有上本週(十二日)的課

1

如圖


















共有12個連桿和16個結


2

此為平面組合機構,故M=3(N-J-1)+Σfi
M=3(12-16-1)+1*14+2*2=3



3

檢驗如下

>>gruebler (12,[12,2,2])

df =

3




4

滑塊在平面空間可視為稜柱對,無法轉動,僅能在一特定方向上相互滑動,故自由度為1。而滑槽在平面空間則視為複式結,除了可以轉動外也可以行移動,故自由度為2。故在計算可動度時,於滑槽項需要注意連結度f要以2計算

作業6-2

6.2

其中球結的自由度為3(各方向的轉動),旋轉結的自由度和平面的一樣為1,而筒結則因為可以繞軸轉動及沿軸移動其自由度為2


由於題目為空間機構組合
故我們計算自由度的時候應該將公式改為M=6(N-J-1)+Σfi
帶入數值,M=6(7-7-1)+3*3+2*1+1*3=8>0
故機構可動


檢驗如下

>>gruebler (7,[3,0,0,3,1])

df =

8



4

有惰性自由度
如圖,















標示箭頭之連桿表示其連結之連桿可以行自轉運動,故惰性自由度為2
所以整體之自由度應為 8-2=6

作業6-3

6-3
一 何謂葛拉索機構及非葛拉索機構?
在一四連桿當中,令四桿的桿長為
g:最長桿的長度
s:最短桿的長度
p,q:中間長度之兩桿的長度

則當s+g<p+q時,為葛拉索第一類型
s+g>p+q,為葛拉索第二類型
s+g=p+q,為葛拉索第三類型

其中第一類型又稱為葛拉索機構,根據接地桿的不同可以有下列情況:
1當鄰近最短桿之桿為接地桿時,屬於曲柄搖桿型
2若最短桿為接地桿時,則屬於雙曲柄型
3若與最短桿為相對應桿之桿為接地桿時,則屬於雙搖桿機構

第二類型則稱為非葛拉索型機構,所有活動連桿均屬搖桿

第三類型則為葛拉索機構的特殊型,稱為中立連桿組或暫態連桿組,其有個變換點,其運動是否向前或往後,成為不可預測的情況


二 假設有三組四連桿,設第一桿為固定桿,各桿長度分別如下:
1. 第一組:桿1-桿4分別為7,4,6,5cm
2. 第二組:桿1-桿4分別為8,3.6,5.1,4.1cm
3. 第三組:桿1-桿4分別為5.4,3.1,6.6,4.7cm

• 試問各組應屬何種機構?其迴轉情況會如何?
• 試用grashof()函數檢驗上述三組的連桿組合。
• 上述三組連桿若要成為葛拉索機構,則應如何改善?


第一組
s+g=7+4=11
p+q=6+5=11
s+g=p+q
其為葛拉索機構的特殊型,有一變換點,其搖桿的運動不可預測
因為是以鄰近最短桿之桿為接地桿(7),故為曲柄搖桿機構
當較短的側桿旋轉時,另一側桿會行擺動

第二組則是
s+g=8+3.6=11.6
p+q=5.1+4.1=9.2
s+g>p+q
其為非葛拉索機構
所有活動連桿均屬搖桿,任何桿均無法產生完整的迴轉運動

第三組則是
s+g=6.6+3.1=9.7
p+q=4.7+5.4=10.1
s+g<p+q
其為葛拉索機構
因為是以鄰近最短桿之桿為接地桿(5.4),故為曲柄搖桿機構
當較短的側桿旋轉時,另一側桿會行擺動


檢驗如下

>> granshof(7,[7,4,6,5])
link =
4 5 6 7
ans =
crank-Rocker linkage


>> granshof(8,[8,3.6,5.1,4.1])
link =
3.6000 4.1000 5.1000 8.0000
ans =
Non-granshof linkage


>> granshof(5.4,[5.4,3.1,6.6,4.7])
link =
3.1000 4.7000 5.4000 6.6000
ans =
crank-Rocker linkage

若要將上述非葛拉索機構便成葛拉索機構,可以將最長桿的長度增大,或是將最短桿的長度增大(但是注意不可以比中間長度兩桿長),使得s+g<p+q,則連桿組即可成為葛拉索機構

2007年4月10日 星期二

作業5-2-1

由於我們是探討指節在同一平面的運動情況
故可以設定各關節之連結點皆為旋轉對,僅能旋轉不能平移(DOF=1)
各指間之運動鏈形式可以課本p3-5之圖3-3-a表示
是屬於開放式的機構


使用古魯伯公式
由於連結點均是低對
故m=3(N-1)-2J

其中
N=3(連桿之總數)
J=2(運動節之總數)
==>m=2(可動度)

m>1為多項輸入,需利用與可動度等量之輸入控制項,使機構產生相對運動

作業5-2-2

第二小題

利用教學講義上面的兩個函式
function linkshape_n(A,B,dd)
if nargin==2,dd=1;
end;
d=abs(dd);
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 dd>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);
line(x,y)
axis equal

function link_angle(lens,angle,start,w)
if nargin<4,w=1;end;
if nargin<3,start=[0 0];
end
lens=lens(:);
angle=angle(:);
th=angle*pi/180;
x=cumsum([start(1);
lens.*cos(th)]);
y=cumsum([start(2);
lens.*sin(th)]);
for i=1:length(x)-1
linkshape([x(i) y(i)],[x(i+1) y(i+1)],w);
end

%用來繪出手指運動情形的函式
function drawfingers(L1,th1,th2,th3)
d1=L1; %手掌長為輸入之L1
d2=1/3*L1; %第三指間長
d3=8*d2/9; %第二指間長
d4=3*d2/5; %第一指間長
%以迴圈來跑旋轉
for n=0:5:100,
clf;
axis equal;
%計算各個水平角度以便旋轉公式使用
if n<=th1,
theta1=n;
else
theta1=th1;
end;
if n<=th2;
theta2=theta1+n;
else
theta2=theta1+th2;
end;
if n<=th3;
theta3=theta2+n;
else
theta3=theta2+th3;
end;

lens=[d1,d2,d3,d4];
angle=[0,theta1,theta2,theta3];

link_angle(lens,angle,[0,0],2.5)%呼叫link_angle函式
pause(0.05);
end;

以手掌長為10,極限角分別為90,92,98
>> drawfingers(10,90,92,98)
執行結果如下