2007年4月18日 星期三

第五題

b94611021 張淳皓

5.1.1
手臂外形
arm1=[0 0;L1/2 -ld1/2;L1 0;L1/2 ld1/2;0 0;L1 0]
arm2=[0 0;L2/2 -ld2/2;L2 0;L2/2 ld2/2;0 0;L2 0]
palm=[0 0;0 -ld3;L3 -ld3;L3 0;ld3 0;ld3 ld3;0 ld3;0 0]
圖片

5.1.2
%程式內容
%theta1~3單位為degree
function body(L1,L2,L3,theta1,theta2,theta3)

%ld1~3分別為手臂及手掌的寬度
ld1=L1/3
ld2=L2/3
ld3=L3/5

%建立手臂及手掌的矩陣
arm1=[0 0;L1/2 -ld1/2;L1 0;L1/2 ld1/2;0 0;L1 0]
arm2=[0 0;L2/2 -ld2/2;L2 0;L2/2 ld2/2;0 0;L2 0]
palm=[0 0;0 -ld3;L3 -ld3;L3 0;ld3 0;ld3 ld3;0 ld3;0 0]

%清空圖片準備畫圖
clf
axis equal

%上臂之旋轉 紅色
m1=arm1(:,1)*cosd(-theta1)-arm1(:,2)*sind(-theta1)
n1=arm1(:,1)*sind(-theta1)+arm1(:,2)*cosd(-theta1)
patch(m1,n1,'r')

%下臂之旋轉 藍色
theta2=180+theta1-theta2
m2=arm2(:,1)*cosd(-theta2)-arm2(:,2)*sind(-theta2)+m1(3)
n2=arm2(:,1)*sind(-theta2)+arm2(:,2)*cosd(-theta2)+n1(3)
patch(m2,n2,'b')

%手掌旋轉 綠色
theta3=180+theta2-theta3
m3=palm(:,1)*cosd(-theta3)-palm(:,2)*sind(-theta3)+m2(3)
n3=palm(:,1)*sind(-theta3)+palm(:,2)*cosd(-theta3)+n2(3)
patch(m3,n3,'g')

5.1.3
圖片

5.1.4
動畫程式
動畫

5.2.1
  若將手指連接手掌的指節稱為第一指節,指間之指節稱為第三指節,則第三與第二指節為只能旋轉90度的旋轉節,第一指節在與第二、三指節同方向上亦有90度的限制,然而其可視為一球形關節,故第一指節在垂直於第二、三指節的方向上亦可做小角度的轉動。
  套用自由度計算,可將手掌視為接地端,手掌為第一桿,指節分別為第二、第三、四桿,總桿數為四,若只考慮第二、三指節的旋轉平面,則第一指節可視為一2d的旋轉節,故共有三個節,節之自由度總和為1+1+1=3
 則 M=3(N-J-1)+sum(f)=3(4-3-1)+3=3 自由度為三,可由三個指節分別作驅動桿

5.2.2
 在此我將body函式燒為改寫為繪製finger的函式
function finger(L1,L2,L3,theta1,theta2,theta3)

arm1=[0 0;L1/2 -L3/2;L1 0;L1/2 L3/2;0 0;L1 0]
arm2=[0 0;L2/2 -L3/2;L2 0;L2/2 L3/2;0 0;L2 0]
palm=[0 0;L3/2 -L3/2;L3 0;L3/2 L3/2;0 0;L3 0]
axis equal
m1=arm1(:,1)*cosd(-theta1)-arm1(:,2)*sind(-theta1)
n1=arm1(:,1)*sind(-theta1)+arm1(:,2)*cosd(-theta1)
patch(m1,n1,'r')
theta2=180+theta1-theta2
m2=arm2(:,1)*cosd(-theta2)-arm2(:,2)*sind(-theta2)+m1(3)
n2=arm2(:,1)*sind(-theta2)+arm2(:,2)*cosd(-theta2)+n1(3)
patch(m2,n2,'b')
theta3=180+theta2-theta3
m3=palm(:,1)*cosd(-theta3)-palm(:,2)*sind(-theta3)+m2(3)
n3=palm(:,1)*sind(-theta3)+palm(:,2)*cosd(-theta3)+n2(3)
patch(m3,n3,'g')

 再由呼叫finger函式分別繪製
小指

patch([0,-8,-8,0,0],[0 0 2 2 0],'r')
%此為繪製手掌
a=linspace(0,90,10)
b=linspace(180,90,10)
c=linspace(180,90,10)
for n=1:10
finger(5,3,2.7,a(n),b(n),c(n))
end

無名指

patch([0,-8,-8,0,0],[0 0 2 2 0],'r')
%此為繪製手掌
a=linspace(0,90,10)
b=linspace(180,90,10)
c=linspace(180,90,10)
for n=1:10
finger(5.5,3.5,3,a(n),b(n),c(n))
end

中指

patch([0,-8,-8,0,0],[0 0 2 2 0],'r')
%此為繪製手掌
a=linspace(0,90,10)
b=linspace(180,90,10)
c=linspace(180,90,10)
for n=1:10
finger(6,3.8,3,a(n),b(n),c(n))
end

食指
patch([0,-8,-8,0,0],[0 0 2 2 0],'r')
%此為繪製手掌
a=linspace(0,90,10)
b=linspace(180,90,10)
c=linspace(180,90,10)
for n=1:10
finger(5.5,3.5,2.8,a(n),b(n),c(n))
end


5.2.3
 由於得不到確切的球員指長數據,在此我以自己的指長做代表,假若我能投出時速90裡的棒球,那我的手指尖在球投出的瞬間至少與球等速,同為90裡的時速
 並假設投球過程中為等加速度運動,,整組投球動作歷時0.8秒

 則各手指之速度與加速度為

    速度  角速度  角加速度
食指  4kcm/s 354rad/s 443rad/s2
中指  4kcm/s 313rad/s 391rad/s2
無名指 4kcm/s 333rad/s 416rad/s2
小指  4kcm/s 374rad/s 468rad/s2

此組數據是以手指對地之速度得來,未捨去手臂帶動之速度與加速度

沒有留言: