EDA365电子论坛网
标题:
#技术风云榜#matlab机器人 联合ug仿真 关于运动仿真实践
[打印本页]
作者:
ededewa
时间:
2020-11-17 15:12
标题:
#技术风云榜#matlab机器人 联合ug仿真 关于运动仿真实践
一一一一::确定ug支持的matlab版本
* k4 W; E: M- O2 j
从ug目录下的ug8.5\ug8.50\MECH\cosim\ nx_client.m文件可以看出
! b: m: _* |" e5 u- Y) q- _( d) F
! f: d/ B& v. E+ v
: n7 G0 ?2 O) M" ^; ], C3 M D
二二二二::进行ug设置
& x, F2 }8 v/ X+ U3 A5 W3 g3 A& ?
1111:::添加matlab目录和 ug读取matlab产生的仿真文件时间间隔= 设置为1 (一秒采样一次)
4 D: G2 Z6 ]( z) B4 q
设置完重启ug
& j2 o# F; I. q5 J
- x/ t' k) q1 { E5 g
- W7 K- }; h/ c' ^
2222:ug 运动仿真环境几个设置
8 b$ v; g2 i8 P. ]/ H; d+ I
1---环境
2 J# |+ y. r7 } \# Z) c( [
2 --- 建立12个标记点,共分6对(6个点在运动副,6个在连杆,每对csys方向和一个运动副相同)
" ~" F* R B, o# q' c
3 -- -建立6个工厂输入和 6个驱动
% |5 O+ s$ ?; A
4---建立 工厂输入函数 和 6个 运动变量【【【 az(标记点2,标记点1)*180/pi*180/pi*】】】函数,
2 {# w! K7 L6 x& @0 [% h f5 a
说明::【az函数是返回 标记点1相对标记点2绕着z轴转动的 弧度,再*180/pi 就是转换为返回角度,,本应返回角度却反回弧度只得在乘*180/pi】
& B& u: I2 X( U; x' V6 A- k% p
5—加载函数 建立6个工厂输出【函数分别选为已建立的 AZ( 标记点 , 标记点)函数】
4 m* V5 U2 g7 D0 g
6个驱动分别选择6个运动副和 6个 工厂输入函数
+ L0 S/ L- Y/ O
6-----解算方案【关于 仿真时间:由matlab决定, 仿真步数::由matlab的simulink中的NXMotion Plant Block 模块决定是NXMotion_step==100】
7 c/ ]0 H2 Z, v! Z% Q7 N5 W0 i3 |
说明: 仿真步数==仿真时间/仿真步长 ,仿真时间不是现实时间而是虚拟时间,现实时间和电脑cpu的运算速度有关
' |, T; E; ^+ Z, z! B1 Y# w
一般仿真设置::1 确定仿真 关节所转圈数 ==解算方案仿真时间/驱动中的 圈数 red/S 和 角度 deg/s
, z. H* {3 k0 H
2确定仿真 步数(也是变化次数) ====直接在解算方案 设置即可
$ v `) w, L% H8 L) {# j' X5 g
0 D5 H3 X8 g3 c( N7 k
8 h. `; `) ] Q! U# K
三三三三进行matlab设置
' [9 ?( n2 j# [+ P5 Y
1 设置matlab和ug产生的两个 .M文件目录在同一目录
0 x2 K5 X& L# t& u. d
2 测量ug模型关节长度 填入 matlab程序数据
0 U" S ]2 ~" ~+ U* H
3 运行这个代码 和 ug产生的.m文件== motion_2_Solution_1_Plant.m文件
( U) K# L3 [& _5 \) }
4 设置simulink仿真时间和 程序t=0:1:150;相同也可大于但是会在末尾自动插值,插值的大小和末尾方向一致
, {0 S- M+ G5 p" q! J) Y
=======================================================
g1 W+ x ]3 g
========================matlab程序======================
# Z- `& X) j5 B7 \2 Y/ ~( [" H+ R
%【z轴夹角==扭角 关节长度=z和下一坐标z轴距离 x夹角=和下一坐标三线之距离 】
5 X0 r6 O5 ~6 g: {1 D4 j$ Z
% =0=617.8157 =1= 640.8633 =2= 759.2167 =3=1335.9324 =4= 129.8272 =5= 133.5056 =6= 185.9378
7 l& I+ [6 X6 R/ L
%变换顺序 先绕老Z轴确定 x轴 夹角(关节角)——》 在绕老轴X 确定z轴夹角(扭角)--》沿着新z轴移动 (横距)长度---- ---》沿着新x轴 移动(关节长度)
1 q) w# T$ q9 m8 f; g" I
L{1} = link([0 0 0 1258.678 0],'mod');
. U4 [( @/ Y" t
L{2} = link([-pi/2 0 0 0 0],'mod');
}, t( R" ?; c5 ]/ Y. X; ]: s. |
L{3} = link([0 759.2167 0 0 0],'mod');
6 _! R5 p! L( U1 k; q. c, c
L{4} = link([0 1335.9324 0 0 0],'mod');
- D8 V+ a% @9 @6 P2 }" K
L{5} = link([-pi/2 129.8272 0 0 0],'mod');
& D9 s5 C' S1 C7 \. x; |
L{6} = link([pi/2 133.5056 0 0 0],'mod');
" ^$ o0 ^8 q, I4 ? k1 K
L{7} = link([pi/2 186 0 0 0],'mod');
8 ^9 a& J6 V: E* k! }. _' R4 D9 z/ b
p560m=robot(L);
+ P5 r( w( T6 u
u=pi/180*2;%%初始角度全部是2度
- X' a$ L9 ^6 v; z b
c=[ u u u u u u u];%%初始化关节角
: u6 w& Q2 \* Z
%drivebot(p560m,c)
( n1 A0 }3 g: U( s
k* P4 m3 @) T* v" z% g1 }
. ?. M4 H7 T2 x7 s' {" Q7 |% u h
T1=fkine(p560m,c);
: Y( t, ]( l# ]* J6 z. ]9 V5 T% U; n
T2=[0 0 0 -1000;0 0 0 2000;0 0 0 1000;0 0 0 0];
5 K% O# q/ E3 A& L; h
t=0:1:150;
! B% \8 q' l5 h* [' X" B, W
T=ctraj(T1,T2,length(t));
& v3 h6 f/ E; C; ]/ B% t( W
p=ikine(p560m,T,c);
& W: m( Q3 A& T, h; x4 X
' b/ L% C; K' ^0 c; C! l2 U. ?, p
) z; z7 z% x8 S m" {7 i8 n: j
for i=1:2:length(t)% 正常轨迹 i=1:length(t)
$ {4 ?, L4 }9 W% i" T3 s/ r& k
x(i)=T(1,4,i);
2 U4 x! ?9 L, |% ?' K
y(i)=T(2,4,i);
( X% k& x4 v/ B# X
z(i)=T(3,4,i);
: m, p; c! |) G# g
end
) `. l* _- H# E2 Y5 g
hold on;
* D; ?( m7 ~* E
plot3(x,y,z);%画出运动轨迹22222
/ g. V4 {! ?( e
plot(p560m,p);
1 w8 G+ m9 a, g4 x
hold off;
0 @ M5 g$ v4 n7 y( }4 ~$ n' j7 V
' Q5 V4 x% j+ I7 P7 E1 b: U
+ G6 ] q0 m, Q7 B7 _/ r
p2=rem(p,pi*2) ; %对差角取余数 得到一圈之内的角度
& N( E1 l9 G. k% k$ ~) y/ X+ ~% T
p1=p2/(pi/180);
, I/ K0 h# a& @( ~
figure,plot(p1);%%画出角度变化==也是关节角
- j# ^4 h# d& q G( |5 B1 l+ z
: @/ R7 F. C4 P; Y/ f. ^
3 w0 J2 ^$ p, n" z( a: U! E% o
t1=t';
4 ^# {; i0 Q! P
a=[t1 -p1];%输出到 simulink的变量 [t1,a1] 【因为matlab 和ug输入的运动方向相反,因此输出角度取反】
7 S4 z: d8 t" T" T N( w
) x) `. U) T' V& D; H
5 \9 m' `# A/ y* h
% plot(p560m,c);%%%%查看每步角度变化
- d0 `) N' E1 J' V) N. }3 k7 ]( }
% for i=1:length(t)
: C+ d9 Q+ z0 I* p& L
% hold on;
, S( R. M' A. M; D) }2 p' [
% plot(p560m,p(i,: ));
+ N& R) j2 |) y1 k: P, h
% end
$ G1 o: o6 y# U9 `) x( t
8 X5 [- r c1 t
4 e% o+ G% E; E
, H8 z, }$ d6 S# h' d* L& H
四四四四 ug运行仿真文件
/ x1 Y. g5 `- G- N& E# r5 U) ~
1 建立一个跟踪 ===跟踪对象是在机械手末端那个标记点A011
5 ~6 F+ @ Q6 C( m' R4 \& A& V
2 打开ug播放动画 选中跟踪
; B7 w% R2 p/ H4 w
3 查看返回的角度变化值 打开ug作图添加6个工厂输出
作者:
NNNei256
时间:
2020-11-17 16:45
matlab机器人 联合ug仿真 关于运动仿真实践
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2