[已答复] matlab二自由度和三自由度机器人反解探索—1

[复制链接]
xukai871105 发表于 2009-1-22 16:52:18
二自由度和三自由度正解和反解的探讨

首先我在这里说明正解不用多说了,反解我都是使用的数值方法,我想这个可能和大家在机器人中学的解析法有一点不一样

我主要用到matlab中的一个模块和一个命令
Simechanics模块和优化工具箱中的fsolve命令

好了言归正传,我先说简单的平面二自由度机器人
这个机器人实际上就是两根连杆,两个转动副,长度分别为l1l2
对这个机器人有两个输入就可以得到预定的位置
那么方程也只有两个
X=l1*cos(th1)+l2*cos(th1+th2)
Y=l1*sin(th1)+l2*sin(th1+th2)
我想这个就不用我多说了吧,我在编程的时候喜欢使用cosdsind,角度制大家都是比较喜欢的啊。
正解就是知道了两个角度求末端的坐标,反解呢就是知道末端的坐标,求两个角度。

我们现在的任务就是,已知连杆的长度为0.8,要它在平面中走出一条直线来
这条直线是y=-x+1.6,从(0.80.8)到(1.50.1)。

那么我们就可以使用fsolve命令,对已知的点反过来求出th1th2的值(角度制)
只要把方程写成标准的形式就可以了,可以写成下面的m文件。

Function [x]=inverse(u,x,y)
l1=0.8;
l2=0.8;
th1=u(1);
th2=u(2);
X=[l1*cos(th1)+l2*cos(th1+th2)-x
l1*sin(th1)+l2*sin(th1+th2)-y];
(下面有全部的)
强调一下fsolve的使用方法,
首先要把设置options=options(‘display’,off’’),这样是为了接受数据方便,真的很有用。
然后一定要注意了,一定要把这个options传给fsolve起到占位的作用
比如说
X=fsolve(@myfun,[0,0],x,y)
是不对的,你也编译不出来,一点要在初值后面加入options
X=fsolve(@myfun,[0,0],options,x,y)
这样写才对啊

你可以在simulink中利用ramp模块(斜坡函数)生成x的值,然后通过sumgain模块生成y的值,把这个值传给matlab function模块,而这个模块就是你所编写的反解程序。方法很多,可以不一样的。

%其中的一个m文件
function [theta23]=Robot_Inverse_Solution(input)
xp=input (1);
yp=input (2);
options=optimset('display','off');
l1=0.8;
l2=0.8;
[theta23]=fsolve('Robot_Inverse',[0 90],options,xp,yp,l1,l2);
%另一个m文件
function t=Robot_Inverse(u,xp,yp,l1,l2)
theta1=u(1);
theta2=u(2);
t=[l1*cosd(theta1)+l2*cosd(theta1+theta2)-xp
l1*sind(theta1)+l2*sind(theta1+theta2)-yp];

好了二自由度的我就说到这了,这个模型我是参考一篇论文做的我也把它传上来吧,程序全部在一个文件夹中,这个方法就是里面的Numerical

还有用解析法做的,有用simulink做的,有的我就只编了一个m文件。

三自由度的我也做出来了,只是我饿了要去吃饭了,下次发给大家。

[ 本帖最后由 edifiers2008 于 2009-1-22 23:16 编辑 ]

基于MATLAB_Simulink的机器人运动学仿真.pdf

195.69 KB, 下载次数: 62676

论文

Kinematics simulation of two joint robots.rar

27.68 KB, 下载次数: 42937

原程序

25 条回复


提示: 作者被禁止或删除 内容自动屏蔽

jeffreyshi 发表于 2009-1-22 21:22:00

Parallel Manipulator

Now I am working for parallel manipulator. If possible, we can exchange the information.

提示: 作者被禁止或删除 内容自动屏蔽

xukai871105 发表于 2009-1-22 22:21:50
我现在还是做的串联机器人,并联的我也做啊
我看很多的中国学者都不是很喜欢用数值解
我也不知道为什么啊
但是我觉得如果使用dsp处理器的话
做一些这样难度的优化问题是没有任何难度的
我还不是很懂,我说实话
我学机器人学了十多天,就是从放寒假开始,我对于各位高手来说还是菜鸟
不过我很感兴趣啊,自学的很来劲。
我看过那本吴先生写的书了,实在是不懂啊。
我还是第一次做机器人的东西,关于并联的机器人我做了一个简单的反解问题
就编了一个m文件,看看杆长的变化。
我个人理解啊
怎么简单我就怎么做。
:victory: :victory:
我看不懂,我就自创,虽然有点狂。

提示: 作者被禁止或删除 内容自动屏蔽

sanywangjun 发表于 2009-4-4 22:31:01
并不是大家不喜欢用数值解,之所以去分析解析解是为了从机构学理论的高度出发去分析机器人的运动,这样能够对机器人的运动规律,控制规律做出更深刻的理解,才能更好的控制机器人。
呵呵,个人意见

xukai871105 发表于 2009-4-5 10:21:52

回复 7# sanywangjun 的帖子

建模是一样的,只是解出来的方法不一样

想想simmechanics和admas哪个不是在每个位置状态一阶展开得到的结果
所以呢,我个人更推荐使用数值解法去解,当然建模还是和机构学的一样的

zzx007 发表于 2010-4-11 13:51:30
先看看!

clesky 发表于 2010-5-11 16:24:26
谢谢  挺好……

hl1075616 发表于 2010-12-12 16:11:27
看看先!

hlhl 发表于 2010-12-12 20:10:51

回复 5# xukai871105 的帖子

xukai871105 你好!我现在在做串联机器人轨迹规划和控制。  有机会交流一下!QQ:864243486

海底世界0 发表于 2011-4-8 15:54:30
支持顶了

xqqe 发表于 2011-4-13 19:19:05
学习一下 很有收获

dataspace 发表于 2011-8-4 16:01:30
谢谢分享:)

174962512wq 发表于 2011-8-5 17:06:48

回复 1# xukai871105 的帖子

楼主,你好,我现在在做5自由度机械臂的控制,也需要这方面的资料,已知:起始位置和终止位置来求运动学逆解(每个关节的关节角),把起始位置和终止位置、分别对应的关节角都求出后,就可以利用控制器写程序控制舵机按照 求出的关节角运动,谢谢了,我想有问题还向你请教,174962512 QQ

zzbs1987 发表于 2011-8-12 09:19:54
为什么下不下来了

zzbs1987 发表于 2011-8-12 09:21:38
文件下来大小不对

zzbs1987 发表于 2011-8-16 10:18:48
谢谢,挺好

wkang123 发表于 2011-11-22 19:00:05

回复 1# xukai871105 的帖子

不错,谢谢。但是好像没有考虑重根问题啊。

scuwax 发表于 2011-12-26 17:12:13
谢谢楼主啦 我现在正在为逆解的事纠结 先看看哈

for90 发表于 2012-6-16 11:56:30
哎,刚开始做两自由度串联机器人分析与设计

weifengdq 发表于 2012-11-29 19:00:23
挺好的 真的挺不错的

denghope 发表于 2014-10-22 14:04:35
很好谢谢了正在做这个

张哈哈qq 发表于 2017-4-21 17:25:31
楼主你好,我也是刚接触机器人的菜鸟,现在也在学用MATLAB计算机器人的运动学正逆解 ,可是完全没有头绪,你有方法吗?好头疼:(
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表