EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于机器人末端轨迹的仿真,用的都是这一类的代码,会涉及到squeeze函数,不管怎样,都会有“位置 1 的索引超出数组范围(不能超过 1)”的报错。
. R7 q! |8 ^9 ^; Y
8 Z7 R0 c6 [ ^6 JL1 =Link( 'd',0.525, 'a',0.15,'alpha',pi/2) ;7 z& h; o7 h# `( s6 o
y D$ y) q: d1 yL2 =Link( 'd',0, 'a',0.79, 'alpha',0) ;
/ T! U: H) z( e" X6 _; T. `7 ~8 p0 l( M
L3 =Link( 'd',0, 'a',0.25, 'alpha',pi/2);; l, n4 m7 t/ G4 l8 A1 u8 E
; ~% h" `% e' I8 J5 w, Y
L4 =Link( 'd',0.835, 'a',0, 'alpha',-pi/2);" k" M* `3 T( v" V; G1 q' ^
1 c: a# y8 J& Z8 ~L5 =Link( 'd',0, 'a',0, 'alpha',pi/2) ;
' E& `% F; y6 p# e4 r1 i, P2 a b6 G% p% Q, t. C
L6 = Link( 'd', 0.1,'a',0,'alpha',0) ;
7 V, _* R. n' t/ } T6 n
3 ^, w! O3 q+ W+ H2 M/ }& {8 nVFb=isrevolute( L1) ; %测试是否为旋转关节& }2 h( N+ V, t: ]# y0 X# e
5 L) t9 B) z! z7 T: Q0 y7 ~" t8 q. \
robot=SerialLink([L1, L2, L3, L4, L5, L6]); %创建机器人模型
% r# t) e3 j; A4 {9 W6 P: w- h, P4 Q3 R$ W/ v2 M
robot.name='M-20iA'; %机器人模型名称
! n: `2 d) g* a. f9 R/ j8 X0 _: ^" x! o# y% V# ~6 C$ ^! Y
theta=[0 pi/2 0 0 0 0]; %关节角度初值& n5 n: V) ~/ s, _
- j6 `8 t) U# g: yt=[0:0.05:4]’;
% I" d% v, j: x4 `0 f7 w& ^
( o- ^: o& E! G# YqA=[0 pi/2 0 0 0 0];
$ D: C H7 p# e
1 K) Y1 {& m( \. m9 u4 M% AqB=[pi/2 pi/3 -pi/6 0 pi/3 pi/2];
+ w5 |) L% ?5 f6 @' Z( Z: Q, \. m( o0 e* q: M7 k, t2 j7 r
q=jtraj(qA, qB, t);( x/ {" t* c# Z5 X4 a/ s
8 k1 g y K+ K" N
plot(robot,q);
- P7 y( f7 |: R W5 s
6 m @: V/ M2 v) ~; N# wT=fkine(robot,q);- y- Y; q5 m; r# ?# D; r4 g0 S% e4 P
: o8 l2 `# d8 z% r$ R2 V+ e$ @5 [x=squeeze(T(1,4,:)); 0 e" z* j5 u1 ?+ q9 E1 X& M( a+ K
y=squeeze(T(2,4,:)); $ B+ c7 n }' W
z=squeeze(T(3,4,:));
7 b# q1 J; |! e) E/ W4 ~+ {subpIoT(3,1,1);piot(t,x);xlabel(‘时间/s’);ylabel(‘x/m’);
8 v- T2 u2 ^- |2 N- Z$ T& f4 |subpiot(3,1,2);piot(t,y);xlabel(‘时间/s’);ylabel(‘x/m’); ( `% u$ h; `8 f4 i; f
subpiot(3,1,3);piot(t,z);xlabel(‘时间/s’);ylabel(‘x/m’);
: m* V, n6 b' N# p& K0 K
请问该如何解决? 6 Q. T; s. n. ~3 Z
|