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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
一一一一::确定ug支持的matlab版本
+ Z* I' P- U! U9 J' F" R3 V! _      从ug目录下的ug8.5\ug8.50\MECH\cosim\ nx_client.m文件可以看出1 Q; D) T- \  ]5 i" r
1 I: U- M" g1 a. w: H0 Q) X
% S6 D  t. J( [* x- _
二二二二::进行ug设置7 s$ r; Q* d( r" {" E
       1111:::添加matlab目录和 ug读取matlab产生的仿真文件时间间隔=  设置为1 (一秒采样一次)
  f+ ?. M' g6 o% `0 ?2 w, d                  设置完重启ug* l6 o. k1 n. q
% d: G+ ~1 K6 \* h/ u

" U% y" k2 f8 u  m( W2222:ug 运动仿真环境几个设置
# I& R6 d3 N9 e# L8 B1 H8 }      1---环境* I/ b) L) R$ A
2 --- 建立12个标记点,共分6对(6个点在运动副,6个在连杆,每对csys方向和一个运动副相同)
1 R9 v7 g1 B2 k% k8 D         3 -- -建立6个工厂输入和  6个驱动4 _3 ^6 U" S& I; Q! V' q
         4---建立 工厂输入函数 和   6个 运动变量【【【 az(标记点2,标记点1)*180/pi*180/pi*】】】函数,- w+ ]1 f" j( Y( u+ v
                  说明::【az函数是返回 标记点1相对标记点2绕着z轴转动的 弧度,再*180/pi 就是转换为返回角度,,本应返回角度却反回弧度只得在乘*180/pi】; B  T9 E8 c5 Q3 A' E$ x
         5—加载函数  建立6个工厂输出【函数分别选为已建立的 AZ( 标记点 , 标记点)函数】
' C2 p; |1 v  s                         6个驱动分别选择6个运动副和 6个 工厂输入函数! ^/ p0 v( E" V2 @+ l% d+ y! d
        6-----解算方案【关于  仿真时间:由matlab决定, 仿真步数::由matlab的simulink中的NXMotion Plant Block 模块决定是NXMotion_step==100】
* x/ N/ z' L2 b9 y. J/ m) C                     说明: 仿真步数==仿真时间/仿真步长    ,仿真时间不是现实时间而是虚拟时间,现实时间和电脑cpu的运算速度有关( S2 Z1 o8 h0 N2 {
                            一般仿真设置::1 确定仿真   关节所转圈数   ==解算方案仿真时间/驱动中的 圈数 red/S 和 角度 deg/s
3 I' F. W- l5 I2 }9 N& I% D9 S                                             2确定仿真   步数(也是变化次数)          ====直接在解算方案 设置即可
& ]9 q) k+ H' S/ z3 n; i: W+ r: w( D

, @1 s) T4 `% O. g+ L3 h. L. c三三三三进行matlab设置   : {. @, x# ]1 K" B9 \1 r2 Z0 {
        1  设置matlab和ug产生的两个 .M文件目录在同一目录5 K: S) l- |- q+ Q- m
        2 测量ug模型关节长度 填入 matlab程序数据* k, o+ J( u. a4 t% s. W7 e, X; C
         3 运行这个代码 和 ug产生的.m文件== motion_2_Solution_1_Plant.m文件; f" s2 {7 _( J% G, u
         4 设置simulink仿真时间和 程序t=0:1:150;相同也可大于但是会在末尾自动插值,插值的大小和末尾方向一致
; k- s: X  O/ ^, G! i4 n; w! E=======================================================5 H4 t" o( D" j  H  r
========================matlab程序======================- B- r0 I0 \3 K0 `- `$ p9 V+ r
%【z轴夹角==扭角   关节长度=z和下一坐标z轴距离   x夹角=和下一坐标三线之距离     】  o; g% R% |% W3 G4 v
%  =0=617.8157     =1= 640.8633   =2= 759.2167    =3=1335.9324  =4= 129.8272  =5= 133.5056   =6= 185.9378
' z$ I  }$ d$ U( W: t# V* Y%变换顺序 先绕老Z轴确定 x轴 夹角(关节角)——》 在绕老轴X 确定z轴夹角(扭角)--》沿着新z轴移动 (横距)长度---- ---》沿着新x轴 移动(关节长度)
! X/ g+ A0 }6 A9 XL{1} = link([0        0        0 1258.678 0],'mod');- z0 ^; k: p& |( W
L{2} = link([-pi/2    0  0   0   0],'mod');( B* g) K, v* U' B1 l
L{3} = link([0     759.2167    0  0    0],'mod');( C' C5 U  N+ B
L{4} = link([0     1335.9324   0 0     0],'mod');: D* B8 z( f5 g. s: ]" x" b8 j# r& U
L{5} = link([-pi/2  129.8272    0  0    0],'mod');; ~2 ]* k! ]1 K2 ~+ V. O% ^& i. V
L{6} =  link([pi/2    133.5056   0  0    0],'mod');2 Q/ `+ o2 e, W" ~* I: @. h
L{7} = link([pi/2     186       0 0     0],'mod');& f7 z, J; `; H; i( S6 [
p560m=robot(L);1 y; V. y' H& ~+ r: K/ I! Q
u=pi/180*2;%%初始角度全部是2度
1 J5 ?, \* ?  T* ?) K8 Sc=[ u u u u u u u];%%初始化关节角
+ x( N9 c% O$ d# U%drivebot(p560m,c)
  J+ x. i, G7 K% G+ y/ O
, z+ L1 s) O2 l7 q) {
3 p4 ^: K( a+ Y- `T1=fkine(p560m,c);
- J% E  B+ @  B9 M! O( `T2=[0 0 0 -1000;0 0 0 2000;0 0 0 1000;0 0 0 0];% j. {/ {, X4 B  k" w
t=0:1:150;
4 t, N4 [4 z. o2 ^T=ctraj(T1,T2,length(t));
* @: j: T, n) s% p: n! ?p=ikine(p560m,T,c);4 H! w+ \7 ^- {+ c$ N1 c: g
! y* `: {5 [# I$ g: ^/ k

. h5 A9 k7 \6 I1 \" y" s" O! [# k# xfor i=1:2:length(t)% 正常轨迹 i=1:length(t)5 E# ?% W: t- h* M9 U5 j
x(i)=T(1,4,i);
4 f/ K$ b6 ~8 b" D+ h8 g: ?# Gy(i)=T(2,4,i);& }, L; i. C6 p8 ~: M
z(i)=T(3,4,i);) O0 _8 ]. l4 U% R( B
end9 a9 ?& K% a; v# J. r
hold on;5 K, ?# b4 I. S% i3 x
plot3(x,y,z);%画出运动轨迹22222
" ^2 D/ J6 Y$ O$ i, G6 vplot(p560m,p);
/ U% s4 e/ [& ^2 A" Phold off;
" R: z& s# c4 ^3 b! b. z' l$ v# z, z/ Z, N5 B+ `1 w

  a# O; Z& Q; ~- Qp2=rem(p,pi*2) ;      %对差角取余数 得到一圈之内的角度5 q4 T8 s/ z& A7 L3 s! V1 N
p1=p2/(pi/180);
: U/ S7 d. k3 L! z' V. `8 q9 Sfigure,plot(p1);%%画出角度变化==也是关节角
7 ]( Q+ Y% N7 b- J
% ?1 Z* t3 N; d. S8 l& y* Y. g$ V7 v/ y4 w
t1=t';- N# F/ b+ N/ Q6 g- n* z+ h
a=[t1 -p1];%输出到 simulink的变量 [t1,a1]   【因为matlab 和ug输入的运动方向相反,因此输出角度取反】
) [" U" N6 {5 p- S: X! K; R. Y5 {8 o" H

; k# O' @7 i: _7 D7 ^! Q7 C1 Q% plot(p560m,c);%%%%查看每步角度变化: Q( [, R" f3 N3 s$ [) U
% for i=1:length(t)
& C1 Z: O( h% h! W5 v7 y7 K%     hold on;4 t3 k- P" |1 B+ D5 l
%     plot(p560m,p(i,: ));
0 C- V. [% d8 i% end1 I( ^* K; y. {$ _, W
6 P8 O% ^, z. t! F8 [( Y1 ?
: r; T. y2 X, D: u
6 J( U: ^2 [3 Y& Z2 I' y. d
四四四四   ug运行仿真文件
. n* E7 w+ D% k& W% l       1 建立一个跟踪 ===跟踪对象是在机械手末端那个标记点A011
$ b- D3 z- `! S: j4 ]! V' t       2 打开ug播放动画  选中跟踪8 I( U5 {7 m- o9 C
       3  查看返回的角度变化值    打开ug作图添加6个工厂输出

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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