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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
一一一一::确定ug支持的matlab版本
" x/ R4 V, a. I+ B4 `      从ug目录下的ug8.5\ug8.50\MECH\cosim\ nx_client.m文件可以看出
7 H5 e0 V( }% H4 U' t) f; c/ Y5 P8 j  u. u
' d# d! g- c) K6 v, P
二二二二::进行ug设置
. v" O8 H: m& |1 ~  _3 s       1111:::添加matlab目录和 ug读取matlab产生的仿真文件时间间隔=  设置为1 (一秒采样一次)
8 s# F. s/ u% p! g                  设置完重启ug
- v- C9 i4 c- c) r
$ [/ E: L8 y7 b2 g2 ~% ?1 s( k5 V% _  G2 H- H9 a3 p% V& r6 b
2222:ug 运动仿真环境几个设置2 v. m0 @, o) C- y1 X" D
      1---环境/ t0 w: A! D4 J- q9 ~; V" _
2 --- 建立12个标记点,共分6对(6个点在运动副,6个在连杆,每对csys方向和一个运动副相同)
3 Y& q* s0 K/ K1 _! C2 O" C# s6 [         3 -- -建立6个工厂输入和  6个驱动! g4 T% ?, ?7 q7 G3 P8 u
         4---建立 工厂输入函数 和   6个 运动变量【【【 az(标记点2,标记点1)*180/pi*180/pi*】】】函数,' Y( A$ Y/ s7 b6 U% f; V/ i
                  说明::【az函数是返回 标记点1相对标记点2绕着z轴转动的 弧度,再*180/pi 就是转换为返回角度,,本应返回角度却反回弧度只得在乘*180/pi】1 L  e( X& o( V% ?, Y7 r
         5—加载函数  建立6个工厂输出【函数分别选为已建立的 AZ( 标记点 , 标记点)函数】1 ~* u: P. ~0 H3 r- s' o
                         6个驱动分别选择6个运动副和 6个 工厂输入函数
" x  }9 H( N" U% I        6-----解算方案【关于  仿真时间:由matlab决定, 仿真步数::由matlab的simulink中的NXMotion Plant Block 模块决定是NXMotion_step==100】0 i5 c, Z1 _6 ~
                     说明: 仿真步数==仿真时间/仿真步长    ,仿真时间不是现实时间而是虚拟时间,现实时间和电脑cpu的运算速度有关
2 T; `) z9 @' [' g                            一般仿真设置::1 确定仿真   关节所转圈数   ==解算方案仿真时间/驱动中的 圈数 red/S 和 角度 deg/s1 j9 V: t$ D/ A- b# a; m+ i2 d2 r
                                             2确定仿真   步数(也是变化次数)          ====直接在解算方案 设置即可* h, Z& N. G( @) g# ^5 V, Q

/ r+ u( E1 H6 y
2 t$ t3 n. I" G5 d) T三三三三进行matlab设置   
, o) f6 O! Z9 O# }        1  设置matlab和ug产生的两个 .M文件目录在同一目录
% h' \* d7 I: r- n5 z        2 测量ug模型关节长度 填入 matlab程序数据
+ n/ w( r% }+ Q% ^1 f- Q         3 运行这个代码 和 ug产生的.m文件== motion_2_Solution_1_Plant.m文件. b) |6 X. C1 x
         4 设置simulink仿真时间和 程序t=0:1:150;相同也可大于但是会在末尾自动插值,插值的大小和末尾方向一致! _, L: I& g/ V5 w- Z; p
=======================================================6 [2 k: Y4 D4 ]% N( d
========================matlab程序======================0 W  |6 P9 n1 l1 v( z
%【z轴夹角==扭角   关节长度=z和下一坐标z轴距离   x夹角=和下一坐标三线之距离     】
3 E2 V" w% ^- s4 K%  =0=617.8157     =1= 640.8633   =2= 759.2167    =3=1335.9324  =4= 129.8272  =5= 133.5056   =6= 185.9378
4 y0 o' z  I) ~%变换顺序 先绕老Z轴确定 x轴 夹角(关节角)——》 在绕老轴X 确定z轴夹角(扭角)--》沿着新z轴移动 (横距)长度---- ---》沿着新x轴 移动(关节长度)
! D! D- l" j1 ]( T0 w: s' D- g  D$ m' mL{1} = link([0        0        0 1258.678 0],'mod');
  T1 ~) M4 D* iL{2} = link([-pi/2    0  0   0   0],'mod');
* D. U( N" V2 v+ P6 \& G8 OL{3} = link([0     759.2167    0  0    0],'mod');" G% @0 J( a, Z- k
L{4} = link([0     1335.9324   0 0     0],'mod');
# R$ ?1 y' \. n" D& q+ oL{5} = link([-pi/2  129.8272    0  0    0],'mod');3 L4 l& {' i6 m( `/ ?" s, @! u
L{6} =  link([pi/2    133.5056   0  0    0],'mod');) r' E! w0 |2 h, Q
L{7} = link([pi/2     186       0 0     0],'mod');- X: T1 L+ L7 M3 [8 i' }
p560m=robot(L);
+ g$ Z  m) ~9 f- F( u7 e4 Qu=pi/180*2;%%初始角度全部是2度
) [& b- m% }7 i+ S6 Cc=[ u u u u u u u];%%初始化关节角8 Q7 I7 O# I) p
%drivebot(p560m,c)' b6 ?/ s! S7 d7 c

+ S: K: `4 L. g
) N" o% M( l: m0 `$ d7 ?+ QT1=fkine(p560m,c);
" b1 O7 U0 J5 B! [, YT2=[0 0 0 -1000;0 0 0 2000;0 0 0 1000;0 0 0 0];7 O! u/ |* x1 `4 \+ Q1 z) H
t=0:1:150;% x4 s6 A) |+ H* |: V5 r& ^' I0 q& ~
T=ctraj(T1,T2,length(t));
( I$ L  {* G+ t9 Rp=ikine(p560m,T,c);
8 B) D: G) |4 O5 G2 s. _/ Y4 K, Q/ `. z4 Z9 i  y& y

$ @) S0 Y' X3 h+ `4 o8 p1 ~for i=1:2:length(t)% 正常轨迹 i=1:length(t). K0 M# d1 L6 p1 V
x(i)=T(1,4,i);
& A/ h: U! P0 U" H7 ^2 Ry(i)=T(2,4,i);
7 ]- K* i; [2 W  W" G3 ~z(i)=T(3,4,i);4 t. @; r" k' i9 |: c7 Y9 r7 Z2 V, O
end6 H% L, x  {- R% r& ]# ?3 a
hold on;. A% r0 v. y% z- B5 j/ ^+ U4 \
plot3(x,y,z);%画出运动轨迹22222+ Y5 J. b- l0 `6 {
plot(p560m,p);: D6 m$ e1 p* a) B7 t. S
hold off;
8 _1 I+ Y. Z6 w; M' ^3 F% m0 e  _, s' @
' e9 m/ {/ H" {/ K7 x4 L: E
p2=rem(p,pi*2) ;      %对差角取余数 得到一圈之内的角度
- s6 T$ @! d0 O) Tp1=p2/(pi/180);
  |9 V, T- t) R: w8 V& B3 u/ Ifigure,plot(p1);%%画出角度变化==也是关节角  f7 a4 t* b) y1 p. z5 z$ L$ {+ N# A

+ W' _( G8 q- v* R" P& K  P: ^- i& D8 d
t1=t';7 X# _( L2 a4 j- ^; H& K
a=[t1 -p1];%输出到 simulink的变量 [t1,a1]   【因为matlab 和ug输入的运动方向相反,因此输出角度取反】$ K$ \7 f' t, m( T& B% f6 N
6 S6 j) k7 r* F* o# \
7 ?6 Y/ z8 S6 Y; M0 z* @
% plot(p560m,c);%%%%查看每步角度变化
  y3 H" N6 A8 x2 z; |% for i=1:length(t)' |% Z6 Q- \6 q! S; j- ^# `( @8 @% D
%     hold on;
6 d% x+ E0 ~' _! r%     plot(p560m,p(i,: ));$ u) t. q+ X" ]6 U, m
% end) T3 p  V  b' @1 a

* @& T. _/ i* v3 d: r4 b& X
. |- ^. C  X; }8 c! O2 E6 ?- e. {. U3 \, C9 O
四四四四   ug运行仿真文件
+ ?6 e) |3 y! n/ b3 J       1 建立一个跟踪 ===跟踪对象是在机械手末端那个标记点A011
8 T2 c0 S+ i' S- |7 J! r- U, o       2 打开ug播放动画  选中跟踪
+ L* d  d' F! k, l5 k, `       3  查看返回的角度变化值    打开ug作图添加6个工厂输出

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-1 13:22 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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