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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
一一一一::确定ug支持的matlab版本* t# s9 U' Y  w, U# E- L
      从ug目录下的ug8.5\ug8.50\MECH\cosim\ nx_client.m文件可以看出
* j8 d0 c& I8 V3 B4 z$ H3 n6 Q0 Q& U- {+ T' K3 Q" E$ q
# |) ^, C; b' O( f/ b( x: v
二二二二::进行ug设置2 F+ J- d8 m. C& N
       1111:::添加matlab目录和 ug读取matlab产生的仿真文件时间间隔=  设置为1 (一秒采样一次)
2 E: U* l' C' D: \4 `5 P1 ^  w# m. z                  设置完重启ug* p! v0 e3 ]' V: h

4 G/ z3 @& }2 V& A; L7 j# T2 a: R+ w- U( F$ N
2222:ug 运动仿真环境几个设置" i& |& B; m8 H: u2 c& i
      1---环境
% ^+ X' z4 F! o8 N3 W5 F2 --- 建立12个标记点,共分6对(6个点在运动副,6个在连杆,每对csys方向和一个运动副相同)2 m' o) E4 R3 z# i3 v. `
         3 -- -建立6个工厂输入和  6个驱动
4 l6 W+ b$ q! G2 |9 i; t         4---建立 工厂输入函数 和   6个 运动变量【【【 az(标记点2,标记点1)*180/pi*180/pi*】】】函数,) t; c6 M8 r; t' t9 x6 {% d
                  说明::【az函数是返回 标记点1相对标记点2绕着z轴转动的 弧度,再*180/pi 就是转换为返回角度,,本应返回角度却反回弧度只得在乘*180/pi】
5 \+ W& C6 l0 D8 c4 H         5—加载函数  建立6个工厂输出【函数分别选为已建立的 AZ( 标记点 , 标记点)函数】3 _$ Z! m& U' _( Z% f; a1 p2 a
                         6个驱动分别选择6个运动副和 6个 工厂输入函数
: h( K& I4 F# z) v0 \1 G        6-----解算方案【关于  仿真时间:由matlab决定, 仿真步数::由matlab的simulink中的NXMotion Plant Block 模块决定是NXMotion_step==100】
; p) C( [1 m1 ~' Y9 {" G                     说明: 仿真步数==仿真时间/仿真步长    ,仿真时间不是现实时间而是虚拟时间,现实时间和电脑cpu的运算速度有关
3 }0 b5 p  B' j! m                            一般仿真设置::1 确定仿真   关节所转圈数   ==解算方案仿真时间/驱动中的 圈数 red/S 和 角度 deg/s; ~2 `0 ^% Y; Q
                                             2确定仿真   步数(也是变化次数)          ====直接在解算方案 设置即可0 V+ ~$ N$ q- ^9 \4 w) [

4 r9 s  E# c( D' o6 g+ a* }+ ~* P# t( j( ^; U7 v+ ~
三三三三进行matlab设置   
! A" H. r( E3 H) W: R        1  设置matlab和ug产生的两个 .M文件目录在同一目录
) D7 \' S* p! o6 Q! k( q- d7 B        2 测量ug模型关节长度 填入 matlab程序数据. Z4 V  @1 F' z* z9 t
         3 运行这个代码 和 ug产生的.m文件== motion_2_Solution_1_Plant.m文件
) Z) l9 _' `$ I2 t" }9 [         4 设置simulink仿真时间和 程序t=0:1:150;相同也可大于但是会在末尾自动插值,插值的大小和末尾方向一致  z; ]5 d% U; h9 h' r1 N- _1 _$ y
=======================================================7 i. @! s. K8 e, E5 y; {/ K
========================matlab程序======================1 c* W/ I& G: i5 p% g
%【z轴夹角==扭角   关节长度=z和下一坐标z轴距离   x夹角=和下一坐标三线之距离     】) ^/ h. n6 b. {0 }
%  =0=617.8157     =1= 640.8633   =2= 759.2167    =3=1335.9324  =4= 129.8272  =5= 133.5056   =6= 185.9378
! Q0 e; e; ^" ~# i8 n2 c%变换顺序 先绕老Z轴确定 x轴 夹角(关节角)——》 在绕老轴X 确定z轴夹角(扭角)--》沿着新z轴移动 (横距)长度---- ---》沿着新x轴 移动(关节长度)
3 g4 }7 C! j7 g9 M% u! qL{1} = link([0        0        0 1258.678 0],'mod');- B9 w4 [% h, ~7 V
L{2} = link([-pi/2    0  0   0   0],'mod');8 t/ `( T0 P, b) B% C
L{3} = link([0     759.2167    0  0    0],'mod');4 R5 v7 K1 ], h, \; o
L{4} = link([0     1335.9324   0 0     0],'mod');
% r$ Q* H2 b2 D& a  r7 x5 Y: u' `L{5} = link([-pi/2  129.8272    0  0    0],'mod');! j3 y0 F2 T" S
L{6} =  link([pi/2    133.5056   0  0    0],'mod');
  p  d% Z) @5 j5 AL{7} = link([pi/2     186       0 0     0],'mod');
" ]1 v; ^3 {0 fp560m=robot(L);: Q4 S% j0 d. e& O+ h3 Y( |
u=pi/180*2;%%初始角度全部是2度
, k# v7 l3 F) \  R2 \- m- x. `c=[ u u u u u u u];%%初始化关节角
' S3 e) O: N+ r# t4 W) h%drivebot(p560m,c)
& r4 b  i' q7 d6 T) g6 N
: k7 n+ u2 r. H
! K9 d  G' Z2 A. q/ u# k( O& QT1=fkine(p560m,c);
1 E6 v1 p- x3 \5 PT2=[0 0 0 -1000;0 0 0 2000;0 0 0 1000;0 0 0 0];4 B/ p$ z: a% K+ Y
t=0:1:150;& H: N3 w. @& l  {
T=ctraj(T1,T2,length(t));) p' z, W7 N% P1 J; C, r
p=ikine(p560m,T,c);3 f0 W) e- x% I7 B3 U- `' y

& z3 F; X7 b7 r$ ^$ f9 I5 p4 w  |& n, j4 M( a% L2 v
for i=1:2:length(t)% 正常轨迹 i=1:length(t)
1 f, f0 y! A) _* Y9 `  kx(i)=T(1,4,i);
3 B4 G# b  o. |& h/ j4 Fy(i)=T(2,4,i);4 S( c  f5 @! A7 G* a
z(i)=T(3,4,i);
# W  [2 R# b6 c# t0 x5 Kend6 F' E# j. T& g; O
hold on;
# b# O* d& L# A$ t+ a4 [+ s3 d% Aplot3(x,y,z);%画出运动轨迹22222
7 _! ]6 V2 o- q1 Gplot(p560m,p);, Q, h4 u" e3 H( [" A) K. A
hold off;
/ _' ^$ v/ w  J6 z2 K; J$ m5 S# W7 l5 }9 U3 E( q

5 A9 c" ~% n/ P3 tp2=rem(p,pi*2) ;      %对差角取余数 得到一圈之内的角度
4 ~* ]: ]4 s4 `p1=p2/(pi/180);
6 Y/ Y' H$ y& J0 `& Dfigure,plot(p1);%%画出角度变化==也是关节角
0 L4 x1 c/ P  l$ t/ h! J+ \! J! Y
  p, C. T$ m4 e* }) V
: @! ]; e& S9 M0 W  `2 a" E# Rt1=t';
& J9 b1 _$ i$ }a=[t1 -p1];%输出到 simulink的变量 [t1,a1]   【因为matlab 和ug输入的运动方向相反,因此输出角度取反】
( v" t5 I# d- ?2 l2 \9 v- y, ~4 P0 b' ?, k

! n" g8 v( _( R9 _% plot(p560m,c);%%%%查看每步角度变化
8 [2 v& L0 c2 Q. l6 ^3 v! J% for i=1:length(t)8 Y5 m4 W* \6 L- h# {
%     hold on;4 e' i1 n. i. Y; r- b
%     plot(p560m,p(i,: ));
& d: @. H9 w6 T* W- L% end7 u# I* ~5 |; L3 t4 L) G  b

0 M9 j+ K: O, _9 q8 X6 F8 t: d/ e) F2 T. V0 ?8 m+ j
8 u8 ?% m* P9 U0 A4 I, }
四四四四   ug运行仿真文件
& @+ O" I8 V  Z( L. ^, G       1 建立一个跟踪 ===跟踪对象是在机械手末端那个标记点A011
- J. {3 L: o7 X9 A       2 打开ug播放动画  选中跟踪
" m$ r3 b4 s) ~9 U       3  查看返回的角度变化值    打开ug作图添加6个工厂输出

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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