【机器人学】使用代数法求解3自由度拟人机械臂的逆运动学解

2023-10-27

        这篇博客会讨论一下使用解析法求解3自由度拟人机械臂的逆解及分析。

一、机械臂的逆解

        机械臂的逆运动学问题就是由给定的末端执行器位置和方向,确定机械臂各个关节变量的值。机械臂的求解方法可以分为两大类:数值解和解析解(封闭解),解析解又可分为代数解和几何解。
        数值解和解析解有各自的特点,商用的机械臂一般都会采用解析解,因为求解速度快且准确,而不会采用本质迭代的数值解法。

二、拟人机械臂+球形手腕

        如果大家注意到的话,可以发现,市面上的6轴机械臂的构型都是相似的,大都是拟人臂+球形手腕的构型,因为这样的构型可以把球形腕的求逆解耦出来。


这里写图片描述


这里写图片描述


这里写图片描述

三、3自由度拟人机械臂的求解

        这篇博客的内容都出自于《机器人学:建模,规划和控制》这本教材,有兴趣的同学可以找到这本书看一下。本文只讨论一下3自由度拟人机械臂的逆运动学,以后有时间会总结一下6轴工业机械臂的求逆解问题。
        很多机器人学教材上关于机械臂的逆解都是罗列一堆公式,对其中的推导过程并没有讲述很清楚,再加上中文版本的机器人学教材错误百出,很多同学看得一头雾水,对求解推导过程中使用的数学原理没有深入体会,导致对机械臂的求逆解问题一直处于一种似懂非懂的状态。最重要的是,我认为只有使用代码实现对机械臂求逆解,才算是初步达到了学习机器人学的目的。
        3轴机械臂的构型和DH参数如下图所示,使用DH方法进行运动学建模,建立的坐标系如下图所示。


这里写图片描述


这里写图片描述

        建立直角坐标系后,机械臂末端的位置,也就是坐标系3原点的位置可表示为:
px=c1(a2c2+a3c23)py=s1(a2c2+a3c23)pz=a2s2+a3s23

        已知 px py pz 3个已知量,求解3个未知量关节角度 ϑ1 ϑ2 ϑ3 从代数的角度来看,由于限定关节角度的范围为 [π,π] ,故会有多解,从几何角度来看,就是如下图所示的多解情形。

这里写图片描述

      求解的过程是从关节3 关节2 关节1。 首先求解关节3的解:
      由 (1)2+(2)2+(3)2 可得
c3=px2+py2+pz2a22a322a2a3

      那么 s3=±1c32
      故 ϑ3,I=atan2s3c3 ,使用 atan2() 函数是为了得到范围在 [π,π] 的关节角度。根据 s3 的符号和 atan2() 的性质,可知关节3的第二个解是 ϑ3,II=atan2s3c3=atan2(s3,c3)=ϑ3,I 到此,关节3的两个解就得出来了。
       接下来求关节2的解:
      由 (1)2+(2)2 可以消掉 s1 c1 ,再结合 (3) ,这两个方程含 c2 s2 两个未知数,可求得
c2=±px2+py2(a2+a3c3)+pza3s3a22+a32+2a2a3c3

s2=±px2+py2a3s3+pz(a2+a3c3)a22+a32+2a2a3c3

      由 ϑ2=atan2s2c2 可求得关节2的值,但是由于 s3 的符号和 px2+py2 前的符号会造成多解,当 s3+=1c32 时:
ϑ2,I=atan2(pz(a2+a3c3)a3s3+px2+py2,(a2+a3c3)px2+py2+pza3s3+)

ϑ2,II=atan2(pz(a2+a3c3)+a3s3+px2+py2,(a2+a3c3)px2+py2+pza3s3+)

      当 s3=1c32 时,
ϑ2,III=atan2(pz(a2+a3c3)a3s3px2+py2,(a2+a3c3)px2+py2+pza3s3+)

ϑ2,IV=atan2(pz(a2+a3c3)+a3s3px2+py2,(a2+a3c3)px2+py2+pza3s3)

       在列出关节2的解的时候要注意,因为从直观上看 c2 s2 的组合一共有8种(4个 c2 ,2个 s2 ),由于需要满足三角平方公式,所以只有4种是合法的。
      最后求解关节1的值,和教材上的求解方法不同,我更愿意在几何上直观快速地求解出其值,根据机械臂末端在X-Y平面上投影可知其中一个解是:
ϑ1,I=atan2(py,px)

      而另外一个解是位于相对于原点对称的那个象限里,可以用

ϑ1,II=atan2(py,px)

      最后我们需要获得机械臂的解,首先说结论,这四个解是:
(ϑ1,Iϑ2,Iϑ3,I)(ϑ1,Iϑ2,IIIϑ3,II)(ϑ1,IIϑ2,IIϑ3,I)(ϑ1,IIϑ2,IVϑ3,II)

      前面根据关节3的解后可以确定关节2的解,再结合 px py (a2c2+a3c23) 的符号确定关节1的值,即可得到上述4组解,如下图所示。


这里写图片描述

参考文献:
布鲁诺・西西里安诺.《机器人学:建模,规划和控制》 西安交通大学出版社 2015

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【机器人学】使用代数法求解3自由度拟人机械臂的逆运动学解 的相关文章

  • 【Antlr】识别常见的词法结构

    1 概述 语法分析器通过输入的词法符号流来识别特定的语言结构 词法分析器通过输入的字符流来识别特定的语言结构 词法规则以大写字母开头 文法规则以小写字母开头 例如 ID是一个词法规则名 而expr是一 个文法规则名 2 配置标识符 在语法的
  • 数据结构—顺序表的初始化与销毁(C语言详细解读版1/3)

    顺序表 顺序表 SqList Sequence List 即顺序线性表 顺序表是在计算机内存中以数组的形式保存的线性表 是指用一组地址连续的存储单元依次存储数据元素的线性结构 使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中
  • 自动售卖系统开发系列——人脸识别自动售卖机三代BrotherSharp

    大纲 售卖机三代BrotherSharp的简介 售卖机三代BrotherSharp的方案介绍 系统整体组成 软件平台 硬件平台 售卖机三代BrotherSharp的实现过程 功能实现论述 软件流程图 源码 售卖机三代BrotherSharp
  • ArcGIS Desktop 遇到严重的应用程序错误

    由于项目初验 忙了几个月 感觉忙得并不值 好久都没更新博客了 一 问题 在关闭ArcMap时 ArcGIS Desktop 遇到严重的应用程序错误 环境是Windows 10 新装的系统 以前出现这种问题 一般有两种情况 一是ArcGIS
  • Pycharm调试debug指导

    PyCharm的调试有两种显示模式 Debugger和Console Debugger处以列表形式 列出每个元素的内容 Console处与直接Run输出类似 Debugger模式 Step Over Step Into 区别 调试方式 快捷
  • FutureTask详解

    前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住分享一下给大家 点击跳转到网站 FutureTask介绍 一个可取消的异步计算 FutureTask提供了对Future的基本实现 可以调用方法去开始和取消一个计算 可以查询
  • Line-in和Mic-in的区别和使用及Line-out

    Line in和Mic in的区别 http blog 163 com why ann 2001 blog static 331376200821391621467 我们的电脑声卡上 一般都会有Line in和Mic in两个接口 翻译成中
  • 【SAML2.0】概念盲扫

    目录 一 SAML是什么 二 SAML 1 SAML的构成 2 SAML的流程分析 3 SAML的优点 简介 安全断言标记语言 英语 Security
  • final的分析

    源自 http www cnblogs com dolphin0520 p 3736238 html 1 修饰类 当用final修饰一个类时 表明这个类不能被继承 2 修饰方法 使用final方法的原因有两个 第一个原因是把方法锁定 以防任
  • 寻找第k大元素,时间复杂度是多少?

    寻找第k大元素可以通过多种算法实现 其中时间复杂度最优的是基于快速排序的算法 称为快速选择 QuickSelect 算法 快速选择算法的基本思想是选择一个基准元素 然后将数组划分为比基准元素小和比基准元素大的两个子数组 如果第k大元素在比基
  • 关于图像的傅里叶变换的理解

    最近再学opencv关于图像的傅里叶变换的知识 自己感觉很难理解 查阅相关书籍和博客发现很多写的都比较含糊 下面是转载自知乎一个博主关于图像的傅里叶变换的通俗解释 通俗讲解 图像傅里叶变换 文末加了一点冈萨雷斯 数字图像处理 中的关于频谱中
  • Arduino for ESP8266&ESP32适用库ESPAsyncWebServer:请求与响应

    文章目录 目的 解析客户端请求 服务器进行响应 URL重定向 总结 目的 WebServer功能很多 最主要的一块就是解析来自用户的HTTP请求 然后根据功能需求将响应的消息发送给客户 这篇文章将粗略介绍ESPAsyncWebServer中
  • 组成原理---控制器

    文章目录 控制器的组成及指令的执行 基本的计算机组成和功能 控制器的组成 时序及控制方式 数据通路和指令的执行过程 简单计算机系统主机各部件的实现方案 简单计算机系统中指令的执行过程 MIPS单周期CPU的数据通路和指令的执行过程 硬布线控
  • 机器学习实战——6.支持向量机

    目录 6 1 基于最大间隔分隔数据 6 2 寻找最大间隔 6 2 1 分类器求解的优化问题 6 2 2 SVM应用的一般框架 6 3 SMO高效优化算法 6 3 1 Platt的SMO算法 6 3 2 应用简化版SMO算法处理小规模数据集
  • springboot 全局异常处理类

    目录标题 springboot 全局异常处理类 依赖 代码 springboot 全局异常处理类 依赖
  • 在CocosCreator的3.x版本中实现贝塞尔曲线

    使用环境参考 CocosCreator v3 7 3 前情提要 在之前的 2 x 版本中 CocosCreator 关于贝塞尔曲线是内置了 API 可以让节点动画直接使用 但在升级到 tween 实现后 灵活了但没有了现成的贝塞尔曲线的实现
  • 2020年高教社杯全国大学生数学建模竞赛---校园供水系统智能管理(Python代码实现)

    目录 1 概述 2 问题 3 运行结果 4 Python代码 1 概述 校园供水系统是校园公用设施的重要组成部分 学校为了保障校园供水系统的正常运行需要投入大量的人力 物力和财力 随着科学技术的发展 校园内已经普遍使用了智能水表 从而可以获

随机推荐

  • 用geoda软件进行空间自相关分析示例

    毕业论文需要用到空间自相关 所以摸索摸索了好久 终于弄出了大概的流程了 情景1 如果你没有shp格式的文件数据 那么我建议你下载geoda095i这个版本 因为最新版本的我不太会操作 明确问题 假如我们要对广东省各市2005人均GDP进行空
  • 算法设计与分析 期末考试试卷

    1 渐进表示法中f n O g n 意味着f n 的数量级 不大于 g n 的数量级 填 小于 大于 不小于 或 不大于 平时各种教材中见到的O n2 表达的意思是算法的复杂度 等于 n2数量级 填 小于 等于 或 大于 2 算法的正确性通
  • 【C语言】超详细的移位、位操作符详解(含力扣实战)

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 目录 1 整数的二进制表示 2 移位操作符 2 1左移操作符 低
  • 第086讲: Pygame:碰撞检测

    今天我们来学习碰撞检测 大部分游戏都是需要做碰撞检测的 因为你需要知道小球是否发生了碰撞 子弹是否击中了目标 主角是否踩到了狗屎 那应该如何实现呢 说白了 它这个原理很简单 就是检测两个精灵之间是否存在重叠的部分 像我们上节课的小球 在图1
  • innodb_flush_method理解(图解)

    innodb flush method这个参数控制着innodb数据文件及redo log的打开 刷写模式 对于这个参数 文档上是这样描述的 有三个值 fdatasync 默认 O DSYNC O DIRECT 默认是fdatasync 调
  • wsl2 出现 Vmmem内存占用过大问题解决

    分步解决方法 定期执行缓存删除 在WSL bash上 执行 sudo crontab e u root 并添加以下行 15 sync echo 3 gt proc sys vm drop caches touch root drop cac
  • AD常用DRC规则简单介绍

    前言 最近在复习AD中画PCB板时的DRC规则 在这里做一个常用规则的简单总结 虽然有时候可以无脑将除电气规则以外的其他规则全部取消勾选 但是这样并不好 正文 Electrical Clearance Constraint 走线的线路间隔
  • Cannot construct instance of `com.baomidou.mybatisplus.core.metadata.IPage

    Feign调用无法解析 IPage包裹的数据 目前解决方案有两种 一种是转Page 另一种是序列化 一 转Page传递 api接口 PostMapping value queryEnterprise public Result
  • Mysql基础(入门)

    一 数据库介绍 1 什么是数据库 数据库就是 个存放计算机数据的仓库 这个仓库是按照 定的数据结构 数据结构是指数据的组织形式或数据之间的联系 来对数据进 组织和存储的 可以通过数据库提供的多种 法来管理其中的数据 2 数据库的种类 最常
  • cuda的Shuffle技术以及自定义双精度版本

    还是数组求和问题引起的 发现之前那个版本http blog csdn net lingerlanlan article details 24630511 对于数组的维度是有要求的 因为归约每次变为一半 所以对于线程块的数量和每个线程块线程的
  • Git:Git的一些基本操作

    文章目录 基本认识 使用方法 创建本地仓库 配置本地仓库 工作区 暂存区 版本库的概念 添加文件 版本回退 撤销修改 删除操作 基本认识 首先要对Git有一个基本的认知 Git本质上是一个版本控制器 可以对一个信息的多个版本进行一些控制 而
  • 《canvas》之第19章 canvas游戏开发

    canvas 之第19章 canvas游戏开发 第19章 canvas游戏开发 19 1 canvas游戏开发简介 19 2 Box2D简介 19 2 1 Box2D 19 2 2 Box2DWeb 19 3 html5游戏引擎 第19章
  • Java:SimpleDateFormat解析过程中的时区问题

    在做分布式系统开发的过程中 笔者遇到了集群中各成员显示时间数据不一致的问题 排查发现是因各个成员的系统时区设置不同 导致SimpleDateFormat类解析结果不同导致 mark一下 Java中的SimpleDateFormat类具有将D
  • floyd算法 O(n^3)

    标准弗洛伊德算法 三重循环 循环结束之后 d i j 存储的就是点 i 到点 j 的最短距离 需要注意循环顺序不能变 第一层枚举中间点 第二层和第三层枚举起点和终点 特点 1 复杂度为O n 3 只能处理200以内的点 2 一次求出所有结点
  • Kali 2020.1版本 安装VMware Tools

    Kali 2020 1版本 安装VMware Tools 文章目录 Kali 2020 1版本 安装VMware Tools 1 虚拟机 gt 安装VMware Tools 2 终端输入命令df h确定是否已经挂载 3 进入挂载的目录下 将
  • 数字预失真技术的基本原理及其MATLAB实现

    数字预失真技术的基本原理及其MATLAB实现 数字预失真技术是一种用于提高无线通信系统性能的技术 其基本原理是在系统发送信号之前先对信号进行一定的失真 以抵消后续传输过程中的非线性影响 而MATLAB作为一款强大的数学计算软件 可以帮助我们
  • C语言里的延时函数

    C语言延时 悬赏分 0 解决时间 2007 2 18 14 48s级的时间延时杂写啊 大侠们帮哈忙啊 最佳答案 在Windows下最简单的办法是调用系统函数Sleep time 单位是ms 在windows h中声明 注意大小写 不然就用
  • anaconda安装和使用

    安装 1 1 下载安装脚本 wget https mirrors tuna tsinghua edu cn anaconda archive Anaconda3 2020 07 Linux x86 64 sh 1 2 运行安装向导 bash
  • vue引入全局自定义组件

    1 告知 本案例使用的vue3 x 2 在src下 新建如下文件夹及文件 名称可随意 3 wb loading vue内容如下
  • 【机器人学】使用代数法求解3自由度拟人机械臂的逆运动学解

    这篇博客会讨论一下使用解析法求解3自由度拟人机械臂的逆解及分析 一 机械臂的逆解 机械臂的逆运动学问题就是由给定的末端执行器位置和方向 确定机械臂各个关节变量的值 机械臂的求解方法可以分为两大类 数值解和解析解 封闭解 解析解又可分为代数解