【逆运动学2】damped least squares method阻尼最小二乘法

news/2024/11/14 2:24:52/文章来源:https://www.cnblogs.com/zsw2024/p/18331928

逆运动学

 逆运动学,就是从操作空间的end effector position and orientation,求关节空间的joint position的问题。在之前的文章,我们简单提到求逆运动学解的解析解法和优化解法,详细讲解了用逆瞬时(或说微分)运动学即雅可比矩阵法迭代求解逆运动学的方法。这篇文章我们继续讲雅可比矩阵求逆法存在的问题、用以对付Singularity问题的阻尼最小平方法,并详细地讲讲雅可比矩阵转置法。

雅可比矩阵求逆法复习

 雅可比矩阵求逆法,就是利用下面式子所示的关节速度与end effector速度的关系,迭代求解逆运动学问题的方法。

 我们可以用一个控制框图来表示这个求解过程:

 这个方法把复杂的逆运动学运算(解析法和优化法)转化为求解线性方程的运算,具有很好的通用性;然而这个方法也存在一些问题。

雅可比矩阵求逆法存在的问题

 从原理上讲,使用这个方法最明显的一点要求是——dx不能过大。因为Jacobian是随着关节位置变化不断在变化的,一旦关节位置变化很大,算出来的Jacobian Inverse就不再准确了。这个问题通常我们可以用轨迹线性插值(linear interpolation)或限制dx的大小(clamping)来避免。

 这个方法的第二个难点是雅可比矩阵求逆运算。矩阵求逆是一个非常消耗计算资源的运算(在写程序时能避免就绝对不要求逆!)。当然,我们总是可以使用各种各样的解线性方程的方法来避开求逆运算,比如LU分解、Chelosky分解、QR分解、SVD(Singular Value Decomposition)等等——这个以后也可以考虑用来填几篇干货了……

 这个方法最大的问题还是在于它无法很好地对付机器人Singularity或接近Singularity的情况。从线性方程的角度看,当机器人接近Singularity时,雅可比矩阵也越来越“病态”(ill-conditioned),很小的dx可能求得很大的dq,方程对数值误差也更加敏感;而当机器人处于Singularity时,线性方程可能无解、也可能有无数多个解。

DLS(Damped Least Square,阻尼最小平方法)

 为了避免利用雅可比矩阵求逆法控制机械臂时由于接近Singularity而产生非常大的关节速度,一个自然的想法就是在求解过程中限制关节速度——既要尽可能地满足方程条件、也要尽可能地让关节速度不要太大

 对于前者,我们可以用最小平方法求解方程,这时问题可以这样表述:

 即求一个dq,使Jdq - dx的norm(向量范数,可以理解为衡量向量距离的一种指标)的平方最小;理想情况下等式左右相等,这个norm则为0。

 对于后者,即是希望||dq||尽可能小(但显然通常情况下不能为0),此时我们可以把上面的式子后面再加一个“阻尼”项,变成这样:

 即求一个dq,使Jdq-dx的norm的平方,加上乘以一个系数的dq的norm的平方,它们的和最小。这个时候,λ的大小决定了你更“看重”哪一个条件:如果λ很大,那可能你求得一个很小的关节运动速度,但这个速度却不能准确地让end effector按照你所希望的轨迹走;如果λ很小,小到接近于0,那这个方法跟之前的最基础的Jacobian Inverse算法也没有什么两样了。在实际使用,λ的大小往往需要仔细选择。

 求解上面那个式子的最小值,还是用我们伟大的导数求极值法:

(这么详细的求导过程就算看不懂也要记住啊!极其重要,随处可见)

 于是我们得到一个等效方程:

 能够证明左边的系数矩阵是可逆的,于是我们就有了解:

 能看出显然以下式子也是相等的:

 知道这个有什么用呢?因为左边需要求逆的矩阵大小为n×n,n为关节数量,要多大有多大;右边需要求逆的矩阵大小为m×m,m为操作空间的自由度大小,最大肯定不超过六。这个小小的转换,就限制了需要求逆运算的矩阵大小,提高了总体的运算速度。

雅可比矩阵转置法

 上次我们简单地讲到说,我们可以用雅可比矩阵的转置代替求逆运算来求逆运动学问题:

 今天我们详细地讲下这个看起来很随便的方法是怎么推导出来的。

 首先明确求解逆运动学问题,我们的终极目标是控制机械臂的各个关节,让机械臂的end effector运动到我们想要它到达的位置及朝向。我们把这个“理想位置”计为xd,我们的目标就是要让当前end effector位置xc与xd的“距离”最短。于是我们又有了一个数学问题:

 注意上面式子中我们要求的是q,而不是dq。乘上1/2是为了求导后不要有讨厌的系数2。

 用正运动学的表达式可以把xc用f(q)表示:

(也许你已经发现了这个就是把逆运动学转化为优化问题的优化法)。

 由于正运动学的表达式f(q)通常比较复杂,导数极值法在这里不太好用。所以我们祭出求极值的另一个伟大工具:梯度下降法(Gradient Descent)

 梯度下降法说,每一步我都要沿着下降最快的那个方向走,而这个方向可以由梯度的反方向求得,所以我们有:

 这个推导证明了如果我们用梯度下降大法,每一步都用J的转置乘dx求出dq,那么机械臂迭代几步以后end effector将无限趋近指定的xd。它的迭代框图其实与雅可比矩阵求逆法是一样的,只是J-1换成了JT。

 上面的α也是梯度下降法的一个系数,叫“步长”(step size)或“学习速率”(learning rate)。这个值太小,则迭代速度可能太慢;这个值太大,则可能“走过头”或要多绕一些弯路,最终还是使迭代速度变慢(甚至无法收敛到最小值)。

 采用雅可比矩阵转置而不是求逆的方法,最大的好处当然是避免了求逆运算;不过与求逆相比,它的迭代收敛速率反而慢些。另外,用这个方法控制的机械臂,离end effector较远的关节常常需要输出更大的扭矩。

 关于逆运动学的这两篇文章,可以说讲了机器人学家们与逆运动学问题斗智斗勇的过程;我们简单提到解析法和优化法,讲了雅可比矩阵求逆迭代法、阻尼最小平方法、以及实质上也是优化和迭代方法的雅可比矩阵转置法。然而这只是逆运动学问题求解方法中比较有代表性的一小部分。

摘抄自WX公众号:Robotics

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/773971.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CTFshow web入门vip 文件上传

CTFshow web入门vip 文件上传web151 题目提示前端校验不可靠,看源码可以看到是传到upload.php这个文件去接受文件上传,文件类型为图片,后缀限制为png 然后把前端验证修改一下,把文件后缀限制改成php 写个一句话木马传进去 1.php <?php eval($_POST[x]);?>url中需要…

我出一道面试题,看看你能拿 3k 还是 30k!

我会出一道经典的后端面试题,你只需要进行 4 个简单的选择,就能判断出来你的水平是新手(3k)、初级(10k)、中级(15k)还是高级(30k)!大家好,我是程序员鱼皮。欢迎屏幕前的各位来到今天的模拟面试现场,接下来我会出一道经典的后端面试题,你只需要进行 4 个简单的选择…

运维管理平台化:运维体系为什么要基于平台化建设

本文来自腾讯蓝鲸智云社区用户:CanWay摘要:笔者根据自身的技术和行业理解,分享嘉为蓝鲸数据与智能运维场景实践。 涉及关键字:一体化运维、平台化运维、数智化运维、AIOps、运维PaaS、运维工具系统、蓝鲸等。 本文作者:嘉为蓝鲸运维产品及解决方案负责人 张敏、嘉为蓝鲸平…

flask定制登入过程 显示中文登录信息

默认情况下,当未登录的用户尝试访问一个 login_required 装饰的视图,Flask-Login 会闪现一条消息并且重定向到登录视图。(如果未设置登录视图,它将会以 401 错误退出。) 登录视图的名称可以设置成 LoginManager.login_view。例如:login_manager.login_view = "users.lo…

BUUCTF GWCTF2019 re3

挺有意思的一题,记录一下 主要思路为smc解密 + AES算法 扔进ida后找到主函数:发现函数地址异或,推测为smc,先按d转化为数据,然后直接使用python脚本解密: from ida_bytes import *ea = 0x402219 for i in range(0,224):patch_bytes(ea + i, bytes(ea + i) ^ 0x99)选中按p…

DedeCMS图片水印设置

入口: 系统 > 系统设置 > 图片水印设置扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。承接:企业仿站、网站修改、网站改版、BUG修复、问题处理、二次开发、PSD转HTML、网站被黑、网站漏洞修复…

帝国CMS网站Fatal error: Call to undefined function sys_ShowTextPage…

Fatal error: Call to undefined function sys_ShowTextPage…解答:1、请确认你的程序是从官方下载2、提示这个错误是因为你的包少了内容,重新从官方下载e/class/t_functions.php到本地扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通…

帝国CMS网站刷新所有信息内容页面时提示“Table *.phome_ecms_news_data_ doesnt exist”

刷新所有信息内容页面时提示“Table *.phome_ecms_news_data_ doesnt exist”答:原因是数据本身有问题,信息索引表phome_ecms_表名_index有不存在ID的记录。解决办法:进数据库删除索引表中不存在的ID记录即可解决。扫码添加技术【解决问题】专注中小企业网站建设、网站安全1…

adobe acrobat DC如何彻底解决自动更新的问题

有客户反应已经按照adobe acrobat DC下载安装界面的教程删除了升级文件,但是还是会时不时的跳出更新,只能重新安装,有没有其他的更好的方法呢? 解决方法如下: 一、首先删除/Library/Application Support/Adobe/ARMDC/Application路径下的update文件,具体方法如下: 1.点击…

我用Awesome-Graphs看论文:解读PowerGraph

这次向大家分享发表在OSDI 2012上的一篇经典图计算框架论文PowerGraph,旨在通过点切分解决图数据幂律分布导致的计算倾斜问题,并提出了区别于Pregels VC(以点为中心)的GAS(以边为中心)计算框架。PowerGraph论文:《PowerGraph: Distributed Graph-Parallel Computation o…

时区

我国地跨五个区,但是为了统一国家事务,将北京东八区所在时间作为全国统一时间。注:中央经线是每个时区中间的经度的位置。 目前前后端分离对时区的方案,后端服务器不管接收到哪个时区的前端请求,都统一以本时区为主。然后各个时区的前端程序在读取后端时间时,根据自己所在…

[USACO1.5] 八皇后 Checker Challenge 题解

[USACO1.5] 八皇后 Checker Challenge 题目描述 一个如下的 \(6 \times 6\) 的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。上面的布局可以用序列 \(2\ 4\ 6\ 1\ 3\ 5\) 来描述,第 \(i\) …