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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
一一一一::确定ug支持的matlab版本
8 ^% O% `" W5 b- o. S# I      从ug目录下的ug8.5\ug8.50\MECH\cosim\ nx_client.m文件可以看出/ Z/ h: a/ u  W& [% U

( D) U& r6 ?4 N' v3 I2 [
* e# J- j9 @3 L/ u$ j: J8 I二二二二::进行ug设置; q0 k( ~+ z6 u9 s6 Z8 X6 ~( d+ `+ F
       1111:::添加matlab目录和 ug读取matlab产生的仿真文件时间间隔=  设置为1 (一秒采样一次)) ~* a* C) l4 b6 t+ }
                  设置完重启ug
0 d& H$ T' l" H& v) L* I: b
6 G6 R6 g/ {- I- c7 A* w! _
2 ^% Y0 e8 X. R4 Q" Q0 S2222:ug 运动仿真环境几个设置* U( h' U" H# V4 w  V# b: V
      1---环境1 Q" i( x' q1 g
2 --- 建立12个标记点,共分6对(6个点在运动副,6个在连杆,每对csys方向和一个运动副相同)* _" {) b8 h+ Y5 I, Q
         3 -- -建立6个工厂输入和  6个驱动
1 w* c) S/ T9 w8 O: p         4---建立 工厂输入函数 和   6个 运动变量【【【 az(标记点2,标记点1)*180/pi*180/pi*】】】函数," t7 U5 q6 T9 |' l8 h9 ^8 K, s0 R
                  说明::【az函数是返回 标记点1相对标记点2绕着z轴转动的 弧度,再*180/pi 就是转换为返回角度,,本应返回角度却反回弧度只得在乘*180/pi】
) ^1 N% k8 A. Q( d4 l5 @         5—加载函数  建立6个工厂输出【函数分别选为已建立的 AZ( 标记点 , 标记点)函数】
. G; f( [3 ~4 m! T' T! ?                         6个驱动分别选择6个运动副和 6个 工厂输入函数9 y# |4 _3 x0 R, b4 Z! }3 T* c; k
        6-----解算方案【关于  仿真时间:由matlab决定, 仿真步数::由matlab的simulink中的NXMotion Plant Block 模块决定是NXMotion_step==100】
; J7 u9 m  o* a4 H" p! i" ?                     说明: 仿真步数==仿真时间/仿真步长    ,仿真时间不是现实时间而是虚拟时间,现实时间和电脑cpu的运算速度有关( A- h% ~: O! `! \! b
                            一般仿真设置::1 确定仿真   关节所转圈数   ==解算方案仿真时间/驱动中的 圈数 red/S 和 角度 deg/s
, C+ S5 Q% ]6 c: L) e- o5 x                                             2确定仿真   步数(也是变化次数)          ====直接在解算方案 设置即可5 h7 @0 `8 N/ L( e  D

5 p( s+ @7 T. E: B: }* N) s! d' t7 B# `1 }
三三三三进行matlab设置   
$ c5 I$ t1 w4 v        1  设置matlab和ug产生的两个 .M文件目录在同一目录
( |5 `/ F6 u' {5 a0 K+ o- @        2 测量ug模型关节长度 填入 matlab程序数据3 b0 X/ `, w, H1 E6 q! l
         3 运行这个代码 和 ug产生的.m文件== motion_2_Solution_1_Plant.m文件
! j6 B! C4 o3 g0 q- G7 @6 Q         4 设置simulink仿真时间和 程序t=0:1:150;相同也可大于但是会在末尾自动插值,插值的大小和末尾方向一致  K3 l/ {: Y% @$ I! M; l7 Z
=======================================================5 [& m  W% _% S& T$ f
========================matlab程序======================; I8 R% _4 m0 _9 p3 V
%【z轴夹角==扭角   关节长度=z和下一坐标z轴距离   x夹角=和下一坐标三线之距离     】
1 Q* e% Z) _" B0 e. R%  =0=617.8157     =1= 640.8633   =2= 759.2167    =3=1335.9324  =4= 129.8272  =5= 133.5056   =6= 185.9378* a# N: T2 r# N! t
%变换顺序 先绕老Z轴确定 x轴 夹角(关节角)——》 在绕老轴X 确定z轴夹角(扭角)--》沿着新z轴移动 (横距)长度---- ---》沿着新x轴 移动(关节长度)
5 m- Y) j. ~$ X# P1 i; TL{1} = link([0        0        0 1258.678 0],'mod');. f; f; y. n! m
L{2} = link([-pi/2    0  0   0   0],'mod');: }9 B3 y( f; y5 |0 F# ?: w! f
L{3} = link([0     759.2167    0  0    0],'mod');' N0 x2 d. T; ~
L{4} = link([0     1335.9324   0 0     0],'mod');6 }+ O* t6 c5 q
L{5} = link([-pi/2  129.8272    0  0    0],'mod');/ j* p- K* A8 _1 t% |5 F
L{6} =  link([pi/2    133.5056   0  0    0],'mod');
, k" P. e  f6 D5 M+ d, ?L{7} = link([pi/2     186       0 0     0],'mod');2 h; O3 r: S! S! g3 E( r2 S4 u- c
p560m=robot(L);( L+ k( _' A' c& C& s+ A$ c4 `
u=pi/180*2;%%初始角度全部是2度
" |) B. t3 H' ^6 ~, Sc=[ u u u u u u u];%%初始化关节角) p2 q/ U" Z- j/ L+ t1 }- S
%drivebot(p560m,c)1 Z& K( u5 u+ T. ~
- A. n- ~# h- r

1 V  M& C) d" n* f5 @% ?! ST1=fkine(p560m,c);/ @# m# d/ m3 A8 ?
T2=[0 0 0 -1000;0 0 0 2000;0 0 0 1000;0 0 0 0];9 w  ]0 Q$ M# l: {7 V
t=0:1:150;
6 F2 ^% l% |4 ~2 R+ JT=ctraj(T1,T2,length(t));
, ?8 s5 X, ?/ p5 d) V( o- e4 op=ikine(p560m,T,c);
2 }( r' f8 o' o* [3 J+ [& c. O
9 Y& O- k4 y) m: C- T) h+ J& g) @) R9 k: i4 _
for i=1:2:length(t)% 正常轨迹 i=1:length(t)0 ?3 m& M% x1 ~! N+ ~2 @& `% R
x(i)=T(1,4,i);
; \7 T9 B* I* uy(i)=T(2,4,i);
; o7 u, I) I$ m2 Nz(i)=T(3,4,i);
/ S0 J+ \- t! aend
) [# a! Q4 ?; vhold on;
" H+ L1 Z% h( t  e+ ~5 o- iplot3(x,y,z);%画出运动轨迹22222
! m( M6 Q" N  v2 ?plot(p560m,p);
: e. Q# z3 X5 z6 ], D1 E! Nhold off;2 ?) J- d4 Q( L- S" J
5 }6 @( N+ V4 T" ^9 v8 X' k: z
; ^4 @8 W- S6 u7 _
p2=rem(p,pi*2) ;      %对差角取余数 得到一圈之内的角度
5 V* Z* o0 E7 Hp1=p2/(pi/180);
' }# y4 U: B9 Q4 Ufigure,plot(p1);%%画出角度变化==也是关节角& @) O! a. G! ~6 d

' E* q& n5 f" ^4 s! w
. E* R6 }7 E. T+ J3 b7 e( B3 Gt1=t';( p+ d3 z1 I; @! f
a=[t1 -p1];%输出到 simulink的变量 [t1,a1]   【因为matlab 和ug输入的运动方向相反,因此输出角度取反】
3 C2 Z+ w; E5 \" j& U) {% ]  ]" r5 {% f$ @
1 _. m4 Z# [- A, m
% plot(p560m,c);%%%%查看每步角度变化
9 a7 e+ `$ D) \5 S% for i=1:length(t)7 e6 ?; h7 u9 k9 s
%     hold on;
6 @- P, I1 l. g/ W0 d+ E* E%     plot(p560m,p(i,: ));
1 o/ r7 ?+ g! O2 M$ \% T% end, ?! J( x! T6 s; G
2 |* Y$ ~% ~4 R9 Q9 R# E+ k
& ~- t1 H# a6 C% U. @; {

$ B$ Y& s9 O+ g% P$ ~, e四四四四   ug运行仿真文件- s, O/ f# F+ j2 c7 K$ n
       1 建立一个跟踪 ===跟踪对象是在机械手末端那个标记点A011
" r8 \" H; o5 T/ e       2 打开ug播放动画  选中跟踪4 C: s1 T0 e( F7 x2 o: Q- N/ W/ J- G
       3  查看返回的角度变化值    打开ug作图添加6个工厂输出

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-20 05:35 , Processed in 0.062500 second(s), 23 queries , Gzip On.

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

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

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