EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于机器人末端轨迹的仿真,用的都是这一类的代码,会涉及到squeeze函数,不管怎样,都会有“位置 1 的索引超出数组范围(不能超过 1)”的报错。
k! m4 z" n" @* l& h' n7 |/ M5 x5 @) m8 t, A7 v# f
L1 =Link( 'd',0.525, 'a',0.15,'alpha',pi/2) ;
0 x1 R3 C% e' p4 `+ L
& N8 {/ ~& O8 {, S+ mL2 =Link( 'd',0, 'a',0.79, 'alpha',0) ;
8 K2 x/ m9 V/ W4 i% O
3 f9 t9 g1 r; H% Q/ Q tL3 =Link( 'd',0, 'a',0.25, 'alpha',pi/2);
3 d! W$ |, O4 Y
- d( ?; z5 U' [4 X# R! z* oL4 =Link( 'd',0.835, 'a',0, 'alpha',-pi/2);
7 u; Z* C5 l* m, ^- p* s2 p7 F" O9 F6 ]! P9 J+ ~# ]+ F& U
L5 =Link( 'd',0, 'a',0, 'alpha',pi/2) ;, N% K7 W9 Y1 i2 i0 D3 v
' L4 v8 F. P* {: }1 rL6 = Link( 'd', 0.1,'a',0,'alpha',0) ;$ r2 K O2 w+ Y3 F- m; i& }
! N- B5 y2 s7 r! D, S
VFb=isrevolute( L1) ; %测试是否为旋转关节2 D4 Y# E2 [2 i3 B- n F& j
+ T* e5 s0 F3 T* R0 D7 Qrobot=SerialLink([L1, L2, L3, L4, L5, L6]); %创建机器人模型1 A: t; R; y( o0 ]4 Z) z
/ f$ n! V) a7 w# A. j
robot.name='M-20iA'; %机器人模型名称
4 L$ b. {' L7 ]0 F6 c
( t; ?2 b2 l: d+ t# ~, wtheta=[0 pi/2 0 0 0 0]; %关节角度初值
/ H+ D0 j; N6 ^0 i6 w4 |6 H
9 [$ P1 p" n" Nt=[0:0.05:4]’;
" E# @% N) L& _* v5 J# x6 U
, G& ]% f/ Y5 T7 _ u6 EqA=[0 pi/2 0 0 0 0];
7 g+ W' W) v( t; o/ H* X8 j6 e X7 {7 k- h: \0 A/ w
qB=[pi/2 pi/3 -pi/6 0 pi/3 pi/2];
2 X0 C' G( O# \4 c4 D$ z+ h( Z2 i: y* b3 b1 B3 s; [
q=jtraj(qA, qB, t);# N, P1 K3 ?" Q8 Y4 T
2 L$ w6 D* q7 Z- jplot(robot,q);
% \/ D% r9 b* C6 k: j4 c, t* Q5 |, o* X8 Z
T=fkine(robot,q);
6 ]& n- S5 O+ M1 n; @8 T% X
( y* e% j" f1 d% C( S9 O: Ex=squeeze(T(1,4,:)); 2 ^ H* G2 _/ V5 Z3 t, D
y=squeeze(T(2,4,:));
" K# n% {+ d+ b+ ]9 ?z=squeeze(T(3,4,:));
9 L) l: E% \0 R- T3 |subpIoT(3,1,1);piot(t,x);xlabel(‘时间/s’);ylabel(‘x/m’); ' X. J0 l6 i2 K9 z. Z$ r+ F" d
subpiot(3,1,2);piot(t,y);xlabel(‘时间/s’);ylabel(‘x/m’); ' g8 g5 P8 `5 R3 N& R+ c( t9 Z: f& _
subpiot(3,1,3);piot(t,z);xlabel(‘时间/s’);ylabel(‘x/m’);
% J+ u3 s3 u0 ?6 D U
请问该如何解决?
- G( Q, |1 N h3 }7 m- X |