EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于机器人末端轨迹的仿真,用的都是这一类的代码,会涉及到squeeze函数,不管怎样,都会有“位置 1 的索引超出数组范围(不能超过 1)”的报错。* f7 E0 W9 y9 y% Q; J: q4 ^
! R8 a. V/ R( \
L1 =Link( 'd',0.525, 'a',0.15,'alpha',pi/2) ;
* M1 u; Q; e7 R1 ^2 [$ R
" Z2 j% p" v/ ~6 mL2 =Link( 'd',0, 'a',0.79, 'alpha',0) ;
% B5 q7 v M. T+ y. w
4 V: B) W5 z9 c2 {L3 =Link( 'd',0, 'a',0.25, 'alpha',pi/2);
4 K% |1 Y6 L+ Y- }& g& {& }8 C0 ^9 f# A3 _4 Z* ?
L4 =Link( 'd',0.835, 'a',0, 'alpha',-pi/2);% W4 s' a F9 A. \
. Z. ?. G& ]0 U- U( T' _+ aL5 =Link( 'd',0, 'a',0, 'alpha',pi/2) ;
- n( |- t$ t- ~+ @) h! J/ }2 c3 \- w/ ~ H
L6 = Link( 'd', 0.1,'a',0,'alpha',0) ; H0 x$ K% m& {" K) T
# a8 o0 K6 @' E, v9 I* o# P- k& T T0 F
VFb=isrevolute( L1) ; %测试是否为旋转关节/ D! l$ b) D; ^; h8 k# x5 g
& y1 n+ Z7 n3 H G* g6 i
robot=SerialLink([L1, L2, L3, L4, L5, L6]); %创建机器人模型
1 J. j9 ^+ u) U. \' o
% x& }7 C- E+ w2 e* i- k; \# g g" _robot.name='M-20iA'; %机器人模型名称
" z& I4 c+ P \
8 q4 x. C/ S7 mtheta=[0 pi/2 0 0 0 0]; %关节角度初值, }& l0 h6 F2 S+ r' ~, z
7 \- N4 E" g& c# Q
t=[0:0.05:4]’;
9 h$ i2 i; `0 B# F; c7 s
8 S5 v7 r5 P4 ^ F" p. HqA=[0 pi/2 0 0 0 0];0 {, n1 s0 n1 C* z* v$ Z
8 q: ?! f4 F7 X8 p3 {
qB=[pi/2 pi/3 -pi/6 0 pi/3 pi/2];
5 f4 _9 i4 g, r, y$ P
6 O% a/ r! V1 ~4 o d* {) b! jq=jtraj(qA, qB, t);& V# I2 ]2 h; }: n9 K* e
. a; w4 s: }. w/ Y) {$ [: Oplot(robot,q);/ ?% z) s" D4 S% f: c6 O
7 S' o5 y) c+ E6 C
T=fkine(robot,q);
! e s {* S9 H+ c& R3 \9 x# O6 N/ f% @7 F
x=squeeze(T(1,4,:));
1 ~9 S* x& @7 {7 wy=squeeze(T(2,4,:));
% n9 [9 \; I3 R+ T2 O7 fz=squeeze(T(3,4,:)); 1 m: h& u, s- B( H {
subpIoT(3,1,1);piot(t,x);xlabel(‘时间/s’);ylabel(‘x/m’); 8 X2 h/ y% b" \" r( L
subpiot(3,1,2);piot(t,y);xlabel(‘时间/s’);ylabel(‘x/m’);
/ v+ Q2 R5 B: U- e; d4 t, \$ xsubpiot(3,1,3);piot(t,z);xlabel(‘时间/s’);ylabel(‘x/m’); $ U9 S5 R4 ]; c; z1 @( a# j
请问该如何解决? , g( `9 M; O5 e- r) I8 g6 j
|