找回密码
 注册
关于网站域名变更的通知
查看: 434|回复: 1
打印 上一主题 下一主题

#技术风云榜#matlab机器人 联合ug仿真 关于运动仿真实践

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-11-17 15:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
一一一一::确定ug支持的matlab版本
8 y6 R. U# i- w. P: t  p      从ug目录下的ug8.5\ug8.50\MECH\cosim\ nx_client.m文件可以看出3 k6 d1 y8 J4 y) g: [- a1 X

3 `2 i( l- m3 N+ F+ H: u, u' o; H; Q0 x
二二二二::进行ug设置% P* o) p" ~- W1 G
       1111:::添加matlab目录和 ug读取matlab产生的仿真文件时间间隔=  设置为1 (一秒采样一次)
5 s  ?6 [' K+ @% ]9 [! E                  设置完重启ug
% g( ~& o9 @6 c7 f# o. w; t/ L% S& C# w

7 y6 n& Q- W+ y6 I% v- Y2222:ug 运动仿真环境几个设置  d8 W5 V" `; i3 X
      1---环境! ]" f8 w0 s- M( E) F
2 --- 建立12个标记点,共分6对(6个点在运动副,6个在连杆,每对csys方向和一个运动副相同)
+ g( y* [( `$ G. M9 ~* F         3 -- -建立6个工厂输入和  6个驱动
% J0 B' a0 m1 i         4---建立 工厂输入函数 和   6个 运动变量【【【 az(标记点2,标记点1)*180/pi*180/pi*】】】函数,
; T! I/ @8 \1 ?' W0 @                  说明::【az函数是返回 标记点1相对标记点2绕着z轴转动的 弧度,再*180/pi 就是转换为返回角度,,本应返回角度却反回弧度只得在乘*180/pi】
9 X5 o+ q) x+ S+ A8 d4 D( h         5—加载函数  建立6个工厂输出【函数分别选为已建立的 AZ( 标记点 , 标记点)函数】
6 p" C2 J4 [/ P, w6 n, G0 Z! u; N8 I( {9 Z                         6个驱动分别选择6个运动副和 6个 工厂输入函数. L% Y* f: V/ N+ T5 g( i
        6-----解算方案【关于  仿真时间:由matlab决定, 仿真步数::由matlab的simulink中的NXMotion Plant Block 模块决定是NXMotion_step==100】
3 t! x. L# u9 p; u, f. c. Z, l2 d' a8 m                     说明: 仿真步数==仿真时间/仿真步长    ,仿真时间不是现实时间而是虚拟时间,现实时间和电脑cpu的运算速度有关! Z/ N. V9 j( z
                            一般仿真设置::1 确定仿真   关节所转圈数   ==解算方案仿真时间/驱动中的 圈数 red/S 和 角度 deg/s
. D7 h) j4 i5 R8 W: j0 E                                             2确定仿真   步数(也是变化次数)          ====直接在解算方案 设置即可
, |  q5 l7 B: G6 b  _' Y  {+ x
. n& a+ I. `5 e, g3 q, Y
5 V' u! G9 s# q1 C7 U5 {$ I9 F三三三三进行matlab设置   ! K6 d. r% G  o4 s0 r
        1  设置matlab和ug产生的两个 .M文件目录在同一目录/ G! E$ R2 s/ R: Z
        2 测量ug模型关节长度 填入 matlab程序数据* r* B9 V/ a: X+ |& Y5 G8 a2 p( N
         3 运行这个代码 和 ug产生的.m文件== motion_2_Solution_1_Plant.m文件" K# n, K3 Z' y  F3 A
         4 设置simulink仿真时间和 程序t=0:1:150;相同也可大于但是会在末尾自动插值,插值的大小和末尾方向一致; }# j; J6 u, j3 b0 N; J
=======================================================
8 {( {, S6 u. {2 V# D/ j5 r========================matlab程序======================
1 F, w3 |, Q! g0 H9 q%【z轴夹角==扭角   关节长度=z和下一坐标z轴距离   x夹角=和下一坐标三线之距离     】
* A) g% l" b7 D: k8 W9 ^%  =0=617.8157     =1= 640.8633   =2= 759.2167    =3=1335.9324  =4= 129.8272  =5= 133.5056   =6= 185.93785 R: M3 U8 Q+ S5 C6 Z: x% q
%变换顺序 先绕老Z轴确定 x轴 夹角(关节角)——》 在绕老轴X 确定z轴夹角(扭角)--》沿着新z轴移动 (横距)长度---- ---》沿着新x轴 移动(关节长度)
) g% h! b  T6 v! u( k+ T% YL{1} = link([0        0        0 1258.678 0],'mod');
* d4 P/ n# E( }; _. A8 nL{2} = link([-pi/2    0  0   0   0],'mod');
" J; y9 j: V# [) EL{3} = link([0     759.2167    0  0    0],'mod');
9 _- r4 n! Y2 O. U0 v/ oL{4} = link([0     1335.9324   0 0     0],'mod');5 D0 {+ G* Z/ ~3 K
L{5} = link([-pi/2  129.8272    0  0    0],'mod');+ l1 n% {& ]; |, B# A
L{6} =  link([pi/2    133.5056   0  0    0],'mod');
" Q6 H4 W% ~! b7 k' c" ZL{7} = link([pi/2     186       0 0     0],'mod');4 ~$ ^5 Y# K) w) Q
p560m=robot(L);  Z" u/ o" ^" `$ w! e
u=pi/180*2;%%初始角度全部是2度
8 @1 H/ d5 g2 C$ T  D; jc=[ u u u u u u u];%%初始化关节角7 H# {9 P5 B6 I, P; H; z. ]1 z* }
%drivebot(p560m,c)
1 q8 n: V2 _! D
, N5 b$ E- J8 }" K, `4 x7 p8 @# Z2 i& h2 c
T1=fkine(p560m,c);, ~2 h9 O& Y2 p
T2=[0 0 0 -1000;0 0 0 2000;0 0 0 1000;0 0 0 0];
" j  I7 _  u  F# o& {t=0:1:150;: Q/ V& J' O9 \% d
T=ctraj(T1,T2,length(t));  g9 u) w& R4 I8 z+ [: r, a/ k
p=ikine(p560m,T,c);
" r$ g- \3 ~/ Z' B0 f0 J) m/ ]$ w# {* W, y
4 T$ P2 n, W" {. Q& E2 }! j/ T1 l
for i=1:2:length(t)% 正常轨迹 i=1:length(t)
- y3 h5 @1 H( T; b) z1 T, Vx(i)=T(1,4,i);
% i# X0 v' D  X) y& L1 [7 T* r* My(i)=T(2,4,i);
0 W* f& r, M, F$ c, uz(i)=T(3,4,i);! r! c# j6 X7 U# Q0 P
end
+ Y4 X$ Z' Z2 T7 V: l5 M5 jhold on;
0 E  S, M6 ~( E6 D, Lplot3(x,y,z);%画出运动轨迹22222
  ]) o  ^; n4 W. N$ mplot(p560m,p);- N/ B& K3 M5 B( C& R' [
hold off;1 B) t/ I- }0 G6 B. R0 n' Q
! M4 k9 G" L# R! x3 i4 a4 Z! Z( y
1 p( V5 B3 V$ C/ H" k0 R
p2=rem(p,pi*2) ;      %对差角取余数 得到一圈之内的角度( s" f; n4 M# X. \& C
p1=p2/(pi/180);$ p) I1 ]& y" h) x! s
figure,plot(p1);%%画出角度变化==也是关节角6 A6 ^) l6 s. J$ [) a1 m
. y2 y8 }9 u& x

2 N  r: O4 U4 }8 Rt1=t';7 c! ]5 t8 `% |( p- e0 e$ h/ }8 H
a=[t1 -p1];%输出到 simulink的变量 [t1,a1]   【因为matlab 和ug输入的运动方向相反,因此输出角度取反】7 e7 l+ T$ T. Z0 d/ n$ f3 T( t6 c4 ~

5 J: Z0 x0 X/ r8 x6 Y/ n, R6 M0 p# x+ D1 g, \% W, s! ~( n! [5 X  }
% plot(p560m,c);%%%%查看每步角度变化. h( A# ^" m  B2 B2 L* @
% for i=1:length(t)* r' ~; F' P5 H7 N' p, [
%     hold on;
# B9 R2 q( j; e# ]7 `) C%     plot(p560m,p(i,: ));
5 h0 S0 g1 m: q2 g; G* b% end
" b( g- P9 l) s9 f' |/ H. A$ {4 ?- b

8 K/ d9 q& g6 e0 N' X  Z* f" A& U3 S9 Y& i" h: ~! J) V: W
四四四四   ug运行仿真文件! I- X# u  v4 `$ a
       1 建立一个跟踪 ===跟踪对象是在机械手末端那个标记点A011
, J0 l8 F6 f7 |( V# A% f4 R       2 打开ug播放动画  选中跟踪# t+ C7 D3 n. p6 w- b# |
       3  查看返回的角度变化值    打开ug作图添加6个工厂输出

该用户从未签到

2#
发表于 2020-11-17 16:45 | 只看该作者
matlab机器人 联合ug仿真 关于运动仿真实践
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-20 18:59 , Processed in 0.078125 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表