-
MatlabSimMechanics三*度串联机器人正解反解-MyRobot_moveline(new).rar下载
资源介绍
MatlabSimMechanics三*度串联机器人正解反解-MyRobot_moveline.rar
上次我发了二*度串联机器人的正解和反解的贴子,可能这个论坛的高手觉得太简单了,都问我做的是是不是并联机器人。
前几天我感到很羞愧,也知道在这个论坛一定不能班门弄斧,本来我想把这次做的东西在年前就贴出来的,但是鼓励了一下自己,先做了一个六*度机器人,我已经贴了出来。
这次是一个比较简单的串联三*度机器人
手头也正准备做两个平面并联的机器人,还望大家多给我点意见。
我才只有大学三年级,毫无疑问是一个菜鸟,要好好向老鸟学习才是。
我先简单说明我建立模型的思路和步骤
首先,制作一个生成轨迹的子系统,这个用最简单的simulink就可以做出来。
然后,制作一个simmechanics的系统,这是整个仿真的关键部分,还是强调坐标系的灵活使用。
再者,制作一个位置逆解的程序,这里我个人比较喜欢使用数值解法,只要用一个matlabfun模块就可以把m文件和simulink结合起来,可以大大的减少工作量,实现复杂的功能。
最后,制作joint的输入模块,所有的输入都是转动的位移,这一步是最简单的。
主要用到matlab中的一个模块和一个命令Simechanics模块和优化工具箱中的fsolve命令
好了言归正传,我先说简单的三*度机器人,这个就是最典型的PUMA机器人
但是我必须要说明的是,我只是为了演示simmechanics工具箱的使用,所以我把手腕的部分去除了,如果大家有兴趣的话希望在我的模型上加以改进。
这个机器人实际上就是三根连杆,三个转动副,连杆的长度分别为a1,a2和a3
必须要有三个输入才能得到一个稳定的位置,换句话说会有有三个方程,那么它们是
x=cos*cos*cos*a3-cos*sin*sin*a3 cos*cos*a2
y=sin*cos*cos*a3-sin*sin*sin*a3 sin*cos*a2
z=sin*cos*a3 cos*sin*a3 sin*a2 a1
其中th1,th2和th3是三个转动副的转角
这个是根据DH法推出来的,在这里我就不多说了,如果不用DH法也可以很简单的算出来,看大家的喜好了。
现在的任务就是,要使机器臂的末端走出一条直线来
那我就随便乱说了,原理和方法是一样的就可以了
就从沿直线走到吧
好了下面我就把m文件和仿真的图都贴出来
大家多给我点意见啊,有问题也可以发邮件给我,欢迎交流
xukai19871105@126.com
%MyRobot有三个转动关节,共有三个*度
%该文件用于在simulink中求解三个转动副的转角
function [result]=MyRobot_Inverse
%方便编程,转化传入的数据
x=u;
y=u;
z=u;
%三个连杆的长度
a1=1;
a2=0.8;
a3=0.5;
%求解参数设置
options=optimset;
%调用fsolve命令求解三个转角
result=fsolve;
%求解三个转角的非线性方程组
function [theta]=NumericalSolution
%方便编程,转化输入值
th1=u;
th2=u;
th3=u;
theta=[cosd*cosd*cosd*a3-cosd*sind*sind*a3 cosd*cosd*a2-x;
sind*cosd*cosd*a3-sind*sind*sind*a3 sind*cosd*a2-y;
sind*cosd*a3 cosd*sind*a3 sind*a2 a1-z];