2007年4月30日 星期一

機動學第八次作業

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

若桿2角度theta2=45度時,
則透過 Matlab 的程式 f4bar()可得:

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

val =

1.0e+003 *

◎0.0040 0 0 0 0.0212+0.0212i 0.0021+0.0021i

◎0.0021+0.0021i 0.0450 0.0100 0 0.0041-0.0245i 0.0032+0.0049i

◎0.0011+0.0028i 0.0695 -0.0163 0.4914 -0.2121-0.2121i 0

◎-0.0008+0.0049i 0.0995 -0.0050 0.3836 -1.8712-0.4391i 0

form =
1



由form=1得知,
此機構可正確組合成一閉合型四連桿結構。
因此,
我們可以知道一開始的各桿之向量位置為:

桿一:(4,0)
桿二:(2.1,2.1)
桿三:(1.1,2.8)
桿四:(-0.8,4.9)

而各桿與+x軸方向的夾角度為:

θ1= 0°
θ2= 45°
θ3= 69.5°
θ4= 99.5°

各桿的角速度為:(rad/s)

ω1= 0
ω2= 10
ω3= -16.3
ω4= -5

各桿的角加速度為:(rad/s^2)

α1= 0
α2= 0
α3= 491.4
α4=383.6


利用程式drawlinks()來描繪此時的四連桿位置:

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



利用程式fb_angle_limits()來計算此四連桿之驅動桿(桿二),
所能轉的最大及最小角度:

>> [min,Max]=fb_angle_limits([4 3 3 5],0,0)

min =
28.9550

Max =
331.0450


可得知,
桿二最大可轉至331.045°,
而最小只可到28.955°。

若以drawlimit()來計算並繪圖的話:

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

Qstart =
28.9550

Qstop =
331.0450




則和前述一致。

若考慮使驅動桿繞一圈,
既θ2=0°~360°時,
我們試以每20°作一次計算及繪圖:

>> for i=0:20:360,drawlinks([4 3 3 5],0,i,-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





我們可以發現後,
在θ2=0°、20°、340°、360°時,
並無法繪出圖形來,
是因為在前述中,
我們得知了θ2的值僅能介於28.955°~331.045°,
而以上四個θ2都已經不在這個範圍內,
故無法繪出此四個圖。

而由之前的葛拉索定理來判斷,
最長邊g=5,
最短邊s=3,
p=4,q=3,

─→8 = s+g > p+q = 7,

屬於葛拉索第二類型,
故為雙搖桿機構,
所有桿皆無法完整繞一圈。

利用draw_4paths()來繪製軌跡圖:

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

2007年4月22日 星期日

機動學第七次作業

題目一:

a = 我的學號末碼+10 = 15。

各桿之對應長度rho=[15, 20, 10]㎝,
各桿之對應起始角度theta=[0, 0, 0]度,
各桿之對應角速度為td=[0.2, 0.5, 0 .3]rad/s,
各桿之對應角加速度為tdd=[0, 0.1, 0.2]rad/s^2。

利用 Matlab 做起始分析:

>> [vec dyadata]=dyad([15 20 10],[0 0 0],[0.2 0.5 0.3],[0 0.1 0.2])

vec =
45.0000__ 16.0000__ 7.6322
0.0000___ 90.0000__ 148.3925

dyadata =
15.0000__ 0 + 3.0000i__ -0.6000
20.0000__ 0 +10.0000i__ -5.0000 + 2.0000i
10.0000__ 0 + 3.0000i__ -0.9000 + 2.0000i


以上為開始值,

下圖為起始時的分析圖。

>> dyad_draw([15 20 10],[0 0 0],[0.2 0.5 0.3],[0 0.1 0.2])



下列函式為計算當時間經過 t 秒時,
所對應到的新角度、新角速度:

function [thet, omega]=angular(time,theta,td,tdd)
%算角度變化及角速度變化後的值,配合dyad及dyad_draw始用
%time:經過時間(sec)
%theta:起始角度(°)
%td:起始角速度
%tdd:角加速度
%輸出:[角度 角速度]

t=time;
th=theta(:);
td=td(:);
tdd=tdd(:);
n=length(th);
th2=td*t+0.5*tdd*t*t;
for x=1:n
thetotal(x)=0;
for y=1:x
thetotal(x)=th2(y)+thetotal(x);
end
thet(x)=th(x)+thetotal(x);
end
omega=td+tdd*t




t=1:
第一秒時,

>> [thet, omega]=angular(1,[0 0 0],[0.2 0.5 0.3],[0 0.1 0.2])

thet =
0.2000
0.7500
1.1500

omega =
0.2000
0.6000
0.5000


角度變為[0.2 0.75 1.15],
角速度變為[0.2 0.6 0.5],
此時結構變為:

>> dyad_draw([15 20 10],[0.20 0.75 1.15],[0.2 0.6 0.5],[0 0.1 0.2])


分析:
>> [vec dyadata]=dyad([15 20 10],[0.20 0.75 1.15],[0.2 0.6 0.5],[0 0.1 0.2])

vec =

44.9991__ 19.9997__ 11.0581
0.6556__ 90.7675__ 159.6091

dyadata =

14.9999 + 0.0524i__ -0.0105 + 3.0000i__ -0.6000 - 0.0021i
19.9983 + 0.2618i__ -0.1571 +11.9990i__ -7.2256 + 1.9056i
9.9980 + 0.2007i__ -0.1003 + 4.9990i__ -2.5396 + 1.9494i




t=2:
當第二秒時,

>> [thet, omega]=angular(2,[0 0 0],[0.2 0.5 0.3],[0 0.1 0.2])

thet =
0.4000
1.6000
2.6000

omega =
0.2000
0.7000
0.7000


角度變為[0.4 1.6 2.6],
角速度變為[0.2 0.7 0.7],
此時結構變為:

>> dyad_draw([15 20 10],[0.4 1.6 2.6],[0.2 0.7 0.7],[0 0.1 0.2])


分析:
>> [vec dyadata]=dyad([15 20 10],[0.4 1.6 2.6],[0.2 0.7 0.7],[0 0.1 0.2])

vec =

44.9954__ 23.9983__ 15.8288
1.4222__ 91.7417__ 167.2363

dyadata =

14.9996 + 0.1047i__ -0.0209 + 2.9999i__ -0.6000 - 0.0042i
19.9922 + 0.5584i__ -0.3909 +13.9945i__ -9.8520 + 1.7256i
9.9897 + 0.4536i__ -0.3175 + 6.9928i__ -4.9857 + 1.7757i



t=3:
當第三秒時,

>> [thet, omega]=angular(3,[0 0 0],[0.2 0.5 0.3],[0 0.1 0.2])

thet =
0.6000
2.5500
4.3500

omega =
0.2000
0.8000
0.9000


角度變為[0.6 2.55 4.35],
角速度變為[0.2 0.8 0.9],
此時結構變為:

>> dyad_draw([15 20 10],[0.6 2.55 4.35],[0.2 0.8 0.9],[0 0.1 0.2])


分析:
>> [vec dyadata]=dyad([15 20 10],[0.6 2.55 4.35],[0.2 0.8 0.9],[0 0.1 0.2])

vec =

44.9868__ 27.9944__ 21.8848
2.3000__ 92.9197__ 172.6437

dyadata =

14.9992 + 0.1571i__ -0.0314 + 2.9998i__ -0.6000 - 0.0063i
19.9802 + 0.8898i__ -0.7119 +15.9842i__ -12.8763 + 1.4285i
9.9712 + 0.7585i__ -0.6826 + 8.9741i__ -8.2284 + 1.3799i




t=4:
當第四秒時,

>> [thet, omega]=angular(4,[0 0 0],[0.2 0.5 0.3],[0 0.1 0.2])

thet =
0.8000
3.6000
6.4000

omega =
0.2000
0.9000
1.1000


角度變為[0.8 3.6 6.4],
角速度變為[0.2 0.9 1.1],
此時結構變為:

>> dyad_draw([15 20 10],[0.8 3.6 6.4],[0.2 0.9 1.1],[0 0.1 0.2])


分析:
>> [vec dyadata]=dyad([15 20 10],[0.8 3.6 6.4],[0.2 0.9 1.1],[0 0.1 0.2])

vec =

44.9708__ 31.9857__ 29.1855
3.2888__ 94.3001__ 176.8392

dyadata =

14.9985 + 0.2094i__ -0.0419 + 2.9997i__ -0.5999 - 0.0084i
19.9605 + 1.2558i__ -1.1302 +17.9645i__ -16.2936 + 0.9788i
9.9377 + 1.1147i__ -1.2262 +10.9314i__ -12.2475 + 0.6388i




t=5:
當第五秒時,

>> [thet, omega]=angular(5,[0 0 0],[0.2 0.5 0.3],[0 0.1 0.2])

thet =
1.0000
4.7500
8.7500

omega =
0.2000
1.0000
1.3000


角度變為[1.0 4.75 8.75],
角速度變為[0.2 1.0 1.3],
此時結構變為:

>> dyad_draw([15 20 10],[1.0 4.75 8.75],[0.2 1.0 1.3],[0 0.1 0.2])


分析:
>> [vec dyadata]=dyad([15 20 10],[1.0 4.75 8.75],[0.2 1.0 1.3],[0 0.1 0.2])

vec =

44.9444__ 35.9689__ 37.7053
4.3886__ 95.8820__ -179.5933

dyadata =

14.9977 + 0.2618i__ -0.0524 + 2.9995i__ -0.5999 - 0.0105i
19.9313 + 1.6562i__ -1.6562 +19.9313i__ -20.0969 + 0.3370i
9.8836 + 1.5212i__ -1.9776 +12.8487i__ -17.0076 - 0.5942i

2007年4月13日 星期五

機動學第六次作業

題目一:




桿數計算

如上圖所示,
原本應有十三個連桿數,
但因H結為三桿共用的滑槽結,
且桿8與桿12共用的R結在滑槽內移動,
為計算上的方便,
將H視為一旋轉結加上一虛設的稜柱結,
故該虛設的稜柱結再增加一桿。

共14個連桿。


◎結數計算

而在C、D、E、G、H、I處個為三桿共用一個R結,
故計算為12個,
再加上A、B、F 的旋轉結:
→→R結總共 15個;

B處(桿2、3)有一個稜柱節、
F處(桿10、1)有一個滑塊與桿1間的稜柱結、
H處(虛設桿、桿1)有一稜柱結:
→→P結總共3個;

共18個結。


◎可動度計算

R結和P結的連結度都是1,
藉由古魯伯公式,
M = 3(N-J-1)+Σfi = 3(14-18-1)+18 = 3
可動度為3。

由 Matlab 的 function[df] = gruebler() 計算可動度,得到:

>>gruebler(14,[15 3])
ans = 3


因此可得到印証。


◎滑塊的影響

F處:
若去除整個元件至F處滑塊的連結,
既桿9、10去除後,
則共少掉二桿、二旋轉結、一稜柱結,
可動變為:

>> gruebler(12,[13 2])
ans = 3


可動度仍然為3,
因此我們發現滑塊的有無對於可動度沒有影響。

但倘若該滑塊改為固定的旋轉結的話,
則連桿數少一(少桿10)、少一稜柱結,
可動度變為:

>> gruebler(13,[15 2])
ans = 2


可動度減少了。


B處:
若是將B處的滑塊更動,
將處改為不能滑動的,
但該處仍可旋轉,
則效果等同於將桿4於B處的結移置A處變成三桿共用一旋轉結,
既桿1、2、4共旋轉結,
則總桿數少一(少桿3)、稜柱結少一,
可動度變為:

>> gruebler(13,[15 2])
ans = 2


發現更動B處的滑塊也會使可動度降低。


◎滑槽的影響

若滑槽改為整個H處共用旋轉結,
變成三桿(桿8、12、13)共用一旋轉結,
則少了虛設的桿14、少了一稜柱結,
故可動度變為:

>> gruebler(13,[15 2])
ans = 2


可動度下降了。



題目二:



上圖所示,
由於桿1和地面相連,
並沒有結,
因此可動度為0,
桿1和地面視為一桿。



A、F為旋轉結,自由度為1;
B、C、E為球結,自由度為3;
D為筒結,自由度為2。



此為立體空間分析,
會有六個自由度。
此結構共6個桿,6個結。
自由度為:

M = 6(N-J-1)+Σfi = 6(6-6-1)+ [2(1)+3(3)+1(2)] = 7

而利用Matlab求得的可動度為:

>> gruebler(6,[2 0 0 3 1])
ans = 7


可得知兩個計算結果是一樣的,
是可以動的機構。



但桿2及桿4本身可以自轉,
故有2個楕性自由度。
因此實際可動度為:
7-2=5。


題目三:

◎葛拉索機構

在討論四連桿運動時,
我們若將這四桿中最長桿的長度定為g,
最短桿長度定為s,
其餘兩桿長度為p及q,
則當 s+g < p+q 時,
我們稱此機構為葛拉索機構。

其餘狀況為非葛拉索機構。

如當s+g > p+q 時,
亦稱為葛拉索第二型,
其無論哪一桿做為固定桿,
該機構皆為雙搖桿型。

而 s+g = p+q 時,
為特殊狀況,
或稱葛拉索第三型,
或稱葛拉索變點機構。
該機構運作中,
當連桿到達死點位置時,
則下一刻的運動方向可前進或後退,
變得不可預知。


◎現在有三組連桿來討論

第一組: 桿1~桿4分別為7,4,6,5 cm。

最長桿g=7
最短桿s=4
p=6
q=5

=> 11 = s+g = p+q = 11

為非葛拉索機構,
是葛拉索第三型。
此機構為中立連桿組,
在運作過程時,
會發生四個連桿共一線的時候。
當該共線狀況發生時,
其下一刻的運動可前亦可後,
變得無法預知。

利用 Matlab 的 grashof() 來驗証:

> grashof(1,[7 4 6 5])
ans = Neutral Linkage


與計算相同。

若此機構要成為葛拉索型,
則將最短桿(s=4)再縮短;
或將最長桿(g=7)再縮短,但不可小於6;
或將另外兩桿增長,但各自不可超過7。


第二組:桿1~桿4分別為8,3.6,5.1,4.1 cm

最長桿g=8
最短桿s=3.6
p=5.1
q=4.1

=> 11.6 = s+g > p+q = 9.2

非葛拉索機構,
為葛拉索第二型。
此型的特點,
既為無論何桿為固定桿,
該機構皆為雙搖桿機構。

利用 Matlab 的 grashof() 來驗証:

>> grashof(1,[8 3.6 5.1 4.1])
ans = Non-Grashof Linkage


合乎計算。

若該機構要改為葛拉索型,
(s+g)-(p+q) = 2.4 ,
故最長桿和最短桿的總收縮量超過2.4,
(因8-2.4=5.6 ,仍為最長桿,故可只縮短桿1)
但最長桿不可縮到比5.1小;
或者中間兩桿總伸長量超過2.4即可,
但兩桿最後的長度不可超過8。


第三組:桿1~桿4分別為5.4,3.1,6.6,4.7 cm

最長桿g=6.6
最短桿s=3.1
p=5.4
q=4.7

=> 9.7 = s+g < q = 10.1

此為葛拉索結構。
而桿1為固定桿,
該固定桿為最短桿之鄰桿,
故此機構為曲柄搖桿型。
桿2可做迴轉,為曲柄;
桿3為耦桿;
桿4為搖桿,只做擺動。

利用 Matlab 的 grashof() 來驗証:

>> grashof(1,[5.4 3.1 6.6 4.7])
ans = Crank-Rocker Linkage


與計算相符。

2007年4月11日 星期三

機動學第五次作業

題目一:


手臂旋轉前


程式碼:

function body(L1,L2,L3,theta1,theta2,theta3)
%畫手
%L1:上臂長
%L2:前臂長
%L3:手掌長
%theta1:上臂與水平的角度
%theta2:前臂與上臂的夾角
%theta3:手掌與前臂的夾角
%套用trans4(座標,角度,轉換模式)及linkshape(起點,終點,大小)兩函式

p0=[0 0;L1 0;L2 0;L3 0]; %將各連桿以原點為起點,並座標化
p1=trans4(p0(2,:),-theta1,5); %上臂作逆時鐘轉
p2=trans4(p0(3,:),-theta1+theta2-180,5); %前臂旋轉,並考慮上臂的旋轉角度
p3=trans4(p0(4,:),-theta1+theta2+theta3,5); %手掌旋轉,並考慮上臂及前臂的旋轉角度
P0=p0(1,:); %原點
P1=p1; %肘關節座標
P2=p2+P1; %手腕間關節座標
P3=p3+P2; %手掌末端座標
linkshape(P0,P1,10) %畫出上臂
linkshape(P1,P2,8) %畫出前臂
linkshape(P2,P3,5) %畫出手掌
axis equal


執行第三小題:

>> body(35,30,10,90,-45,-30) 




題目二:

手指的關節,最多彎曲90°,最少彎曲0°。
以我的手為例,食指三個指節長為5㎝、3㎝、2㎝,則彎曲程度如下圖所示。
而另外三指雖然長度不同,但可彎曲範圍仍一樣。