问题描述:已知工具坐标系相对于固定坐标系的期望位置和姿态,如何求解满足期望位姿的关节角?

本篇将通过基于雅克比矩阵的牛顿-拉夫森迭代法求运动学逆解。

牛顿 - 拉夫森法(Newton - Raphson)

对于机械臂逆运动学求解方法,如果逆运动学方程无解析解,这时可以采用数值迭代方法求解。即使存在解析解,数值算法也经常用于改善求解精度。

算法详解:

数值求解方程,假设为初值,利用泰勒级数在处展开,并截取第一项,得:

若只保留第一阶,令,求解,得到

在将上式求得的值作为初值,代入上述方程中

上述过程不断迭代,直到的精度满足要求。

同样的,上述求解公式可以扩展到n维:

只需将改成向量即可。

基于雅克比矩阵的牛顿 - 拉夫森迭代法求逆解

根据机器人的MDH参数和连杆坐标系,6DOF机器人的末端位姿可写为:

由于矩阵中的元素是关节变量的函数,则有:

                                                (1)

式中:为连杆长度,为连杆扭角,为连杆偏置,为关节变量,为机器人末端位姿矩阵。

因此,机器人的逆解问题就是根据已知的连杆参数以及给定的末端位姿矩阵,求解关节变量.

使用最原始的方法,取12个元素全部参与计算得到12个方程(由于末端位姿矩阵的自由度为6,所以取3个位置元素和任意三个姿态元素,建立6个方程即可。但是,在某些特殊情况下,通过迭代的得到的解是一样的,而实际结果应该是不一样的。所以,作者采用最原始的建立12个方程进行求解)

根据上述12个方程,求解jacobian矩阵:

由上式得到的jacobian是12×6的矩阵,不能按照方阵的形式对其求逆,所以使用广义逆求其最小二乘解。

因此,得到迭代公式

总结

牛顿 - 拉夫森迭代法求机器人你运动学问题,具体步骤为:

1、估计一个临近的关节变量,通过正运动学计算初始迭代位姿.

2、根据初始迭代位姿计算jacobian矩阵

3、根据初始迭代位姿和jacobian矩阵计算微分运动量

4、根据迭代公式计算目标位姿的逆运动学解

附部分matlab求解代码

%求雅可比矩阵
j = jacobian(F, Theta);
t = [Theta1 Theta2 Theta3 Theta4 Theta5 Theta6];
j_k = subs(j, t, theta_init);
Jacobian = eval(j_k); % %求微分运动量
Tcur = double(robot.fkine(theta_init));
ff1 = Tcur(1,4) - Tend(1,4);
ff2 = Tcur(2,4) - Tend(2,4);
ff3 = Tcur(3,4) - Tend(3,4);
ff4 = Tcur(2,3) - Tend(2,3);
ff5 = Tcur(3,3) - Tend(3,3);
ff6 = Tcur(3,2) - Tend(3,2);
ff7 = Tcur(1,1) - Tend(1,1);
ff8 = Tcur(1,2) - Tend(1,2);
ff9 = Tcur(1,3) - Tend(1,3);
ff10 = Tcur(2,1) - Tend(2,1);
ff11 = Tcur(2,2) - Tend(2,2);
ff12 = Tcur(3,1) - Tend(3,1);
delta_f = [ff1;ff2;ff3;ff4;ff5;ff6;ff7;ff8;ff9;ff10;ff11;ff12];%求微分增加量
d_theta = inv(Jacobian' * Jacobian) * Jacobian' * delta_f;
error = 1e-6;
while norm(d_theta) > errortheta_cur = theta_init - d_theta';%更新雅可比矩阵Theta = [Theta1; Theta2; Theta3; Theta4; Theta5; Theta6];j = jacobian(F, Theta);t = [Theta1 Theta2 Theta3 Theta4 Theta5 Theta6];j_k = subs(j, t, theta_cur);Jacobian = eval(j_k); Theta = theta_cur;Tcur = double(robot.fkine(theta_cur));ff1 = Tcur(1,4) - Tend(1,4);ff2 = Tcur(2,4) - Tend(2,4);ff3 = Tcur(3,4) - Tend(3,4);ff4 = Tcur(2,3) - Tend(2,3);ff5 = Tcur(3,3) - Tend(3,3);ff6 = Tcur(3,2) - Tend(3,2);ff7 = Tcur(1,1) - Tend(1,1);ff8 = Tcur(1,2) - Tend(1,2);ff9 = Tcur(1,3) - Tend(1,3);ff10 = Tcur(2,1) - Tend(2,1);ff11 = Tcur(2,2) - Tend(2,2);ff12 = Tcur(3,1) - Tend(3,1);delta_f = [ff1;ff2;ff3;ff4;ff5;ff6;ff7;ff8;ff9;ff10;ff11;ff12];theta_init = theta_cur;%求微分增加量d_theta = inv(Jacobian' * Jacobian) * Jacobian' * delta_f;norm(d_theta)
end

数值法求六轴机械臂逆运动学解相关推荐

  1. 机械臂——六轴机械臂逆解

    环境:MATLAB 2017B+Robotics Toolbox 9.10.0 前期准备:完成机械臂数学模型的建立+计算机械臂工作空间 https://blog.csdn.net/Kalenee/ar ...

  2. 六轴机械臂算法正解(FK)和逆解(IK)

    在之前的博客中,有一篇<六轴机械臂算法-引导篇>,目前,终于将引导篇中的各个点整理完毕. 因为文档中涉及到比较多的图片以及公式,copy的过程中发现比较麻烦,所以直接将文档截取成了图片上传 ...

  3. (6)六轴机械臂的运动学正、逆解

    下面在前面的ur5机械臂的DH参数基础是对其正逆解进行求解,为了后面能在MATLAB中利用stl文件进行实际显示,这里以标准DH参数为例进行讲解.(修正DH参数在用plot3d函数是显示失败,不知道是 ...

  4. 六轴机械臂运动学算法原理及其推导过程

    网站上关于六轴机械臂piper算法的讲解有很多,但其腕点姿态的推到较为模糊,故此写一篇关于六轴机械臂piper算法的推导讲解,供有缘人参考,如果您觉得有用,可以点个赞,吾将不胜感激,若是推导过程存在错 ...

  5. 【机器人原理与实践(三)】六轴机械臂正逆解控制

    文章目录 3.1 空间转换矩阵的理解 3.1.1平移变换 3.1.2旋转变换 3.2 D-H参数法 3.3 建立机械臂模型 3.3.1 机械臂模型介绍 3.3.2 使用Matlab进行示教仿真 3.4 ...

  6. 如何实现六轴机械臂的逆解计算?

    1. 机械臂运动学介绍 机械臂运动学 机器人运动学就是根据末端执行器与所选参考坐标系之间的几何关系,确定末端执行器的空间位置和姿态与各关节变量之间的数学关系.包括正运动学(Forward Kinema ...

  7. 六轴机械臂DIY(四)机械模型重建及DH法建模

    通过本系列文章的前三篇,一个小型桌面舵机机械臂我们就获得了,但一个控制单关节实现整体运动的机械臂无非就是一个桌面玩具,根本就不能称之为"机器人",因此在接下来的文章中我们会使用机器 ...

  8. 基于模型设计(MBD)工程方法开发六轴机械臂系统实战

    本课程采用基于模型设计(MBD)的工程开发方法,实现对六轴机械臂系统的开发,包括六轴机械臂的知识和控制器的软硬件实现,有助于设计串联.并联的机械臂.康复医疗机器人等其它机电设备的电控系统.目前,这种世 ...

  9. 六轴机械臂机械臂人脸识别和跟踪

    使用一个桌面型的六轴机械臂,在机械臂的末端安装一个摄像头,来进行人脸识别和跟踪的一个功能.该功能分为两个模块,一个是人脸识别模块,另一个是机械臂的运动控制模块. 在前文有介绍到怎么控制机械臂的基本运动 ...

最新文章

  1. opencv中Range类的使用
  2. Word2016如何取消宏已被禁用的提示
  3. python怎么打印列表长度_关于python:生成器输出的长度
  4. 只用来保存JQuery lightbox图片用的
  5. 计算机二级考试3月时间安排,2017年3月份计算机二级考试时间安排
  6. Spark 实时电商数据分析及可视化
  7. SpringMVC表单验证器的使用
  8. [转] 做个自强不息的青年
  9. 操作系统之进程管理:5、处理机调度
  10. 新漏洞可导致攻击者劫持Kindle
  11. background的使用方法
  12. linphone源码下载及下载失败解决方法
  13. Linkerd 2.9发布:全面支持mTLS与ARM!
  14. 从软件角度看央视“赢在中国”节目的那套投票系统
  15. 美团后台篇中的ReentrantLock
  16. 利用拉勾网爬取的数据查看当前的数据分析岗的市场行情
  17. PHP Type Hinting (类型提示)
  18. Qt定制化安装包工具
  19. Redis学习笔记(二) [配置文件,3种新的数据类型,Jedis操作]
  20. Kaggle学习计划之高粱 -100 品种鉴定 - FGVC 9

热门文章

  1. Vue3悬浮返回主页按钮设计与实现
  2. 华为发布海思麒麟950:神兽决斗跑分琅琊榜,麒麟压得过骁龙?---ESM
  3. 高等工程数学--求解非齐次线性微分方程组
  4. DKN: Deep Knowledge-Aware Network for News Recommendation
  5. NKOJ 2703 (WC 2014)紫荆花之恋 (点分治+平衡树+替罪羊)
  6. DIY BMP类 (接续)
  7. 钉钉邮箱登录入口_钉邮的使用攻略①
  8. 基于Git子模块的微前端项目管理和公用组件库方案
  9. latex_箭头上加斜杠
  10. 使用计算机翻译软件,memoQ(计算机翻译工具)