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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
一一一一::确定ug支持的matlab版本: D) i1 O) l" f
      从ug目录下的ug8.5\ug8.50\MECH\cosim\ nx_client.m文件可以看出
( ^% n4 d& I( X# B; N  r8 @
8 E1 \7 R+ l3 @2 ^2 H
3 i+ U8 C' |7 N3 u/ {二二二二::进行ug设置8 r& V1 |) q6 Q; g# [2 E. p6 M
       1111:::添加matlab目录和 ug读取matlab产生的仿真文件时间间隔=  设置为1 (一秒采样一次)8 z) c* {$ t! S& s
                  设置完重启ug) m! i; B9 C7 `, G. ^$ p3 K4 W
( W* P! J2 S+ m" r
. w1 S/ N& o: M: `  A5 Z' T1 d
2222:ug 运动仿真环境几个设置3 l+ `; [! B( p
      1---环境
1 @! v9 B& Q' R; X2 --- 建立12个标记点,共分6对(6个点在运动副,6个在连杆,每对csys方向和一个运动副相同)
& `, P5 v0 x# |         3 -- -建立6个工厂输入和  6个驱动+ A$ y: ?9 t9 x: [6 x" p
         4---建立 工厂输入函数 和   6个 运动变量【【【 az(标记点2,标记点1)*180/pi*180/pi*】】】函数,
- X/ [( s6 l3 J4 q/ u6 t                  说明::【az函数是返回 标记点1相对标记点2绕着z轴转动的 弧度,再*180/pi 就是转换为返回角度,,本应返回角度却反回弧度只得在乘*180/pi】
3 }  g% j6 R! F$ X+ k         5—加载函数  建立6个工厂输出【函数分别选为已建立的 AZ( 标记点 , 标记点)函数】: H3 Q$ N! S$ j' H- \7 a
                         6个驱动分别选择6个运动副和 6个 工厂输入函数  O3 ?; g( m: {" Y2 m& k
        6-----解算方案【关于  仿真时间:由matlab决定, 仿真步数::由matlab的simulink中的NXMotion Plant Block 模块决定是NXMotion_step==100】0 R2 v  c! `- o! x( \; a; |
                     说明: 仿真步数==仿真时间/仿真步长    ,仿真时间不是现实时间而是虚拟时间,现实时间和电脑cpu的运算速度有关
5 h/ w  @3 w9 v6 @                            一般仿真设置::1 确定仿真   关节所转圈数   ==解算方案仿真时间/驱动中的 圈数 red/S 和 角度 deg/s
( z  R2 l% s, n3 C6 L                                             2确定仿真   步数(也是变化次数)          ====直接在解算方案 设置即可
, B4 M" l! _% o' X0 {. j0 Q, U# ?! B

) y/ X0 J0 h- q0 G( L9 u6 i三三三三进行matlab设置   ; a2 p: ^+ K, w; f
        1  设置matlab和ug产生的两个 .M文件目录在同一目录
$ R5 l" G- u9 l# Z+ P        2 测量ug模型关节长度 填入 matlab程序数据; K) v, ^! m7 a9 A
         3 运行这个代码 和 ug产生的.m文件== motion_2_Solution_1_Plant.m文件
' q/ O9 q% E$ Z- h3 C5 @& h. U7 o         4 设置simulink仿真时间和 程序t=0:1:150;相同也可大于但是会在末尾自动插值,插值的大小和末尾方向一致
5 v& \$ e" B, r2 E=======================================================: C3 v0 j7 |$ |+ Y4 C% ~8 k% o
========================matlab程序======================
- w' ~. p2 X; Y1 f$ \3 j%【z轴夹角==扭角   关节长度=z和下一坐标z轴距离   x夹角=和下一坐标三线之距离     】
* Y+ @! T3 t9 X0 Z8 @, ?* t%  =0=617.8157     =1= 640.8633   =2= 759.2167    =3=1335.9324  =4= 129.8272  =5= 133.5056   =6= 185.9378
$ y, s& F' U% Q8 ~6 A%变换顺序 先绕老Z轴确定 x轴 夹角(关节角)——》 在绕老轴X 确定z轴夹角(扭角)--》沿着新z轴移动 (横距)长度---- ---》沿着新x轴 移动(关节长度)
: R  E1 }: M6 t0 pL{1} = link([0        0        0 1258.678 0],'mod');
7 v  K. p: g8 K1 S( b- \L{2} = link([-pi/2    0  0   0   0],'mod');$ ~$ q! @. e9 s
L{3} = link([0     759.2167    0  0    0],'mod');
- B+ f6 K3 G* p4 cL{4} = link([0     1335.9324   0 0     0],'mod');6 j2 A1 V! R+ h: S
L{5} = link([-pi/2  129.8272    0  0    0],'mod');: y7 K  @1 P) l) G% O
L{6} =  link([pi/2    133.5056   0  0    0],'mod');
( p7 C7 ]' a% W! Y1 W" EL{7} = link([pi/2     186       0 0     0],'mod');
/ E4 v1 f- N  {- ~p560m=robot(L);
% q, n) t1 e. y* ku=pi/180*2;%%初始角度全部是2度
/ W8 Y- h) ~! V& c, ^5 Fc=[ u u u u u u u];%%初始化关节角/ X6 Z7 X* B, [- n
%drivebot(p560m,c)
. q; ~6 w+ z! v2 N' v- V
+ g6 B, _* c, }7 J& X6 T4 R5 i. W
* E- g8 ?" n- v1 a8 y7 b3 f. @1 |& lT1=fkine(p560m,c);3 t( Y  c7 V' w) r
T2=[0 0 0 -1000;0 0 0 2000;0 0 0 1000;0 0 0 0];
$ i2 ~; q4 Q+ V! ]6 U7 t$ zt=0:1:150;3 r4 P! Y" T9 c- C
T=ctraj(T1,T2,length(t));
* i$ g9 A9 g! N0 ~8 O5 Vp=ikine(p560m,T,c);+ @( t, ]4 }8 s" Y0 L
; D4 h; r& T- L2 @

3 n) u; K: [; T7 ^# m6 m6 efor i=1:2:length(t)% 正常轨迹 i=1:length(t)
/ x  ]. M! @7 Z( q3 tx(i)=T(1,4,i);0 I7 S. X4 Q- C8 |( E& Y2 F6 w
y(i)=T(2,4,i);" m" V6 c7 S2 u; {2 r
z(i)=T(3,4,i);
* v0 G1 g7 g7 j0 Y5 }! F- _end
' v  n; C+ ~* X, T1 G. A8 y& phold on;
2 r+ @" n4 q4 y" r6 [7 dplot3(x,y,z);%画出运动轨迹22222: T* B+ e% i! U. l" X" F( ^
plot(p560m,p);3 [" N# T" Z& @3 i3 r" ]. H
hold off;( I! V4 K# F3 @4 _2 |% U  c( I
9 Z, C5 ~+ ~& V  h0 w4 K2 P$ o

* r2 v9 `+ k5 j8 d+ s: S+ v. Vp2=rem(p,pi*2) ;      %对差角取余数 得到一圈之内的角度
5 C9 Z3 o) W0 I" W2 Kp1=p2/(pi/180);' F7 C3 q$ z2 u/ I; T
figure,plot(p1);%%画出角度变化==也是关节角5 r6 m' V% R6 e  E+ N
0 a$ ?3 ]6 }4 Z( Q/ n9 w

7 E* ^  W( q3 F0 _t1=t';, q6 Z1 Z( R8 K5 h
a=[t1 -p1];%输出到 simulink的变量 [t1,a1]   【因为matlab 和ug输入的运动方向相反,因此输出角度取反】
6 ~  u0 e/ G& W0 s7 g/ \4 z- K  ?! I5 k! C

/ K; r7 B4 I+ N; p9 h% plot(p560m,c);%%%%查看每步角度变化
4 K. w6 g! ~! n' @5 i4 d; x1 b% for i=1:length(t)* L" t" D$ P7 H; [( i
%     hold on;
1 \/ P/ i# b2 P& Z2 O%     plot(p560m,p(i,: ));
7 x) q9 ^& ?. G8 F) Y7 n% end
4 Y  q) ]) `5 e" R- Y6 B
( K1 ~9 T/ ^5 H/ P; d- V. j# D
# J# O2 b2 ~! \3 H8 o
( A/ x9 K9 }7 z& H" {1 }9 @$ d四四四四   ug运行仿真文件! ^. q; V1 k% D6 G5 H! H! B/ X  j! g
       1 建立一个跟踪 ===跟踪对象是在机械手末端那个标记点A011
. ?2 M) ~; g% P4 e- i3 k+ n       2 打开ug播放动画  选中跟踪
" X8 D: F* R# `4 O  w) i" r# _! m       3  查看返回的角度变化值    打开ug作图添加6个工厂输出

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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