二维逆运动学多于两根骨胳

当我们处理多于两根骨胳的IK问题,之前方法是有不足的。我们可以梯度下降(Gradient Decent)

某一个模型来说,我们定义一个CostFunction函数来计算EffectorPosition的位置。并将它减去targetPosition,并把距离回传。这就是一个计算梯度下降用的Error Function. 解决逆运动学意味着我们要最小化CostFunction返回的值。最小化函数是编程和数学中经常做的问题。我们将使用梯度下降的技术。这方法不是最有效,但是梯度下降的优点是不依赖模型本身,只需知道怎计算正向运动模型。

梯度下降(Gradient Decent)

理解梯度下降原理的最简单方法是把他想为山坡。我们开始在一个随机的位置,我们想走到最低点。在每一步,梯度下降告诉你向降低高度的方向移动。如果地形的几何结构相对简单,这种方法会向谷底收敛。

在这个示例中我们有一个函数,它接受单个参数(X轴),并返回一个ErrorFunction(Y轴)。从X轴上的随机点开始,梯度下降应该迫使我们朝着最小值的方向移动。

从整体上看前进的方向是解决了。不幸的是,梯度下降事先不知道最小值在哪里。该算法所能做的最好的猜测是沿着斜率的方向移动,也称为函数的梯度。如果你在一座山上,让一个球去,并跟随它到达山谷。下图显示了误差函数在两个不同点的梯度

从整体上看前进的方向是解决了。梯度下降事先不知道最小值在哪里。该算法所能做的最好的猜测是沿着斜率的方向移动,也称为函数的梯度。如果你在一座山上,让一个球去,并跟随它到达山谷。下图显示了误差函数在两个不同点的梯度

梯度估计

如果你以前学过微积分,你可能知道函数的梯度与其导数有着密切的联系。然而,计算导数需要函数满足某些数学性质,而这些性质通常不能保证用于任意问题。此外,导数的解析推导需要解析地给出误差函数。同样,您并不总是能够访问您试图最小化的功能的分析版本。

在所有这些情况下,都不可能得到函数的真导数。解决办法是粗略估计它的价值。下图显示了如何在一维中实现这一点。通过对附近的点进行采样,可以得到函数局部梯度的感觉。如果左边的错误函数较小,则转到左边。同样,如果右边的小一些,你就往右边走。

此采样距离(Sample Distance)在称为 deltaX 了解梯度下降是如何工作的,数学上是怎的呢?第一步是计算误差函cost function,f

在特定点p 的梯度,我们需要的是找到函数增长的方向。函数的梯度与其导数密切相关。

f的导数叫做 f'它在p点的值是f’(p),它指示函数的增长速度。常数 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传. 通常被称为学习速率,它决定了我们逆着梯度移动的速度。值越大,解决方案的速度越快,但也越有可能實際值。

拓展

以上我们找到的一个维度解决方案。我们给出了f函数的导数的定义,结果是一个单一的数字,表示函数是增加还是减少。我们用这个数字作为梯度。单个参数的函数对应于具有单个关节的手臂。如果我们想对更复杂的手臂进行梯度下降,我们需要定义多变量函数的梯度。如果我们的手臂有三个关节,我们的函数更像f在 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F9qkteUo-1617528729577)(https://www.zhihu.com/equation?tex=%5Calpha_0%2C%5Calpha_1%2C%5Calpha_2)]

我们可以用偏导数,分别是一次计算一个变量。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VHWglteh-1617528729579)(https://www.zhihu.com/equation?tex=%5Calpha_0%2C%5Calpha_1%2C%5Calpha_2)]

其中, i=0-2,

在此,我也感謝我的大學的老師及國外朋友**Alan的指導**

逆运动学(二): 二维逆运动学,多于两根骨胳相关推荐

  1. 辽宁计算机考研学校二本,二本院校逆袭985到底有多难?

    [摘要]二本院校逆袭985到底有多难?如何能够从一个普通二本院校突围到985院校?要想突围成功应该具备什么样的条件?或者说,该如何脱颖而出?下面考研过来人分享了自己的经验以及观点,希望各位有类似疑惑的 ...

  2. 二自由度车辆的运动学模型和动力学模型

    二自由度车辆的运动学模型和动力学模型 最近刚接触自动驾驶相关的知识,得知像LQR.MPC这类基于模型的控制器,若想有不错的控制器性能,那么必须有比较精确的被控对象的数学模型.对于车辆这类被控对象的模型 ...

  3. 刚体姿态运动学(二)旋转的微分形式——角速度、欧拉角速度、四元数导数、旋转矩阵导数

    刚体姿态运动学(二)姿态的微分形式--角速度.欧拉角导数.四元数导数.旋转矩阵导数 上一篇我们讲了姿态的表达方式及其转换,可以说还是比较简单的.接下来面临的问题是,我们不仅想知道刚体的姿态,还想知道姿 ...

  4. vue编写一个登录页面,使用Tab栏实现“账号登录”和“二维码登录”这两种方式的切换

    编写一个登录页面,使用Tab栏实现"账号登录"和"二维码登录"这两种方式的切换,并通过transition组件结合animate.css实现切换时的动画效果 1 ...

  5. java百度地图逆地址解析_百度地图逆地址解析

    什么是Geocoding? Geocoding API 是一类简单的HTTP接口,用于提供从地址到经纬度坐标或者从经纬度坐标到地址的转换服务,用户可以使用C# .C++.Java等开发语言发送HTTP ...

  6. matlab基本杆组-运动学仿真,MATLAB基本杆组-运动学仿真.pdf

    MATLAB基本杆组-运动学仿真 第5章 运动学仿真 --Simulink的使用 从基本杆组理论为基础建立模型 §5-1 曲柄的MATLAB运动学仿真模块 1.曲柄的运动学矩阵表达式 在复数坐标系中, ...

  7. 协变逆变java_Java中的逆变与协变

    什么是逆变与协变 协变(Covariance) 如果B是A的子类,并且F(B)也是F(A)的子类,那么F即为协变 逆变(Contravariance) 如果B是A的子类,并且F(B)成了F(A)的父类 ...

  8. 山海演武传·黄道·第一卷 雏龙惊蛰 第二十二 ~ 二十四章 真龙之剑·星墟列将...

    山海演武传·黄道·第一卷 雏龙惊蛰 第二十二 ~ 二十四章 真龙之剑·星墟列将 "我是第一次--请你,请你温柔一点--"少女一边娇喘着,一边将稚嫩的红唇紧贴在男子耳边,樱桃小嘴盈溢 ...

  9. 信息学奥赛一本通 1311:【例2.5】求逆序对 | 1237:求排列的逆序数 | OpenJudge NOI 2.4 7622:求排列的逆序数 | 洛谷 P1908 逆序对

    [题目链接] ybt 1311:[例2.5]求逆序对 ybt 1237:求排列的逆序数 OpenJudge NOI 2.4 7622:求排列的逆序数 洛谷 P1908 逆序对 ybt 1311,123 ...

最新文章

  1. 在Ubuntu14.04安装F.lux
  2. php数独游戏开发,使用vue如何开发数独游戏
  3. 我的服务器有硬件防火墙,而且只开了80端口,是不会有网络安全问题的
  4. python安装教程mac-Mac 安装python 3.*新版本的详细步骤
  5. 编程笔试(解析及代码实现):字符串反转(字符串逆序输出)代码实现十多种方法对比(解析思路及其耗费时间)详细攻略
  6. 没有连接上aspnetdb.mdf数据库
  7. [网络安全提高篇] 一〇二.Metasploit技术之基础用法万字详解及防御机理
  8. Butter fly
  9. 优先级队列 c语言,使用最小堆使用优先级队列(c语言版本)
  10. hinkphp项目部署到Linux服务器上报错“模板不存在”如何解决
  11. OWASP TOP 10 1
  12. oracle 052 题库更新,OCP题库升级,新版052考试题及答案整理-18
  13. python树结构实现小顶堆_数据结构和算法入门之小顶堆和大顶堆Python实现
  14. 在vs2010中mfc,C++的一些小经验
  15. 半小时在白板上写代码实现一致性哈希Hash算法
  16. 随机信号分析学习笔记(1)
  17. php中switch使用
  18. 【已解决】ubuntu无法进入启动页面,全屏出现【ok】并且不停闪烁
  19. 基于SpringBoot监控Java项目,暴漏springboot内置端点
  20. 两分钟教你学会视频添加滚动字幕并调整色调

热门文章

  1. mac解决python 连接 ws关于ssl证书问题
  2. 社交媒体 的营销策略_如何制定可行的社交媒体策略
  3. 看门狗watch_dog.sh的部署
  4. python编程初学者的良言警句_编程初学者的良言警句-ASP教程,ASP应用
  5. shodan 简单使用教程
  6. 5、MySql中exists 和in的效率比较
  7. 挡板小球c语言,小球显示挡板.c
  8. JAVA的palette_Material Design之Palette的使用
  9. 四川海夕漫科技:精准的关键词怎么选择
  10. 语音识别 CTC Loss