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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
一一一一::确定ug支持的matlab版本
% X5 H' ?% z9 f& U! P3 l. S. M      从ug目录下的ug8.5\ug8.50\MECH\cosim\ nx_client.m文件可以看出
$ L6 F: i! m+ @; _: ^# L" I
( Q5 O9 T: J6 ]4 v# [* ~: x: L6 _5 V# y9 b; w: j) G2 N
二二二二::进行ug设置# w$ w! T9 h7 ^0 T
       1111:::添加matlab目录和 ug读取matlab产生的仿真文件时间间隔=  设置为1 (一秒采样一次)1 s  k) D8 m% b
                  设置完重启ug
& t1 G$ C2 l, ?' [  h% F& G- D6 e4 h# Q: I' v* N3 m
" z1 P! x& s8 Y/ E2 S% I3 o
2222:ug 运动仿真环境几个设置
# k, q/ L5 G1 E* I. d+ E      1---环境
% y( s+ s% t/ a" u2 --- 建立12个标记点,共分6对(6个点在运动副,6个在连杆,每对csys方向和一个运动副相同)
8 r1 C- E3 y" [* O( e         3 -- -建立6个工厂输入和  6个驱动0 b5 ~  `- C- T2 t2 s6 i
         4---建立 工厂输入函数 和   6个 运动变量【【【 az(标记点2,标记点1)*180/pi*180/pi*】】】函数,
: ?. ?7 o- ~: x4 r$ \: V) S, }                  说明::【az函数是返回 标记点1相对标记点2绕着z轴转动的 弧度,再*180/pi 就是转换为返回角度,,本应返回角度却反回弧度只得在乘*180/pi】4 L* W3 A; L' h5 G' M: C5 c$ y( u
         5—加载函数  建立6个工厂输出【函数分别选为已建立的 AZ( 标记点 , 标记点)函数】* u! t* n+ }( P/ P; w: }, L! I
                         6个驱动分别选择6个运动副和 6个 工厂输入函数6 w" z6 U+ z9 k7 Z) T
        6-----解算方案【关于  仿真时间:由matlab决定, 仿真步数::由matlab的simulink中的NXMotion Plant Block 模块决定是NXMotion_step==100】
. A% N6 v! d! Q8 A! ?/ v) Y                     说明: 仿真步数==仿真时间/仿真步长    ,仿真时间不是现实时间而是虚拟时间,现实时间和电脑cpu的运算速度有关2 s* b% q- s. s% C' J
                            一般仿真设置::1 确定仿真   关节所转圈数   ==解算方案仿真时间/驱动中的 圈数 red/S 和 角度 deg/s" q( ~$ ^5 |/ i
                                             2确定仿真   步数(也是变化次数)          ====直接在解算方案 设置即可
# y5 N" P4 \& K, A/ o, z; h- m" z: Q3 M" }9 M
7 t4 [. y: g/ }  c9 |$ }( [) p
三三三三进行matlab设置   
% M$ v, s2 |! [! }3 {0 t        1  设置matlab和ug产生的两个 .M文件目录在同一目录7 Q: Z2 r( h' Q( i) m3 H: j, d+ C4 t
        2 测量ug模型关节长度 填入 matlab程序数据$ l8 X/ t- L. m6 a# n4 j! Y  S5 h
         3 运行这个代码 和 ug产生的.m文件== motion_2_Solution_1_Plant.m文件- [% f2 t8 X( Q! J$ |) @! M
         4 设置simulink仿真时间和 程序t=0:1:150;相同也可大于但是会在末尾自动插值,插值的大小和末尾方向一致6 i) [7 [8 E! n, P, `" z. y
=======================================================
! T) a5 O% @7 O. i========================matlab程序======================
" p) B3 `# |1 U4 b8 L4 E%【z轴夹角==扭角   关节长度=z和下一坐标z轴距离   x夹角=和下一坐标三线之距离     】$ A9 D1 |* @6 F! o
%  =0=617.8157     =1= 640.8633   =2= 759.2167    =3=1335.9324  =4= 129.8272  =5= 133.5056   =6= 185.9378
" q* j! L) F6 w" |2 p, ]%变换顺序 先绕老Z轴确定 x轴 夹角(关节角)——》 在绕老轴X 确定z轴夹角(扭角)--》沿着新z轴移动 (横距)长度---- ---》沿着新x轴 移动(关节长度)8 P( b6 D, O. h( K& q7 e) n4 r  }+ ]
L{1} = link([0        0        0 1258.678 0],'mod');4 ~, i0 V4 I3 Z/ ?9 ~9 H
L{2} = link([-pi/2    0  0   0   0],'mod');
  `7 k/ ?* z8 J! x+ QL{3} = link([0     759.2167    0  0    0],'mod');6 H% T7 \; f, O! c3 J- X4 }
L{4} = link([0     1335.9324   0 0     0],'mod');
) o0 E' N/ i- G$ t* R% g/ FL{5} = link([-pi/2  129.8272    0  0    0],'mod');
. S8 c2 X! H  Y. qL{6} =  link([pi/2    133.5056   0  0    0],'mod');
) o  |0 t0 M5 a4 x: yL{7} = link([pi/2     186       0 0     0],'mod');
0 k7 ]& i! r# i- S* q! Lp560m=robot(L);
) b3 w/ w7 M2 r/ {( xu=pi/180*2;%%初始角度全部是2度
5 B9 L2 N$ f6 P. f# u, zc=[ u u u u u u u];%%初始化关节角# @4 U( `+ ?! M& `& L7 a
%drivebot(p560m,c)
4 `; r8 b8 B/ p' s( F" t! z/ U6 h9 |2 C
6 s$ O. |% l1 k* s1 ^1 p1 N
T1=fkine(p560m,c);
1 {8 d" x6 f  v% E  K5 gT2=[0 0 0 -1000;0 0 0 2000;0 0 0 1000;0 0 0 0];9 H/ Q8 p, i; C3 k4 K
t=0:1:150;
% \9 w: P( D: FT=ctraj(T1,T2,length(t));8 Q) W8 S0 p/ Q( |4 a
p=ikine(p560m,T,c);: c# e2 |; l: {' w  `1 K& \+ w
9 o* S$ F4 M1 f) C% T) c- ?1 k

" W* H! s. x5 B# X5 G5 I. o* q" f3 qfor i=1:2:length(t)% 正常轨迹 i=1:length(t)
9 k! P) ?4 [, s+ K' Gx(i)=T(1,4,i);
0 _0 D3 I! g* J: Jy(i)=T(2,4,i);
% p: I8 u- ]- N( Dz(i)=T(3,4,i);( M5 S; W$ y+ t1 @/ |% s
end6 Q6 a1 e& W, ^5 N
hold on;! w+ W; q$ {; i: @; {, Y
plot3(x,y,z);%画出运动轨迹222225 d, x! h' C0 c: p" q
plot(p560m,p);. o1 M$ d: [0 Q/ R, F- f2 I3 @
hold off;
. y/ b, o5 Z$ W: s: |; D
, w+ f6 ]# a( Z- U( c$ L: Q/ m, O! I; L
p2=rem(p,pi*2) ;      %对差角取余数 得到一圈之内的角度
9 x/ ?5 L, J) g6 I( V( ^p1=p2/(pi/180);
0 _- n0 U8 ?( ]% [, wfigure,plot(p1);%%画出角度变化==也是关节角
3 @, N* S6 |* ^  F
, n) E1 X- s2 Y5 K9 \/ Q0 p. F* G9 b0 e5 r% w1 v4 f, v( n
t1=t';2 ?7 h, F4 L& {
a=[t1 -p1];%输出到 simulink的变量 [t1,a1]   【因为matlab 和ug输入的运动方向相反,因此输出角度取反】' r0 @: `; I3 k% A6 g3 P
4 n2 t" \) j" D' u7 K' U! E5 O
$ M% x3 u6 x, i3 _0 P
% plot(p560m,c);%%%%查看每步角度变化
/ f' n* C( F3 @7 W8 B. B% for i=1:length(t)
! T) N( p# f, X3 j% i6 `* J0 c- f%     hold on;
- ^% g' p7 J3 Q2 P%     plot(p560m,p(i,: ));4 G9 v' g; y4 ]0 D7 D
% end
+ n7 A$ z2 @0 ]- |; S! w0 _7 Q$ u3 F$ w7 o6 T. j% O7 X1 @

5 }6 L7 B& K, t$ }0 O( w6 e4 q! o# x2 p& Q) `2 S$ Y1 c
四四四四   ug运行仿真文件7 a+ O  c) H- N
       1 建立一个跟踪 ===跟踪对象是在机械手末端那个标记点A011
0 r! H+ k' z( G$ R) j* z       2 打开ug播放动画  选中跟踪
+ b7 J( o6 b2 ~* c       3  查看返回的角度变化值    打开ug作图添加6个工厂输出

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 15:20 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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