EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于机器人末端轨迹的仿真,用的都是这一类的代码,会涉及到squeeze函数,不管怎样,都会有“位置 1 的索引超出数组范围(不能超过 1)”的报错。! C' T0 T& W4 e
; i3 T; o6 k* k) X5 B8 n/ S
L1 =Link( 'd',0.525, 'a',0.15,'alpha',pi/2) ;0 A5 F5 ~ T6 W+ F q( }
m4 L; S% I) \8 x9 t& LL2 =Link( 'd',0, 'a',0.79, 'alpha',0) ;! I* v) U0 g# n
/ p0 h9 X9 _: v% W$ K O
L3 =Link( 'd',0, 'a',0.25, 'alpha',pi/2);
4 Z2 c( d P/ c1 B% i0 h% C5 S
& r& Y: g1 j9 E) l* `6 bL4 =Link( 'd',0.835, 'a',0, 'alpha',-pi/2);
' I0 D$ P+ ?5 G, [9 Y7 |8 m8 d7 t3 V5 I
L5 =Link( 'd',0, 'a',0, 'alpha',pi/2) ;; l, P4 \2 x. {- a* H0 h
' B& S3 @- D4 Z8 E/ |
L6 = Link( 'd', 0.1,'a',0,'alpha',0) ;
7 U l& u3 M. S* Q- n$ P: W4 K; K4 E
VFb=isrevolute( L1) ; %测试是否为旋转关节! h4 o3 i6 {. K- V% T4 V5 }
8 q) G& G0 e+ P! m# J l' nrobot=SerialLink([L1, L2, L3, L4, L5, L6]); %创建机器人模型
8 Q' S, Z) ^8 I: y- W1 }6 V" I( d( z
robot.name='M-20iA'; %机器人模型名称5 u+ g* Y* u8 e( p9 J
2 O, ]( [ Z2 S! N% j( g' C
theta=[0 pi/2 0 0 0 0]; %关节角度初值
% s4 c Y& C9 z2 L" n! @# N/ N; V, m* g
t=[0:0.05:4]’;- R2 H% c$ X a3 H
9 M4 R( E& T$ R9 ~+ b. B% N
qA=[0 pi/2 0 0 0 0];
/ R% H1 N7 B: N) K" X" j# i0 a& Z! l/ L- d9 E F: }
qB=[pi/2 pi/3 -pi/6 0 pi/3 pi/2];# U S `& }% L- c
5 Q& P" k0 X4 x
q=jtraj(qA, qB, t);
+ V9 Y; f- L: W% ]4 j0 p$ x5 q6 ]$ Q7 z* v* a8 Z- I
plot(robot,q);/ ^* ?3 R+ [9 ^, L9 g) _
: L. r- c1 F- l% [4 ZT=fkine(robot,q);
8 `5 V3 _2 k. k' L2 O! m( b3 u% [4 q; J% G: N: |, H2 L$ X
x=squeeze(T(1,4,:)); ; }# H. `# I2 c& F' ?" ?
y=squeeze(T(2,4,:));
, `# m& W$ m8 c# b. y& i3 T: L. J9 Fz=squeeze(T(3,4,:));
5 H+ M5 R: j; m6 o3 y( asubpIoT(3,1,1);piot(t,x);xlabel(‘时间/s’);ylabel(‘x/m’); % g2 w& {# b; N2 l
subpiot(3,1,2);piot(t,y);xlabel(‘时间/s’);ylabel(‘x/m’); ! I% p4 y. K1 M ^9 W, R
subpiot(3,1,3);piot(t,z);xlabel(‘时间/s’);ylabel(‘x/m’);
1 e, a' h9 m# z) K
请问该如何解决? ; R% T y4 C& B. F
|