之前有小伙伴想了解MATLAB运动学仿真的知识,这两天特地作了整理.最近在找工作,所以文章更新频率会慢一些,时间仓促,如果错误还请指正.
在学习用MATLAB仿真之前,应该先去了解一下Simulink的使用,可以参考官网的入门教程Simulink Getting Started Guide.
第二个需要补充的知识是机器人运动学/动力学基础,推荐Modern Robotics.可以在Library Genesis上找到电子书.
MATLAB中用于机器人动力学仿真的工具箱叫做Robotics System Toolbox,可以在MATLAB命令行中输入"ver"查看是否安装了此插件.
你可以对照着官网的用户手册进行学习:Robotics System Toolbox User Guide.
User Guide的前半部分是基础部分,主要讲了Rigid Body Tree、逆运动学算法 、轨迹跟踪 、代码生成等等.后半部分是具体的实例,每一个例子都讲解的较为详细,比较遗憾的是Simulink部分一般都只给了最后连接完成的图,有些模块如果不熟悉就很难找到,所以在准备知识中,我列出了Simulink的入门教程.
这个例子在是上面User Guide的一个具体实例,我将以这个例子来讲解学习过程中的一些注意事项.
小提示:为了防止当前工程和之前的工程相互影响,先"清除三连"
close % 关闭当前的Figure窗口
clear % 清除工作空间的所有变量
clc % 清除命令窗口的内容,对工作环境中的全部变量无任何影响
小提示:MATLAB是脚本语言,无需编译即可执行,选中以下代码按F9执行
% 这个iiwa14.urdf是系统自带的一个文件
robot = importrobot('iiwa14.urdf');
% 设置数据格式为列向量格式(或者row行向量格式)
robot.DataFormat = 'column';
% 打开一个窗口显示机器人
ax = show(robot);
执行上述代码,就可以看到我们要操作的机械臂了:
% xyz组成一个空间中的N字型
x = 0.5*zeros(1,4)+0.25;
y = 0.25*[-1 -1 1 1];
z = 0.25*[-1 1 -1 1] + 0.75;
% 画出拟定的运动轨迹
hold on
plot3(x,y,z,'--r','LineWidth',2,'Parent',ax)
hold off
执行上述代码,看到图片中多了一个运动轨迹:
% 关闭图片
close
% 打开Simulink文件
open_system('sm_ik_trajectory_model.slx')
% 执行Simulink文件
sim('sm_ik_trajectory_model.slx')
上面的sm_ik_trajectory_model.slx文件是自己创建的,具体连接看下图,其中中间的坐标转换模块和机械臂模块可以在Simulink Library Browser 中Robot System Toolbox里面找到.
小提示:善用Help来了解不熟悉的模块,Help打不开的到HOME->Preference->Help里选择Installed locally
小提示:你甚至可以在Help里面找到上述例子的原文档,自己试试看
% 循环执行并展示机械臂末端执行器位置
figure('Visible','on');
tformIndex = 1;
for i = 1:10:numel(configs.Data)/7
currConfig = configs.Data(:,1,i);
show(robot,currConfig);
drawnow
xyz(tformIndex,:) = tform2trvec(getTransform(robot,currConfig,'iiwa_link_ee'));
tformIndex = tformIndex + 1;
end
可以看到,机械臂末端是走的字母N的形状.程序到这里就差不多结束了(最后还有一些东西省略了),想了解更多细节,请去看前面推荐的User Guide.
这里面我觉得比较难的是Simulink连接那一部分,主要是一些模块不熟悉,当时卡壳了很久,后来发现这些都可以再Help里面搜索到,所以善用软件中的文档是一件很重要的事情.
如果你觉的文章有帮助,欢迎点赞/收藏/关注一键三联,你的支持是我更新的最大动力!.
武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks ,Hyperworks, Protel,CAXA,OpenWorks LandMark,MATLAB,Enovia,Winchill,TeamCenter,MathCAD,Ansys, Abaqus,ls-dyna, Fluent, MSC,Bentley,License,UG,ug,catia,Dassault Systèmes,AutoDesk,Altair,autocad,PTC,SolidWorks,Ansys,Siemens PLM Software,Paradigm,Mathworks,Borland,AVEVA,ESRI,hP,Solibri,Progman,Leica,Cadence,IBM,SIMULIA,Citrix,Sybase,Schlumberger,MSC Products...