%L1是上手臂的長度
%L1是下手臂的長度
%L1是手腕的長度
L1=35;
L2=30;
L3=10;
r1=L1/6;
r2=L1/12;
r3=L3/2;
r4=L2/11;
%以下是我設計的外型
arm1x=[0 r1*cosd(150)+r1 r1*cosd(120)+r1 r1 11*r2 r2*cosd(60)+11*r2 r2*cosd(30)+11*r2 r2*cosd(0)+11*r2 r2*cosd(-30)+11*r2 r2*cosd(-60)+11*r2 11*r2 r1 r1*cosd(240)+r1 r1*cosd(210)+r1 0 L1];
arm1y=[0 r1*sind(150) r1*sind(120) r1 r2 r2*sind(60) r2*sind(30) r2*sind(0) r2*sind(-30)r2*sind(-60) -r2 -r1 r1*sind(240) r1*sind(210) 0 0];
arm2x=[L1 r4*cosd(30)+L1-L2+10*L2/11 r4*cosd(60)+L1-L2+10*L2/11 L1-L2+10*L2/11 L1-L2+L2/11 r4*cosd(120)+L1-L2+L2/11 r4*cosd(150)+L1-L2+L2/11 r4*cosd(180)+L1-L2+L2/11 r4*cosd(210)+L1-L2+L2/11 r4*cosd(240)+L1-L2+L2/11 L1-L2+L2/11 L1-L2+10*L2/11 r4*cosd(-60)+L1-L2+10*L2/11 r4*cosd(-30)+L1-L2+10*L2/11 r4*cosd(0)+L1-L2+10*L2/11 L1-L2];
arm2y=[0 r4*sind(30) r4*sind(60) r4 r4 r4*sind(120) r4*sind(150) r4*sind(180) r4*sind(210) r4*sind(240) -r4 -r4 r4*sind(-60) r4*sind(-30) r4*sind(0) 0];
palmx=[L1-L2 L1-L2 L1-L2+L3 L1-L2 L1-L2 L1-L2+L3];
palmy=[0 r4 0 -r4 0 0];
axis equal
line(arm1x,arm1y);
line(arm2x,arm2y);
line(palmx,palmy);
以是是我在零度時的圖
p.5-1-2
%function body 的設計
function body(L1,L2,L3,theta1,theta2,theta3)
r1=L1/6;
r2=L1/12;
r3=L3/2;
r4=L2/11;
arm1x=[0 r1*cosd(150)+r1 r1*cosd(120)+r1 r1 11*r2 r2*cosd(60)+11*r2 r2*cosd(30)+11*r2 r2*cosd(0)+11*r2 r2*cosd(-30)+11*r2 r2*cosd(-60)+11*r2 11*r2 r1 r1*cosd(240)+r1 r1*cosd(210)+r1 0 L1];
arm1y=[0 r1*sind(150) r1*sind(120) r1 r2 r2*sind(60) r2*sind(30) r2*sind(0) r2*sind(-30) r2*sind(-60) -r2 -r1 r1*sind(240) r1*sind(210) 0 0];
arm2x=[L1 r4*cosd(30)+L1-L2+10*L2/11 r4*cosd(60)+L1-L2+10*L2/11 L1-L2+10*L2/11 L1-L2+L2/11 r4*cosd(120)+L1-L2+L2/11 r4*cosd(150)+L1-L2+L2/11 r4*cosd(180)+L1-L2+L2/11 r4*cosd(210)+L1-L2+L2/11 r4*cosd(240)+L1-L2+L2/11 L1-L2+L2/11 L1-L2+10*L2/11 r4*cosd(-60)+L1-L2+10*L2/11 r4*cosd(-30)+L1-L2+10*L2/11 r4*cosd(0)+L1-L2+10*L2/11 L1-L2];
arm2y=[0 r4*sind(30) r4*sind(60) r4 r4 r4*sind(120) r4*sind(150) r4*sind(180) r4*sind(210) r4*sind(240) -r4 -r4 r4*sind(-60) r4*sind(-30) r4*sind(0) 0];
palmx=[L1-L2 L1-L2 L1-L2+L3 L1-L2 L1-L2 L1-L2+L3];
palmy=[0 r4 0 -r4 0 0];
axis equal
line(arm1x,arm1y);
line(arm2x,arm2y);
line(palmx,palmy);
clf
%這個for loop 在這裡沒用 在第四小題才有用
for n=1:1;
axis equal
AXIS([-80 80 -70 70]);
x1=arm1x*cosd(-theta1(n))-arm1y*sind(-theta1(n));
y1=arm1x*sind(-theta1(n))+arm1y*cosd(-theta1(n));
line(x1,y1)
theta2(n)=180+theta1(n)-theta2(n);
x2=arm2x*cosd(-theta2(n))-arm2y*sind(-theta2(n))+x1(16)-(L1-L2)*cosd(-theta2(n));
y2=arm2x*sind(-theta2(n))+arm2y*cosd(-theta2(n))+y1(16)-(L1-L2)*sind(-theta2(n));
line(x2,y2)
theta3(n)=180+theta2(n)-theta3(n);
x3=palmx*cosd(-theta3(n))-palmy*sind(-theta3(n))+x2(15)-(L1-L2)*cosd(-theta3(n));
y3=palmx*sind(-theta3(n))+palmy*cosd(-theta3(n))+y2(15)-(L1-L2)*sind(-theta3(n));
line(x3,y3)
end;
p.5-1-3
將數值輸入body(35,30,10,90,-45,-30)
下面是我theta1=90 theta2=-45 theta3=-30 時的圖
L1=35;
r1=L1/6;
arm1x=[0 r1*cosd(150)+r1 r1*cosd(120)+r1 r1 11*r2 r2*cosd(60)+11*r2 r2*cosd(30)+11*r2 r2*cosd(0)+11*r2 r2*cosd(-30)+11*r2 r2*cosd(-60)+11*r2 11*r2 r1 r1*cosd(240)+r1 r1*cosd(210)+r1 0 L1];
clf
%將每個角度分成十份
for n=1:10;
theta2(n)=180+theta1(n)-theta2(n);
http://www.youtube.com/watch?v=ZEM30bnEnPY
L3=P*(2.5/17);
f1x=[0 L1]
axis equal
每一根手指的極限位置
theta1=linspace(0,90,10)
w=vr r為手半徑 w為angular velocity
2 則留言:
做的很好,但請多加過程說明.
程式寫作最好多採用function的格式,其使用彈性較大,只要輸入參數不必更改內容。
張貼留言