matlab机器人 联合ug仿真

来源:互联网 发布:淘宝退款太多会怎么样 编辑:程序博客网 时间:2024/05/20 11:47

一一一一::确定ug支持的matlab版本

      从ug目录下的ug8.5\ug8.50\MECH\cosim\ nx_client.m文件可以看出

 

二二二二::进行ug设置 

       1111:::添加matlab目录和 ug读取matlab产生的仿真文件时间间隔=  设置为1 (一秒采样一次)

                  设置完重启ug

 

2222:ug 运动仿真环境几个设置

      1---环境

2 --- 建立12个标记点,共分6对(6个点在运动副,6个在连杆,每对csys方向和一个运动副相同)

         3 -- -建立6个工厂输入和  6个驱动

         4---建立 工厂输入函数 和   6个 运动变量【【【 az(标记点2,标记点1)*180/pi*180/pi*】】】函数,

                  说明::【az函数是返回 标记点1相对标记点2绕着z轴转动的 弧度,再*180/pi 就是转换为返回角度,,本应返回角度却反回弧度只得在乘*180/pi】

         5—加载函数  建立6个工厂输出【函数分别选为已建立的 AZ( 标记点 , 标记点)函数】 

                         6个驱动分别选择6个运动副和 6个 工厂输入函数

        6-----解算方案【关于  仿真时间:由matlab决定, 仿真步数::由matlab的simulink中的NXMotion Plant Block 模块决定是NXMotion_step==100】

                     说明: 仿真步数==仿真时间/仿真步长    ,仿真时间不是现实时间而是虚拟时间,现实时间和电脑cpu的运算速度有关

                            一般仿真设置::1 确定仿真   关节所转圈数   ==解算方案仿真时间/驱动中的 圈数 red/S 和 角度 deg/s

                                             2确定仿真   步数(也是变化次数)          ====直接在解算方案 设置即可

   

三三三三进行matlab设置   

        1  设置matlab和ug产生的两个 .M文件目录在同一目录

        2 测量ug模型关节长度 填入 matlab程序数据

         3 运行这个代码 和 ug产生的.m文件== motion_2_Solution_1_Plant.m文件

         4 设置simulink仿真时间和 程序t=0:1:150;相同也可大于但是会在末尾自动插值,插值的大小和末尾方向一致

=======================================================

========================matlab程序======================

 %【z轴夹角==扭角   关节长度=z和下一坐标z轴距离   x夹角=和下一坐标三线之距离     】
 %  =0=617.8157     =1= 640.8633   =2= 759.2167    =3=1335.9324  =4= 129.8272  =5= 133.5056   =6= 185.9378
 %变换顺序 先绕Z轴确定 x轴 夹角(关节角)——》 在绕变换的新轴X 确定z轴夹角(扭角)--》沿着z轴移动 (横距)长度 ---》沿着x轴 移动(关节长度)
L{1} = link([0        0        0 1258.678 0],'mod');
L{2} = link([-pi/2    0  0   0   0],'mod');
L{3} = link([0     759.2167    0  0    0],'mod');
L{4} = link([0     1335.9324   0 0     0],'mod');
L{5} = link([-pi/2  129.8272    0  0    0],'mod');
L{6} =  link([pi/2    133.5056   0  0    0],'mod');
L{7} = link([pi/2     186       0 0     0],'mod');
p560m=robot(L);
u=pi/180*2;%%初始角度全部是2度
c=[ u u u u u u u];%%初始化关节角
%drivebot(p560m,c)


T1=fkine(p560m,c);
T2=[0 0 0 -1000;0 0 0 2000;0 0 0 1000;0 0 0 0];
t=0:1:150;
T=ctraj(T1,T2,length(t));
p=ikine(p560m,T,c);


for i=1:2:length(t)% 正常轨迹 i=1:length(t)
x(i)=T(1,4,i);
y(i)=T(2,4,i);
z(i)=T(3,4,i);
end
hold on;
plot3(x,y,z);%画出运动轨迹22222
plot(p560m,p);
hold off;


p2=rem(p,pi*2) ;      %对差角取余数 得到一圈之内的角度
p1=p2/(pi/180);
figure,plot(p1);%%画出角度变化==也是关节角


t1=t';
a=[t1 -p1];%输出到 simulink的变量 [t1,a1]   【因为matlab 和ug输入的运动方向相反,因此输出角度取反】


% plot(p560m,c);%%%%查看每步角度变化
% for i=1:length(t)
%     hold on;
%     plot(p560m,p(i,:));
% end


四四四四   ug运行仿真文件

       1 建立一个跟踪 ===跟踪对象是在机械手末端那个标记点A011

       2 打开ug播放动画  选中跟踪

       3  查看返回的角度变化值    打开ug作图添加6个工厂输出
























原创粉丝点击