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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
一一一一::确定ug支持的matlab版本7 v+ |1 C  O. a, c
      从ug目录下的ug8.5\ug8.50\MECH\cosim\ nx_client.m文件可以看出
3 V: i4 @0 v* j7 i9 ?+ Z; }! V
7 l' Z2 m2 F3 R5 o( A) p  P
8 k* B% S2 Y; m: ?% q二二二二::进行ug设置$ K* `0 @8 A7 C' g+ t4 o( H9 B
       1111:::添加matlab目录和 ug读取matlab产生的仿真文件时间间隔=  设置为1 (一秒采样一次)
) H1 W# V$ R) f6 G. r; [% {, `                  设置完重启ug/ k" q( p5 r3 e# p
2 B# ?1 V& g, ]$ J. h

: C& {2 ^3 \" g/ G2 ~3 \: q2222:ug 运动仿真环境几个设置
+ X/ A8 k9 Z( T* c% @1 j& @      1---环境4 C) x% m# D( x# s0 ^
2 --- 建立12个标记点,共分6对(6个点在运动副,6个在连杆,每对csys方向和一个运动副相同)
2 m1 p* c/ b# T# Q* _5 V' \         3 -- -建立6个工厂输入和  6个驱动
3 A. b( V+ _3 ]$ @$ V( G         4---建立 工厂输入函数 和   6个 运动变量【【【 az(标记点2,标记点1)*180/pi*180/pi*】】】函数,
/ W7 @3 w1 D1 P- M                  说明::【az函数是返回 标记点1相对标记点2绕着z轴转动的 弧度,再*180/pi 就是转换为返回角度,,本应返回角度却反回弧度只得在乘*180/pi】
! F7 X5 n6 H. \6 T" N2 _         5—加载函数  建立6个工厂输出【函数分别选为已建立的 AZ( 标记点 , 标记点)函数】
1 J0 n* T! Z; M  G                         6个驱动分别选择6个运动副和 6个 工厂输入函数9 o. Y3 {5 K6 H  M
        6-----解算方案【关于  仿真时间:由matlab决定, 仿真步数::由matlab的simulink中的NXMotion Plant Block 模块决定是NXMotion_step==100】+ d2 M- E) @5 W3 J) o7 v. D
                     说明: 仿真步数==仿真时间/仿真步长    ,仿真时间不是现实时间而是虚拟时间,现实时间和电脑cpu的运算速度有关- M& m* b( B, Q4 w
                            一般仿真设置::1 确定仿真   关节所转圈数   ==解算方案仿真时间/驱动中的 圈数 red/S 和 角度 deg/s
+ q( R3 C- T/ _                                             2确定仿真   步数(也是变化次数)          ====直接在解算方案 设置即可. P) s9 s" D9 \
% U% i4 \+ k( W* E

) F0 {3 e1 `8 a* u* x% w三三三三进行matlab设置   
1 T% ?3 }; S2 L# D5 A, a        1  设置matlab和ug产生的两个 .M文件目录在同一目录/ ~) p% L6 g8 @$ u( t
        2 测量ug模型关节长度 填入 matlab程序数据
, X$ O( z& T: G& p         3 运行这个代码 和 ug产生的.m文件== motion_2_Solution_1_Plant.m文件" ^- n0 ]- m8 f
         4 设置simulink仿真时间和 程序t=0:1:150;相同也可大于但是会在末尾自动插值,插值的大小和末尾方向一致6 P+ T9 J& |) l$ r7 w0 `  W
=======================================================
; n1 B& q. }" {$ F: a. }9 }# \========================matlab程序======================
& l" t- B5 e  ?2 ^& c%【z轴夹角==扭角   关节长度=z和下一坐标z轴距离   x夹角=和下一坐标三线之距离     】* O2 d6 A. z0 H; A, o
%  =0=617.8157     =1= 640.8633   =2= 759.2167    =3=1335.9324  =4= 129.8272  =5= 133.5056   =6= 185.9378
, O6 E% L- w0 z%变换顺序 先绕老Z轴确定 x轴 夹角(关节角)——》 在绕老轴X 确定z轴夹角(扭角)--》沿着新z轴移动 (横距)长度---- ---》沿着新x轴 移动(关节长度)( D( A4 ~: P% F) x- U
L{1} = link([0        0        0 1258.678 0],'mod');' H* C" e% S/ a# u" |& i
L{2} = link([-pi/2    0  0   0   0],'mod');
) c; x$ k4 T8 d) tL{3} = link([0     759.2167    0  0    0],'mod');
: L, _0 F# M+ r9 t) S8 X1 pL{4} = link([0     1335.9324   0 0     0],'mod');; d) L: q" Y4 E  g: V
L{5} = link([-pi/2  129.8272    0  0    0],'mod');+ V7 ], ?6 k+ V, D& _. N! f  B) S1 W
L{6} =  link([pi/2    133.5056   0  0    0],'mod');& Z2 g5 B4 Y; Y) t3 @
L{7} = link([pi/2     186       0 0     0],'mod');
+ ~: d9 u2 ?) F+ P0 ^( \p560m=robot(L);0 [% K7 w4 ?. }0 A$ y
u=pi/180*2;%%初始角度全部是2度
& N8 o; p# {% wc=[ u u u u u u u];%%初始化关节角
% ^/ N7 n+ b( {/ t/ _7 M%drivebot(p560m,c)
/ |6 ?4 f* v% d6 `8 e  ?% D
/ q* S7 H  Y0 k( c& f$ H6 ?6 m2 R7 z* u
T1=fkine(p560m,c);) p7 C! Y( j# ^1 P) X! c& T
T2=[0 0 0 -1000;0 0 0 2000;0 0 0 1000;0 0 0 0];2 ^1 M$ T: u% k1 z" _* `; ~+ V
t=0:1:150;/ d# \- d7 N& u7 \- \1 s$ l
T=ctraj(T1,T2,length(t));
4 g8 V, f' W8 N" lp=ikine(p560m,T,c);* B( w" b7 \! E1 |8 l

* r; x: @( v8 d* @, X& x5 U4 B1 O/ n
for i=1:2:length(t)% 正常轨迹 i=1:length(t)1 k& y6 E# m5 f5 b3 q
x(i)=T(1,4,i);
( m0 Q( }' g% S8 G" ~y(i)=T(2,4,i);
. s+ f$ c: f, Yz(i)=T(3,4,i);1 Z) E- [1 K6 t7 [
end
! C) V- a' N: F4 d1 }; bhold on;3 U: j# Y+ S3 c8 P  c. O
plot3(x,y,z);%画出运动轨迹22222
0 f$ c' D8 G0 Lplot(p560m,p);- t& e9 S7 P8 O+ ^) Y6 I( Z
hold off;
! B2 @8 X9 B6 i7 H6 M8 ~9 x# R7 x3 D1 r3 {) O0 L

6 l/ s" s0 v- \- Vp2=rem(p,pi*2) ;      %对差角取余数 得到一圈之内的角度
& |1 }6 _! q$ H- N. S2 Wp1=p2/(pi/180);
+ R; d3 D) j8 o' ?2 ~# cfigure,plot(p1);%%画出角度变化==也是关节角
- k  r3 p, Q( E  P& z+ Y# S
# K7 ]- U/ r% n* N, u1 D+ O  m# B" b* r' y! n, A1 z
t1=t';
! M; E) c' U" \8 w$ Z2 ?a=[t1 -p1];%输出到 simulink的变量 [t1,a1]   【因为matlab 和ug输入的运动方向相反,因此输出角度取反】0 I. d; G, M  @- H  b

# F6 U8 O5 `% F) N
# i! y( z1 S: E: q% plot(p560m,c);%%%%查看每步角度变化
# X# g8 S" L; A  @- M/ G% for i=1:length(t)
$ t! C( h% p6 s5 S  ~3 b%     hold on;9 ]3 f# S! r: Z( y0 Z
%     plot(p560m,p(i,: ));
0 {  i; @. m% c! D6 P% end' b1 U* L: w0 r" N: D; L/ E+ S7 \

2 q; u, o/ a, B. ?4 {4 e' |' x# h2 ~
$ X8 L1 L- y) }( A$ V% D
, y' h7 [& f+ u7 ]四四四四   ug运行仿真文件8 M6 v! |! `$ q' C
       1 建立一个跟踪 ===跟踪对象是在机械手末端那个标记点A011
5 k6 g/ n% e, R  b       2 打开ug播放动画  选中跟踪
" S6 H  U" V2 b2 X( l  I* T2 J" E       3  查看返回的角度变化值    打开ug作图添加6个工厂输出

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-16 14:42 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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