EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于机器人末端轨迹的仿真,用的都是这一类的代码,会涉及到squeeze函数,不管怎样,都会有“位置 1 的索引超出数组范围(不能超过 1)”的报错。
2 }" m7 i9 F! t, ?' V$ Z
9 s4 O; d! c4 {4 P- vL1 =Link( 'd',0.525, 'a',0.15,'alpha',pi/2) ;# Z* K4 [8 D7 [9 r
+ Y d6 s+ q$ r
L2 =Link( 'd',0, 'a',0.79, 'alpha',0) ;& `4 o/ Y5 d5 H0 O; _
- R# Z+ X# n( n z% _- ?8 D" H, yL3 =Link( 'd',0, 'a',0.25, 'alpha',pi/2);
( l0 d' @8 a0 e2 N+ F) |; c& R+ I* s; ^. f% ?, M: ]- G& j1 b* A& c8 O0 J
L4 =Link( 'd',0.835, 'a',0, 'alpha',-pi/2);
% D9 g9 N7 r0 a$ |3 K& { K$ [1 n6 R4 |& y0 ?
L5 =Link( 'd',0, 'a',0, 'alpha',pi/2) ;+ B: d! A+ Y/ F* ^
% [/ }* }0 l* k# _! T e3 ?$ _L6 = Link( 'd', 0.1,'a',0,'alpha',0) ;
0 p$ ?; U& n! H$ [; k
) a. ]# i. E% X6 I3 Q: W% c4 O" I/ \VFb=isrevolute( L1) ; %测试是否为旋转关节; d7 J/ g, K9 ?+ B
/ W7 f/ J' y' ~5 g
robot=SerialLink([L1, L2, L3, L4, L5, L6]); %创建机器人模型. _3 w4 Y) L% F; q& C v& U7 P
# V+ o" ?6 _6 D- ]: n; A5 rrobot.name='M-20iA'; %机器人模型名称
* R2 }1 |* u- d) X; k/ G' X$ h& y& p: o+ }- K" M
theta=[0 pi/2 0 0 0 0]; %关节角度初值
5 X6 W' H5 c* W0 h+ b4 ~7 P4 q1 T" n7 D
t=[0:0.05:4]’;+ ^$ N+ N( Z! k, ^
0 e7 V7 z# h: M% H( [qA=[0 pi/2 0 0 0 0];
" K5 m. q8 c" ^; s, M' \2 V& \
) Q- m8 G+ J8 fqB=[pi/2 pi/3 -pi/6 0 pi/3 pi/2];! f; j2 Z) j7 {! l! g0 ]8 t
" k' P I% j& s; uq=jtraj(qA, qB, t);- z" Q0 D$ T! _/ L; _' @' ~
7 [$ K* X5 I; H9 H& Dplot(robot,q);, ~# O$ A' x$ `6 `3 j! @4 ~
2 `; A0 K" M$ [, @T=fkine(robot,q);: H- T$ ?1 O2 ] b9 J5 M
# x4 N' ]- Z: F8 q5 q# g/ B* H
x=squeeze(T(1,4,:)); # S$ _6 L1 C9 X6 R& y" {0 s
y=squeeze(T(2,4,:));
( s1 s9 a( A4 U( z* i# Yz=squeeze(T(3,4,:)); / K- E1 S1 A. n! K
subpIoT(3,1,1);piot(t,x);xlabel(‘时间/s’);ylabel(‘x/m’); " p; Z' p. \3 k. V- z/ ?; B) _7 B
subpiot(3,1,2);piot(t,y);xlabel(‘时间/s’);ylabel(‘x/m’);
% x9 G0 |6 d+ Y7 I z& x6 ]3 Jsubpiot(3,1,3);piot(t,z);xlabel(‘时间/s’);ylabel(‘x/m’); / i4 f2 r$ Z( e l6 d. A
请问该如何解决? # U' `. n7 ^9 l" N/ e
|