EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于机器人末端轨迹的仿真,用的都是这一类的代码,会涉及到squeeze函数,不管怎样,都会有“位置 1 的索引超出数组范围(不能超过 1)”的报错。
; t' }0 {. l% f: l3 S7 C7 r5 i1 N3 ?' _
L1 =Link( 'd',0.525, 'a',0.15,'alpha',pi/2) ;
' P, V, \7 ^! M G$ k2 i2 Y: ^
3 S0 P2 I1 {8 E* CL2 =Link( 'd',0, 'a',0.79, 'alpha',0) ;
+ g4 T8 Y/ r' T" P+ Y$ K+ W. {4 ~" X4 {7 k# `! `
L3 =Link( 'd',0, 'a',0.25, 'alpha',pi/2);& a, O5 N7 J, |9 ]3 {9 a* T
& h4 y! H2 h* R1 b# v4 x/ k @
L4 =Link( 'd',0.835, 'a',0, 'alpha',-pi/2);$ Q( Q8 v, G, `( f
) ?' M* u0 u/ K' s& f8 F! sL5 =Link( 'd',0, 'a',0, 'alpha',pi/2) ;
' o- W3 u& {6 j( F$ c/ {# F C( s0 r, Y& z3 u: @0 b8 d
L6 = Link( 'd', 0.1,'a',0,'alpha',0) ;
* e( _9 p% q. _6 W0 `) N
4 l8 v3 v# g/ [VFb=isrevolute( L1) ; %测试是否为旋转关节
7 a( z# B& V* { c$ o
6 n1 d' g& A0 h; H6 `* ^$ H; ^robot=SerialLink([L1, L2, L3, L4, L5, L6]); %创建机器人模型6 ?% n' `: P! g5 n! e j
3 g N8 Y# g# W+ hrobot.name='M-20iA'; %机器人模型名称/ N+ Y/ {* l9 X+ v
/ m ]' w8 N9 y" ~1 a4 G* Q' ^theta=[0 pi/2 0 0 0 0]; %关节角度初值
w/ S3 X# D( {( W
8 I: d( u; M2 T$ L% K& Ft=[0:0.05:4]’;
+ r/ @! Y& @8 N7 d" L. R- ?
# X7 @" D. C' E( t& Q+ OqA=[0 pi/2 0 0 0 0];6 x7 j1 w/ d! J$ A" O
3 T8 ~; s, W# r" J
qB=[pi/2 pi/3 -pi/6 0 pi/3 pi/2];
# V/ ^+ o# O! n" x) U7 k) ?
! H$ B& r9 k) B+ _8 ?/ a+ Zq=jtraj(qA, qB, t);
6 o1 W5 a: P/ U0 o; d* o
5 D& ^* Z+ m2 M* b1 Q: zplot(robot,q);
/ F& ?: o4 z8 c) N" N L1 j% R% z4 d G1 {
T=fkine(robot,q);7 X9 [. V$ J! W6 E `
# b9 u8 \& |4 }% R6 t- z) Kx=squeeze(T(1,4,:)); + E; O. R \+ {
y=squeeze(T(2,4,:)); : [; n8 y! u+ R0 R" T9 S
z=squeeze(T(3,4,:));
1 A1 r2 [2 s, xsubpIoT(3,1,1);piot(t,x);xlabel(‘时间/s’);ylabel(‘x/m’); 3 B2 e8 E, [7 F
subpiot(3,1,2);piot(t,y);xlabel(‘时间/s’);ylabel(‘x/m’);
* {3 V1 I5 b8 ~* zsubpiot(3,1,3);piot(t,z);xlabel(‘时间/s’);ylabel(‘x/m’); ' r2 ]- g$ q, c9 @
请问该如何解决?
- a% L( h# T5 ` |