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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
一一一一::确定ug支持的matlab版本
) E7 F0 z; z6 m" o! [      从ug目录下的ug8.5\ug8.50\MECH\cosim\ nx_client.m文件可以看出2 h: e' m) a8 @5 w; B: F

& M6 }4 F: u( F1 G- ~5 m4 v3 M6 n  o2 W8 D, [4 L) t! I: J
二二二二::进行ug设置
% W" X8 }4 w3 M7 {" r( L; d       1111:::添加matlab目录和 ug读取matlab产生的仿真文件时间间隔=  设置为1 (一秒采样一次)
3 I, e' \# q4 M: {: R5 Q& C/ y! _                  设置完重启ug" E, H+ E; c1 a8 G& n3 h
/ V2 m! }  m: y; Q' _9 F
# \6 a5 Z$ h0 J, Y
2222:ug 运动仿真环境几个设置2 q9 U! z0 C# U: ^" ?0 k3 u
      1---环境- @# K* Z& H7 _  o: c
2 --- 建立12个标记点,共分6对(6个点在运动副,6个在连杆,每对csys方向和一个运动副相同)1 A) S" T  i$ D) H8 ~' k
         3 -- -建立6个工厂输入和  6个驱动/ @' O5 b  ?2 ?0 \7 f+ }2 f; s: @6 Z
         4---建立 工厂输入函数 和   6个 运动变量【【【 az(标记点2,标记点1)*180/pi*180/pi*】】】函数,9 s. I) q3 d( w
                  说明::【az函数是返回 标记点1相对标记点2绕着z轴转动的 弧度,再*180/pi 就是转换为返回角度,,本应返回角度却反回弧度只得在乘*180/pi】
+ \  i3 Q; D! H) V# ~0 |) B" d         5—加载函数  建立6个工厂输出【函数分别选为已建立的 AZ( 标记点 , 标记点)函数】1 F) m5 U" y- S9 l+ Y8 K1 M' `
                         6个驱动分别选择6个运动副和 6个 工厂输入函数" Y: x' i2 u+ X8 o# W: U- f/ v7 v2 C
        6-----解算方案【关于  仿真时间:由matlab决定, 仿真步数::由matlab的simulink中的NXMotion Plant Block 模块决定是NXMotion_step==100】
8 R. i3 p6 I' A% a! e                     说明: 仿真步数==仿真时间/仿真步长    ,仿真时间不是现实时间而是虚拟时间,现实时间和电脑cpu的运算速度有关
0 V3 J8 K1 Y) D$ r% {                            一般仿真设置::1 确定仿真   关节所转圈数   ==解算方案仿真时间/驱动中的 圈数 red/S 和 角度 deg/s% n$ V$ c' v  ~. Q0 b3 |
                                             2确定仿真   步数(也是变化次数)          ====直接在解算方案 设置即可
; c9 B/ l5 [2 {3 C4 F+ F5 m: P' E# G7 ]1 F! _# B
9 s' h/ D- ]+ k4 b$ @; _, O
三三三三进行matlab设置   / u% m2 h* _% x  `, ]- l2 C
        1  设置matlab和ug产生的两个 .M文件目录在同一目录
& z% a7 K8 V- c: r: S        2 测量ug模型关节长度 填入 matlab程序数据
" y( ^1 l: r$ `. e$ d4 Y) ]/ \         3 运行这个代码 和 ug产生的.m文件== motion_2_Solution_1_Plant.m文件
8 C% M8 g; G$ K0 O         4 设置simulink仿真时间和 程序t=0:1:150;相同也可大于但是会在末尾自动插值,插值的大小和末尾方向一致! D3 j( k+ }2 C5 Q* `  m( I
=======================================================. B, f3 n1 i" [
========================matlab程序======================  I, _4 V9 A7 e' w' ?- m1 L
%【z轴夹角==扭角   关节长度=z和下一坐标z轴距离   x夹角=和下一坐标三线之距离     】
5 [4 @; N$ O" t. ?+ J3 n3 Z%  =0=617.8157     =1= 640.8633   =2= 759.2167    =3=1335.9324  =4= 129.8272  =5= 133.5056   =6= 185.9378: l$ t: W& Q, w; s; r1 R$ i% p
%变换顺序 先绕老Z轴确定 x轴 夹角(关节角)——》 在绕老轴X 确定z轴夹角(扭角)--》沿着新z轴移动 (横距)长度---- ---》沿着新x轴 移动(关节长度)
  a4 H' Y. A' O1 p" mL{1} = link([0        0        0 1258.678 0],'mod');
  q$ y. A/ [( ?( M4 c- @L{2} = link([-pi/2    0  0   0   0],'mod');, B" I) t- V5 }9 G  R3 C( Q
L{3} = link([0     759.2167    0  0    0],'mod');2 B7 D" |5 A. {
L{4} = link([0     1335.9324   0 0     0],'mod');
4 k* m" h& b/ f& Z7 @5 N3 c% {L{5} = link([-pi/2  129.8272    0  0    0],'mod');
& S. m' u6 k8 L6 v" m  E5 ~L{6} =  link([pi/2    133.5056   0  0    0],'mod');; B* {" W& _# i0 A0 {
L{7} = link([pi/2     186       0 0     0],'mod');- E# m  K+ Q; S7 ~2 _) I
p560m=robot(L);% J! P1 Q8 t8 l7 d! h; }9 \9 E
u=pi/180*2;%%初始角度全部是2度
  [) @' t' W! }# vc=[ u u u u u u u];%%初始化关节角8 G: m$ R, P) n6 l; |
%drivebot(p560m,c)
9 c9 O' A" [6 G* w
* }0 T( S. e& `/ [! ]2 v( S& W4 Y' j! v& r$ W
T1=fkine(p560m,c);
( y( }3 ?7 d# PT2=[0 0 0 -1000;0 0 0 2000;0 0 0 1000;0 0 0 0];
6 }6 n* i5 s: d3 u- u" `" \t=0:1:150;8 j% R: ^9 }, W/ ]$ Q6 w
T=ctraj(T1,T2,length(t));. r& {6 [  \4 n- E  C1 k" s
p=ikine(p560m,T,c);) k+ ~- |- O6 l1 t: S8 u: F
" n6 G' u* l0 m/ Y- {
+ l+ E6 W5 f; Q7 H
for i=1:2:length(t)% 正常轨迹 i=1:length(t)( N/ q  l1 M# Y4 |6 K" }' A
x(i)=T(1,4,i);8 ?3 }. q1 A  a# l6 U' P! F" B
y(i)=T(2,4,i);
" u4 V2 {- B# ~; ez(i)=T(3,4,i);
+ d  L9 R/ K) v" ^end# j; i! l, @4 U) g
hold on;. N: r, r( x$ U1 @) Q
plot3(x,y,z);%画出运动轨迹222227 O  D! v; w7 q6 ~
plot(p560m,p);
+ j' W/ \- x6 C+ \" e8 Q6 w5 Mhold off;" B, P; `% m2 r

% V8 @6 U, a% w3 O/ @' A' H
; n! Q& i! M; F6 V0 a0 Kp2=rem(p,pi*2) ;      %对差角取余数 得到一圈之内的角度% ~/ N5 l4 q5 {0 V
p1=p2/(pi/180);
  ]8 }6 Z, g: W( h, ^* lfigure,plot(p1);%%画出角度变化==也是关节角' U+ |& m+ [, _: U

9 M$ x: A4 c& c' s3 L3 @8 _$ Q$ k9 m# B6 y; a
t1=t';
  Z  @) B2 M' M. Z# Z4 Ea=[t1 -p1];%输出到 simulink的变量 [t1,a1]   【因为matlab 和ug输入的运动方向相反,因此输出角度取反】, S8 G: K9 Z! e
+ G/ t% |0 j7 U

; [! z/ ^# s) }5 w, s% plot(p560m,c);%%%%查看每步角度变化
2 Z9 A6 e4 ?6 V. E: u9 X% for i=1:length(t)
$ f* C0 R  L& n% \6 F%     hold on;
. u3 C0 I: k) U$ B%     plot(p560m,p(i,: ));
+ E6 T' V8 b( N+ }/ L7 V- a+ F% end
# c4 d, x9 @9 H) w
4 O+ A) ?% y6 o3 {
/ S4 H0 x0 g2 e' D) C/ l( p. i* f4 Z# S& n. D& V( v
四四四四   ug运行仿真文件9 H# h4 E+ j4 a
       1 建立一个跟踪 ===跟踪对象是在机械手末端那个标记点A011
+ I5 m( b1 U# o2 y5 z: h       2 打开ug播放动画  选中跟踪
& M. I' i& ^9 X" D       3  查看返回的角度变化值    打开ug作图添加6个工厂输出

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 06:50 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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