EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于机器人末端轨迹的仿真,用的都是这一类的代码,会涉及到squeeze函数,不管怎样,都会有“位置 1 的索引超出数组范围(不能超过 1)”的报错。
2 n# y# m6 o2 t: }( G# M G' f) J) d: ~5 }
L1 =Link( 'd',0.525, 'a',0.15,'alpha',pi/2) ;
' `& z9 ]- O% Z, X6 h1 q4 I1 z" p5 o: O; p. R7 K
L2 =Link( 'd',0, 'a',0.79, 'alpha',0) ;
# y, \3 F! H5 [" G3 [6 o$ T
7 y. r$ H) d* s$ `L3 =Link( 'd',0, 'a',0.25, 'alpha',pi/2);
7 B2 P% j/ C2 b2 m h7 t* W* K' }. R- i4 s7 l( ^- }9 e6 |5 C. Y
L4 =Link( 'd',0.835, 'a',0, 'alpha',-pi/2);
' r& _5 m2 z5 K: ^; V! X( g( ]
' B2 T1 v/ S! g8 FL5 =Link( 'd',0, 'a',0, 'alpha',pi/2) ;
8 L: C, R# v+ G. s5 }4 A" J k+ n( A1 I3 _- m; W5 i9 Y
L6 = Link( 'd', 0.1,'a',0,'alpha',0) ;
& b% z& q" D) U" E: Z: i* A2 t6 \( i5 W, B
VFb=isrevolute( L1) ; %测试是否为旋转关节 ]# s' s" v! G+ I2 P) T( |0 _, {. F
6 w4 c( d, p1 Y M+ G0 B
robot=SerialLink([L1, L2, L3, L4, L5, L6]); %创建机器人模型! @" S$ V4 n" ]+ p- _5 i/ _
0 N$ b; X0 V! m0 mrobot.name='M-20iA'; %机器人模型名称9 H4 H- w( w; }& h) }) D8 F0 ]
. y/ [5 ?& g( k1 N5 ?theta=[0 pi/2 0 0 0 0]; %关节角度初值# _, ^8 n( h& Y. ~
7 H( t h9 Z: B/ [8 c
t=[0:0.05:4]’;
. ?4 Y4 t5 I+ _+ g' C k
7 U/ _8 Y, l) |* m8 mqA=[0 pi/2 0 0 0 0];
" z, |/ i/ m; W) \
5 p& W7 ?7 V; w) g. ~qB=[pi/2 pi/3 -pi/6 0 pi/3 pi/2];5 W) q! O& o, F, |. L
3 u0 ^; s/ }7 N& i+ n" C2 aq=jtraj(qA, qB, t);$ j$ V& R E s/ `) b" J
1 A$ H6 P W2 S' a# M% kplot(robot,q);6 q/ }0 ]1 ]; l8 k
4 W% |8 u; O4 f3 r4 fT=fkine(robot,q); J. O% j* i, e) {4 p6 q! a
X R& t& s* o: px=squeeze(T(1,4,:));
" E, Y( ?5 v6 l. b# h M2 iy=squeeze(T(2,4,:));
% d. |* L" l% q, Z, J$ R1 |: Z5 vz=squeeze(T(3,4,:));
; l% C0 J/ t9 G. N0 lsubpIoT(3,1,1);piot(t,x);xlabel(‘时间/s’);ylabel(‘x/m’);
; D. {) R1 B! H: Tsubpiot(3,1,2);piot(t,y);xlabel(‘时间/s’);ylabel(‘x/m’);
; J1 N) N% [& v7 E0 jsubpiot(3,1,3);piot(t,z);xlabel(‘时间/s’);ylabel(‘x/m’); 9 f% F' R" n2 G/ k$ F
请问该如何解决?
# h& E) e, C# r |