此篇博客转自本作者在古月居的博客:几种冗余机械臂逆向运动学方法(带公式推导) - 古月居

前言:

之前展哥(导师)喊我在入学前做一个具有冗余腿的四足机器人用于部署XXX算法,验证XXX的ideal。最终由于有其他事情,没有投入太多的精力,以失败告终。但是过程中腿部末端需要求逆向运动学运用轨迹跟踪,然而由于腿部设计为冗余的,单单使用带阻尼的伪逆方法可以在一开始跟随轨迹,但是在一段时间后,部分关节开始趋向于极限,轨迹跟踪最后得不到保证。设计的关节运动范围是完全满足这段轨迹规划的,但是在运动过程中,不好的规划导致系统取向于极端状态,最终导致末端运动空间受限的问题。下图是我在寒假中,在Coppeliasim平台做的冗余腿(5自由度)四足机器人模型。

本文主要总结下现在常用的及其简单的求解逆向运动学的方法。最后,给出我之前遇到问题的解决方法(说实话这方法也比较基础)。

文中将涉及的理论推导将用我手写的笔记图片来展示(因为我懒,懒得打Math Latex了)。文中所阐述冗余机械臂逆向运动学问题可以简化为一个简单的案例,具体示意图如下:

这是一个二维空间中末端点到期望点的执行任务,中间可能预先设定好了一段运动轨迹,现在需要求解关节角度使末端可以沿设定轨迹运行(逆向运动学问题)。

最简单的就是雅可比转置方法。可以很直觉的设定最小二次型目标代价函数为

然后代价函数对theta求导为0,可以得到以下的推导

仔细观察最后的式子,可以发现这非常像末端力空间通过转置的雅可比映射到扭矩空间。这里的末端力 在此变成了末端位置差,

前面多乘了一个很小的α缩小迭代步长。如此看来该方法的式子具有直观的物理意义。但是该方法并不能确定约束关节位置,这依旧不能解决之前所提到的问题。

还有就是伪逆方法。伪逆方法还有他添加阻尼的形式,具体这个链接(干货,逆运动学)。

不同于雅可比转置方法,这里的代价函数是期望关节最小的速度运行。换句话说,每一次朝期望目标移动的时候,综合全部关节要求变化最小

(要求在角度空间中的最短路径),这似乎非常容易理解。后面的关节速度都转化为微小位移来表示。具体的代价函数可以表示为

通过拉格朗日乘子法求解,可以得到以下式子

求偏导为0,可以得到以下式子

经过一些比较基础的带入,得到以下式子

通过以上的基本操作后,可以的到熟悉的式子,其中Δx前面的部分就是雅可比的伪逆形式。除此之外,可能还要求对某些关节的变化更小,

因此还可以有加权形式的表达,可以在代价函数中Δθ前再乘一项正定的斜对称矩阵Q(这里是一个3X3的矩阵),这里不在做详细的推导。

一般使用该方法,右式前还需要添加一个系数α,作为迭代的步长(这如同上述的转置方法一样)。

最后,介绍可以让关节朝着某个期望状态的变化,又同时满足逆解的方法其实就是在最小关节角度路径的同时,

又满足最小化与期望关节状态之间的差异。可以得到同伪逆方法相似的二次型代价函数如下

其中多了一项S,表述为最小化与期望关节状态的差异,而代价函数需要加入这个最小化的目标。

同样使用拉格朗日乘子法,可以得到清晰的式子如下

接下来,经过比较常规操作,求偏导可以得到以下式子

同样的,经过一番简单的操作后可以得到以下式子

可以发现,最后的结果(框选出来的)相比之前最简单的伪逆方法额外的多了一项,简单来说,就是最后这一项起到了在关节空间中协调的作用,使满足末端位置运动的同时协调关节之间关系可以最小化与期望角度的差异。然后,我们可以很轻松的发现,结果的右式第二项的S前面是雅可比对应的零空间(null-space)投影矩阵。

零空间矩阵的基本特点如下

使用零空间方法可以对冗余机械臂进行额外的关节空间规划以满足某些约束条件,但是又不影响任务空间执行结果。

上述的零空间投影矩阵是一种较为简单的定义方法,并不是固定的。

当然,有时候我们希望不同关节的运行幅度不一样,这可能取决于任务和机械臂关节物理结构和属性。

这个时候我们同样可以采用加权矩阵来做为惩罚项。具体可以表现为如下图

其中Q可以是一个半正定的对角矩阵(这里是一个3X3的矩阵)。

另外,一般使用该方法,右式第一项前还需要添加一个系数α,作为迭代的步长(这如同上述的两种方法一样)。

以上是个人在做四足机器人期间的一些总结,如有误,还望指出。

几种冗余机械臂逆向运动学方法(带公式推导)相关推荐

  1. 【机械臂优化】基于粒子群算法实现考虑关节限位约束下的冗余机械臂求逆解附Matlab代码)

    1 简介 2 部分代码 %%%%%%%%%%%%%%%%%%采用PSO算法对运动学冗余机械臂求一组最优逆解%%%%%%%%%%%%%%%%%%% %该程序对一个具有四自由度的机械臂做位置控制,由操作空 ...

  2. 六自由度机器人(机械臂)运动学建模及运动规划系列(二)——运动学分析

    本篇主要介绍六轴机械臂的运动学分析. 运动学分析是工业机器人研究和应用的重要内容,是运动控制的基础,主要研究机器人末端坐标系与基坐标系的转换关系,分为正运动学和逆运动学分析两部分. 另外,对于刚刚学习 ...

  3. 机械臂的运动学分析-工业机器人

    机械臂的运动学是研究机械臂各连杆坐标系之间的运动关系,是对机械臂进行运动控制的基础.通过D-H 表示法建立机械臂的运动学数学模型,求得机械臂末端的运动学方程,利用指数积进行实验验证,使用 Matlab ...

  4. PUAM560机械臂逆运动学实例-梳理

    经过努力,对课本中PUAM560机械臂的运动学逆解算的实例进行了梳理,啥事都得动手试试才能学的深刻,整理一下我的理解和思路.由于首次接触逆解对于许多概念理解很不到位,不过随着学习的深入我相信我会越来越 ...

  5. 中正平和的机器人学笔记——1. 机械臂正运动学(附MATLAB代码)

    中正平和的机器人学笔记--1.正运动学 0. 何为运动学?何为正运动学? 运动学主要研究的就是机械臂的运动特性(位置.速度.加速度等),但是不考虑使机械臂产生运动时施加的力和力矩(这部分是动力学).而 ...

  6. 数值法求六轴机械臂逆运动学解

    问题描述:已知工具坐标系相对于固定坐标系的期望位置和姿态,如何求解满足期望位姿的关节角? 本篇将通过基于雅克比矩阵的牛顿-拉夫森迭代法求运动学逆解. 牛顿 - 拉夫森法(Newton - Raphso ...

  7. MATLAB 中的机械臂算法——运动学

    MATLAB 中的机械臂算法--运动学 机械臂算法 MATLAB 在 2016 年就推出了 Robotics System Toolbox(RST),其中有很多关于机械臂方面的算法.而且随着客户需求的 ...

  8. 【机器人1】基于POE公式的UR5机械臂正运动学建模求解与matlab仿真

    基于PoE公式的UR5机械臂正运动学建模求解与matlab仿真 基于PoE公式的UR5机械臂正运动学分析 1.1 运动旋量的螺旋释义(理论基础) 1.2 基于PoE公式的UR5机械臂正运动学模型 1. ...

  9. python 机械臂控制_机械臂正运动学-DH参数-Python快速实现

    机械臂正运动学-DH参数-Python快速实现 前言: 最近在玩一个非常弱智的机械臂,好多功能都没有,连个配套的仿真环境都没, 虚拟边界和碰撞检测的功能都非常难用. 没办法,我只能自己实现一个简陋的虚 ...

最新文章

  1. java三态_Java中对象的三种状态
  2. sql同时操作两列_怎么在两列同时筛选数据库
  3. Office CVE-2017-11882复现
  4. mysql错误Table ‘./mysql/proc’ is marked as crashed and should be repaired
  5. Java编程思想 经典评注分享
  6. 使用MonkeyTest对Android客户端进展压力测试
  7. hibernate教程笔记10
  8. yagmail和keyring的安装与注册
  9. WIN7系统下如何把IE8升级成IE9
  10. 算法设计与分析基础第二章部分课后题答案
  11. 《算法导论》(第3版)第4章练习答案
  12. C/C++手机通信录
  13. linux红帽子怎么配置dhcp,红帽7 配置dhcp服务器
  14. ID卡线圈和IC卡线圈的区别
  15. Django 可重用注册登录系统
  16. 没固定公网 IP 的公司内网实现动态域名解析( 阿里云万网解析 )
  17. Android 面试题合集 - 收藏集 - 掘金
  18. 扩展了 jquery 的插件 easy drag (转载 木野狐)
  19. 7PTA7-6 结伴同行去秋游
  20. dev stg prd 开发 测试 生产环境

热门文章

  1. ECS.Day3笔记
  2. 调查上网行为管理软件或设备
  3. attention加权机制
  4. [CF765F] Souvenirs
  5. 爱迪尔门锁系统怎么连接服务器,爱迪尔门锁设置方法是什么?
  6. 计算机学霸电视剧,好看的青春校园电视剧 十部好看的校园剧推荐
  7. 20了解网络设备管理工具 Ansible Network 的基本用法,包括配置管理、状态采集的教程
  8. 金蝶系统服务器名称填什么,金蝶软件的服务器ip地址是什么意思
  9. linux修复模式rpm,修复rpm命令(不小心删了rpm命令)方法
  10. 动态壁纸安卓_安卓壁纸专为安卓打造,拥有海量高清壁纸,还有精美动态壁纸!...