|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
下面的代码在2015b可以运行;" M0 k, g# g$ g5 L) N8 B
clear;
8 `$ Z. w" E0 @1 R1 fclc;* Y4 ?* j2 H( ?; O4 t9 O
startup_rvc;& M0 J/ H1 i; \$ d: N; a3 U
n = 3;8 A* K4 L0 o' N$ F R
switch n5 V4 Q c+ I0 c, [
case 1
9 I% j) Z1 U! [' ]% L %建立机器人模型4 d# m1 }& A7 L, I7 b2 J
% theta d a alpha offset
- G5 n% x, Z" C9 F; V! k EL1=Link([0 0.4 0.025 pi/2 0 ]); %定义连杆的D-H参数2 R0 S, n, Y. |) A- q7 }4 a
L2=Link([pi/2 0 0.56 0 0 ]);
: d$ K- Z. W; e0 J8 PL3=Link([0 0 0.035 pi/2 0 ]);
) J) J; r$ \* `3 h! }# D) \ YL4=Link([0 0.515 0 pi/2 0 ]);
$ d/ M, {0 O Q" [9 T) @, }1 K3 A$ Q* kL5=Link([pi 0 0 pi/2 0 ]);7 |: @+ A" K- r( W/ P; y$ {- ? B
L6=Link([0 0.08 0 0 0 ]);
7 c& e+ m. e" d x) Zrobot=SerialLink([L1 L2 L3 L4 L5 L6],'name','manman'); %连接连杆,机器人取名manman
0 _3 w4 ]. d% r R/ c! o( _& x* mrobot.plot([0,pi/2,0,0,pi,0]);%输出机器人模型,后面的六个角为输出时的theta姿态
) R0 w X; ]& S7 t Irobot.display();
: G8 r9 b0 _, W% V" O, steach(robot);- ~& O7 P5 ?# H9 m
- \+ v. ~9 |3 n" x- |) b i
case 2; D4 d1 b. n4 _; P
%建立机器人模型
2 H& H- i0 V" U1 U% theta d a alpha offset
o6 V9 G- j+ o3 n2 m; n/ YL1=Link([0 0.4 0.025 pi/2 0 ]); %定义连杆的D-H参数7 C& i% `" l4 f
L2=Link([pi/2 0 0.56 0 0 ]);
5 ?* a' F0 ~/ yL3=Link([0 0 0.035 pi/2 0 ]);
; U- a O8 {# j: K/ {; c( y5 Q2 z- r YL4=Link([0 0.515 0 pi/2 0 ]);
5 A+ Z; {- N: V' }+ BL5=Link([pi 0 0 pi/2 0 ]);6 e' t% s o! Y! D5 c
L6=Link([0 0.08 0 0 0 ]);' }: m0 O/ Q+ i9 P! q0 J, I) W
robot=SerialLink([L1 L2 L3 L4 L5 L6],'name','manman'); %连接连杆,机器人取名manman
" p2 a- ?) Z' w* ^- wtheta=[0,0,0,0,0,0];%指定的关节角$ U* D5 ~3 O. g% F
p=robot.fkine(theta)%fkine正解函数,根据我们给定的关节角theta,求解出末端位姿p# Y* v; ~! {/ s7 s
q=robot.ikine(p)%ikine逆解函数,根据我们给定的末端位姿p,求解出关节角q% n g0 T, |( ^; S- \% \3 G# k6 N9 \# `
- Q% [) s! l; L. I9 |
case 3
( I8 G0 K' p1 ]3 i3 ~%建立机器人模型$ S4 v- s. X" P6 N! Q/ a+ c. `! D! v
% theta d a alpha offset" G: K# |8 ?% E$ V6 L1 l6 E
L1=Link([0 0.4 0.025 pi/2 0 ]); %定义连杆的D-H参数
5 v9 Q$ n: Q# b2 j8 L; k$ wL2=Link([pi/2 0 0.56 0 0 ]);
$ Q5 \% K5 P: p; _+ O1 F0 jL3=Link([0 0 0.035 pi/2 0 ]);
Y3 m/ R1 L; x! e$ @- _: u! TL4=Link([0 0.515 0 pi/2 0 ]);
: a" @" q' Y) u& J2 zL5=Link([pi 0 0 pi/2 0 ]);# z9 r( o# o5 S O, V4 N5 t2 x
L6=Link([0 0.08 0 0 0 ]);$ V" ^; w; @0 H2 ^. |$ X
robot=SerialLink([L1 L2 L3 L4 L5 L6],'name','manman'); %连接连杆,机器人取名manman
& ?2 b6 w3 ^2 h H9 R$ P/ \2 M$ X5 {T1=transl(0.5,0,0);%根据给定起始点,得到起始点位姿
6 n; ~" o ]# O- t! BT2=transl(0,0.5,0);%根据给定终止点,得到终止点位姿4 ?, w( `- q5 u
5 V: M, J7 M7 X& Y
q1=robot.ikine(T1);%根据起始点位姿,得到起始点关节角" L7 f) R+ L) ~8 p: k& h" p
q2=robot.ikine(T2);%根据终止点位姿,得到终止点关节角7 l/ c+ z$ c( [9 |
[q ,qd, qdd]=jtraj(q1,q2,50); %五次多项式轨迹,得到关节角度,角速度,角加速度,50为采样点个数) j# i+ @( F. y
grid on
/ }) w: G3 T8 Q6 LT=robot.fkine(q);%根据插值,得到末端执行器位姿
+ S% V. Q6 }! p" |1 H9 `nT=T.T; plot3(squeeze(nT(1,4, ),squeeze(nT(2,4, ),squeeze(nT(3,4, ));%输出末端轨迹! P& r( w; Y8 A6 u( e
hold on. l1 |- e5 E5 B5 {+ }- R
robot.plot(q);%动画演示: W+ v; x: J j
end" y" e8 O6 i3 V% O+ }
& h, f0 J5 O T0 m2 Q* t2 r
然后修改了下连杆的D-H参数,以及起始和终止点的参数。
8 g9 A- w+ L: ~: ]4 g%按UR5的DH参数修改后,第一个点打孔的轨迹
; X8 Z0 A% b2 O, M3 C4 x% L; p8 ^%建立机器人模型
8 C% L, T; u6 |% theta d a alpha offset
, D0 a( w" B+ `! KL1=Link([0 89.2 0 pi/2 0 ]); %定义连杆的D-H参数
2 ?( v, D! |2 H4 ~; O; SL2=Link([pi/2 0 -425 0 0 ]); i( Z( r6 S0 ~: r
L3=Link([0 0 -392 0 0 ]);
/ Y: L: ]' Z+ s, [L4=Link([0 109.3 0 pi/2 0 ]);+ r$ Y" G3 i& ]0 @: ~1 y
L5=Link([pi 94.75 0 pi/2 0 ]);+ c6 r+ |, T' L
L6=Link([0 82.5 0 0 0 ]);
y! R7 M: z6 Q8 R( P& hrobot=SerialLink([L1 L2 L3 L4 L5 L6],'name','manman'); %连接连杆,机器人取名manman
& Q# j. p9 R/ E" y. ?theta=[0,0,0,0,0,0];%指定的关节角$ A# a" U' r; o( q
p=robot.fkine(theta)%fkine正解函数,根据我们给定的关节角theta,求解出末端位姿p
, I3 g4 l/ K' X% Y9 W' ~! R- y1 Aq=robot.ikine(p)%ikine逆解函数,根据我们给定的末端位姿p,求解出关节角q! H A+ \, c! O1 W/ x
8 G, f; O* _$ u4 e0 \( v
6 A( U/ l2 r% u4 @9 R%建立机器人模型) p0 j( D; R9 v" V6 {0 B3 \
% theta d a alpha offset
* W: A& x8 A; j2 A) M: oL1=Link([0 89.2 0 pi/2 0 ]); %定义连杆的D-H参数- i7 Q* b3 `6 H* R
L2=Link([pi/2 0 -425 0 0 ]);- R, ?6 _0 f3 X! I2 S7 p7 C
L3=Link([0 0 -392 0 0 ]);
# ]- Y8 r- Y0 d$ EL4=Link([0 109.3 0 pi/2 0 ]);
3 T/ T, |# e9 {' \L5=Link([pi 94.75 0 pi/2 0 ]);! r& ~; o" R, i, ?, d3 Y2 ^1 g: |- R
L6=Link([0 82.5 0 0 0 ]);
6 ]" K' e1 {3 I5 f2 s4 X& mrobot=SerialLink([L1 L2 L3 L4 L5 L6],'name','manman'); %连接连杆,机器人取名manman; [' L' t# n4 N* q
T1=transl(-33.8962,70.5806,-53.6681);%根据给定起始点,得到起始点位姿
$ Q5 O* l9 E5 l- t. C0 B* n- ?! U) N+ @T2=transl(-31.3206,68.8281,-55.4449);%根据给定终止点,得到终止点位姿9 x4 x" Q/ Z4 G. w
q1=robot.ikine(T1);%根据起始点位姿,得到起始点关节角
' ?, e9 Y8 B' l( Q8 @/ {% g" Pq2=robot.ikine(T2);%根据终止点位姿,得到终止点关节角
" s( ? z: n* L3 b2 W4 Q/ b% I[q ,qd, qdd]=jtraj(q1,q2,50); %五次多项式轨迹,得到关节角度,角速度,角加速度,50为采样点个数
1 a5 V) V+ G9 w3 C1 Ugrid on
- J6 | N" y$ }& d' {3 _$ D; h1 yT=robot.fkine(q);%根据插值,得到末端执行器位姿
0 r2 v% X9 H9 Q2 ^+ qnT=T.T; plot3(squeeze(nT(1,4,:)),squeeze(nT(2,4,:)),squeeze(nT(3,4,:)));%输出末端轨迹
. g" X- G O9 N6 Ihold on; i) c6 ? R8 ^
robot.plot(q);%动画演示5 P6 d3 T7 X+ B8 F
( o: P9 X& g7 x. Q' P) O# U; z
4 M2 J: y ?2 H) q0 \! w机器人可以显示出来,但自动轨迹规划时出错。% o) J% M; U) T/ t* S! l( l
# ~( X" F+ i' z/ O出现如下错误:“ f! {3 j7 Q! [1 l) Q. V+ t5 ?
警告: ikine: rejected-step limit 100 exceeded (pose 1), final err 0.375755
% g) Q- j% s5 e) F' J/ @; z7 P> In SerialLink/ikine (line 244)
* I9 u4 N- |4 _: s* t In t (line 27)
8 f( {! H+ T0 \, U' }* V2 Z. {. t- W警告: failed to converge: try a different initial value of joint coordinates
- X. \: ~# l H8 ]/ `; w& k> In SerialLink/ikine (line 273)/ C" @! D( E& ?# i o; h, N
In t (line 27)% w5 ]/ \9 w. N4 O
警告: ikine: rejected-step limit 100 exceeded (pose 1), final err 0.40822
. g6 [+ s. b7 \1 j7 y5 p> In SerialLink/ikine (line 244)
/ s* Q0 X- ?+ c8 n' P, \ In t (line 28)
0 _* t2 [1 f3 Y& _1 W/ b. F警告: failed to converge: try a different initial value of joint coordinates
/ t5 t2 K' U8 d( k/ g. d% }> In SerialLink/ikine (line 273)
9 K1 u) s5 d* G+ x" L# r9 A In t (line 28)
7 j! |6 E% D5 E: u' v) K. g0 X错误使用 SerialLink/fkine (line 84)
( i9 L! | u/ a8 ]' T; Nq must have 6 columns8 g4 R" C4 x% T- E/ D
* a) \3 f$ Z* ?$ k3 r出错 t (line 31)
* U+ o' z; `/ q! b0 I9 }3 D; W/ AT=robot.fkine(q);%根据插值,得到末端执行器位姿”
l2 `0 c+ @ W# `' L9 H+ k! M7 g( B4 h# m
调试发现q1和q2都是空矩阵,导致q也是空矩阵。
?5 W' k: U9 m( ?- o3 W为何得不到那2点的关节角?. M2 D8 _' P9 q w
4 v4 \3 A+ U7 O, B: A* t F0 `& f" ~8 ^2 ]
: T1 m5 u) x' X) ^' P
|
|