EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于机器人末端轨迹的仿真,用的都是这一类的代码,会涉及到squeeze函数,不管怎样,都会有“位置 1 的索引超出数组范围(不能超过 1)”的报错。
! |2 W6 {2 u* S' _* N) G
% S- L# e& M, E" n- l$ x! DL1 =Link( 'd',0.525, 'a',0.15,'alpha',pi/2) ;
0 r" o/ h$ b6 d4 Z# J) ^2 E3 S3 ?/ i1 y5 t: ]: A
L2 =Link( 'd',0, 'a',0.79, 'alpha',0) ;0 h9 u8 A- b- G: l0 x2 Q$ R
2 e2 a7 \6 e C& p' a C6 L- M
L3 =Link( 'd',0, 'a',0.25, 'alpha',pi/2); h p% ^# q" i
+ e' P" @* ]3 p) Y( ^
L4 =Link( 'd',0.835, 'a',0, 'alpha',-pi/2);
, d, W" I. E; K9 M7 v+ M; M( a' Y- Q; a {" s6 A% G$ Q& e$ M
L5 =Link( 'd',0, 'a',0, 'alpha',pi/2) ;
/ c# O0 N- O) D# |0 y$ Z5 Y
% |" T; O7 J3 Q& ?7 UL6 = Link( 'd', 0.1,'a',0,'alpha',0) ;; w9 F$ D& Y: M7 ^ {+ v# U) B1 V
! P. n' o. k+ d& _2 t. x* UVFb=isrevolute( L1) ; %测试是否为旋转关节
& X J) e: h) ?% {' e8 w, f1 N7 N: ]' O q+ T1 Z0 {
robot=SerialLink([L1, L2, L3, L4, L5, L6]); %创建机器人模型
3 P( L0 g* A3 Y, G6 ]( {1 F8 G3 N1 k9 Z, ~" {
robot.name='M-20iA'; %机器人模型名称
# g7 P8 N$ L5 {7 z1 W0 v- A) j4 K) c' v6 F i/ S7 T0 L, ^; x* i8 ]
theta=[0 pi/2 0 0 0 0]; %关节角度初值- D/ e4 x( j5 H2 K& F
5 {% O1 t5 b$ o1 ?
t=[0:0.05:4]’;
7 u4 L3 g8 S) A7 c1 [; r( p, |' T& {0 Z: Q1 D1 U, t+ p
qA=[0 pi/2 0 0 0 0];
& O9 f( f) Y% n' a, ]1 Y2 M n0 c5 x! I# E$ ~3 s* t: H# z
qB=[pi/2 pi/3 -pi/6 0 pi/3 pi/2];
" F( R* b1 W [8 @! I" n( p4 J+ \/ H7 N4 K! T
q=jtraj(qA, qB, t);0 k6 L# X+ B* s3 U+ Q u- @, ~
; G/ b/ m/ `% A2 ^' e) U3 ^
plot(robot,q);
" H Z: U, d5 n' e9 p' j3 {% G! {1 v0 U
T=fkine(robot,q);4 J% j0 [& i7 w* J4 b
6 i9 M* I, t% W8 \) w( n) T; ox=squeeze(T(1,4,:)); " k) B' r( @; }' ?& [( _
y=squeeze(T(2,4,:));
+ y) |" g9 o4 G% Yz=squeeze(T(3,4,:));
1 H( M1 _2 V* \. L. KsubpIoT(3,1,1);piot(t,x);xlabel(‘时间/s’);ylabel(‘x/m’);
' A9 p0 Q$ x/ ssubpiot(3,1,2);piot(t,y);xlabel(‘时间/s’);ylabel(‘x/m’);
8 _. @. R0 |. xsubpiot(3,1,3);piot(t,z);xlabel(‘时间/s’);ylabel(‘x/m’);
1 d0 l: ~3 A& v' q+ l
请问该如何解决?
7 [* G. F8 \4 u |