EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于机器人末端轨迹的仿真,用的都是这一类的代码,会涉及到squeeze函数,不管怎样,都会有“位置 1 的索引超出数组范围(不能超过 1)”的报错。. O5 h+ P6 j" N) T2 P4 g
2 ~7 M, j) ~3 [( L8 m+ p
L1 =Link( 'd',0.525, 'a',0.15,'alpha',pi/2) ;8 X) _2 p& g4 |# J3 i% Z7 C1 d
' W( N- q4 W' [ q& ^6 vL2 =Link( 'd',0, 'a',0.79, 'alpha',0) ;, U8 H/ G* c5 h9 T6 L" R; E
( M) Y8 ~- S& I( Z
L3 =Link( 'd',0, 'a',0.25, 'alpha',pi/2);; X6 a8 K j3 {2 F2 {
/ C. ?0 J2 |, ^4 k
L4 =Link( 'd',0.835, 'a',0, 'alpha',-pi/2);0 i- p% G. Y1 c& h ?7 H& J
9 G( O2 }9 j! e; c6 t2 M4 M
L5 =Link( 'd',0, 'a',0, 'alpha',pi/2) ;5 [0 Z8 ?0 P+ f4 J
4 E5 W% H! n* w3 A* Y4 w: [
L6 = Link( 'd', 0.1,'a',0,'alpha',0) ;
" `+ X- A) K, k# A X- C4 R6 D1 m* t/ i6 P. X: k7 O3 t
VFb=isrevolute( L1) ; %测试是否为旋转关节! @, n- k& b( _( d+ Y" E+ X, L3 B
* N4 N1 s6 y! x) U0 S# e8 d6 x
robot=SerialLink([L1, L2, L3, L4, L5, L6]); %创建机器人模型5 Y2 Y& F! h7 z; c
+ P" I( o; N% b7 h* ?2 w% srobot.name='M-20iA'; %机器人模型名称
G! O7 X( C1 s6 p ]) \, E7 B5 _1 A5 U5 `
theta=[0 pi/2 0 0 0 0]; %关节角度初值
7 z: \# l# T- }, e. y6 Z4 C. u! o" }& Y$ b# [
t=[0:0.05:4]’;
6 V R" | a# n6 W a
5 ~0 T' I7 P& d* v, sqA=[0 pi/2 0 0 0 0];
1 @7 c$ X+ o/ }2 e$ p: x/ y9 ]8 Z1 @
qB=[pi/2 pi/3 -pi/6 0 pi/3 pi/2];1 H7 {0 c' ^9 {% ~6 l
3 S6 P9 T5 |& r, ^: I3 T* @
q=jtraj(qA, qB, t);) A5 ~9 C& P! u1 S/ g1 Q- N0 S" b
" B* i" q9 H: M! @3 gplot(robot,q);: W; ]: K- w8 A0 N
6 Z' y. k3 y3 R# i. b% V
T=fkine(robot,q);
: e/ G$ H; {4 C1 h4 o: [% V9 ~5 F! i( }1 y. O: J# f
x=squeeze(T(1,4,:)); / P. Q2 d5 ~. C9 {/ f% Y
y=squeeze(T(2,4,:));
7 T c( k% G: [ u2 `9 ~+ sz=squeeze(T(3,4,:));
1 m# b* j" i3 R% W+ r. W) PsubpIoT(3,1,1);piot(t,x);xlabel(‘时间/s’);ylabel(‘x/m’); $ ^/ ^. s p8 m" w. H
subpiot(3,1,2);piot(t,y);xlabel(‘时间/s’);ylabel(‘x/m’);
! m, I: p# l4 F+ d3 A8 m* y* @$ J' Ksubpiot(3,1,3);piot(t,z);xlabel(‘时间/s’);ylabel(‘x/m’); , q* p* v3 K2 x0 x6 F. o
请问该如何解决? & `! `% z# `; |# F% O v' v4 P
|