EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于机器人末端轨迹的仿真,用的都是这一类的代码,会涉及到squeeze函数,不管怎样,都会有“位置 1 的索引超出数组范围(不能超过 1)”的报错。
- b7 c- \* L9 {$ x; A9 }' N- G$ Z p, b. o1 @* A' }+ g
L1 =Link( 'd',0.525, 'a',0.15,'alpha',pi/2) ;. k1 h" k8 e5 h
n' y5 F, j e- f
L2 =Link( 'd',0, 'a',0.79, 'alpha',0) ;
Q) H1 X3 [% W$ I% O7 d0 r: w" O* u/ X$ ?+ q8 J1 V9 V
L3 =Link( 'd',0, 'a',0.25, 'alpha',pi/2);
" A. u- ^! e# Y9 E f n8 ~- L# @; J
D( \0 q/ \1 r) TL4 =Link( 'd',0.835, 'a',0, 'alpha',-pi/2);8 s. {6 m; s: q
/ b' n3 A9 n. X+ e/ _2 S( M
L5 =Link( 'd',0, 'a',0, 'alpha',pi/2) ;
# s( M' X+ d$ Y: ]; G% \" X
# e, s6 K# \ k4 c/ W+ X, RL6 = Link( 'd', 0.1,'a',0,'alpha',0) ;
& H% y7 X7 u* I7 s
8 `) p7 t/ n7 k6 i' c/ q( g: MVFb=isrevolute( L1) ; %测试是否为旋转关节) V: S: P+ W9 ~% y" d
! Z3 Z! Z# A* v0 zrobot=SerialLink([L1, L2, L3, L4, L5, L6]); %创建机器人模型
+ N8 Q* q& a7 _+ O
1 B+ R3 A6 X0 M& U6 q5 y9 I6 U( P* Wrobot.name='M-20iA'; %机器人模型名称8 Q. W0 z+ A3 k. v& v0 X: R3 J! f
2 c2 P Y \; T& K- ]% R) Xtheta=[0 pi/2 0 0 0 0]; %关节角度初值% @$ O3 y% _0 K2 l- g3 R
8 I) r0 h6 J: m! u$ _
t=[0:0.05:4]’;
( b$ x- Q! h& q' Q/ L" _+ ?9 l# G# x" M
qA=[0 pi/2 0 0 0 0];5 P8 r% i' A! A' D7 Z$ }, R
; L, V( g9 x: H8 H& ~
qB=[pi/2 pi/3 -pi/6 0 pi/3 pi/2];
0 `; L3 f. \+ b% O. |/ |
X4 b. M+ l/ @4 mq=jtraj(qA, qB, t);3 L$ m. q: r9 U8 ?& c3 ?# _' \
5 r6 q( R, `+ k1 U/ Hplot(robot,q);
( |6 R ?; s( j* m$ Q1 H" D/ L& o( W% ]) t# ^9 [
T=fkine(robot,q);- A* ?9 [; ?+ s( Y6 H4 N) U
5 U7 H- X) P+ n/ c3 L5 nx=squeeze(T(1,4,:)); % P" d6 r. ^2 W6 J' B& E% h8 X
y=squeeze(T(2,4,:)); 5 }0 u: H1 @" }8 n+ N8 X
z=squeeze(T(3,4,:));
( t7 n( i( S% i R% `3 S7 R4 jsubpIoT(3,1,1);piot(t,x);xlabel(‘时间/s’);ylabel(‘x/m’); 9 z. _9 M6 }/ M3 q
subpiot(3,1,2);piot(t,y);xlabel(‘时间/s’);ylabel(‘x/m’); 3 {. d7 [# Z$ m1 O/ O; m
subpiot(3,1,3);piot(t,z);xlabel(‘时间/s’);ylabel(‘x/m’); . X. L& a& I$ l& t" w
请问该如何解决?
3 t' k. f. \: k- r% Z% a |