机器人学之运动学笔记【7】—— 机械手臂轨迹规划实例

2023-10-07 14:40

本文主要是介绍机器人学之运动学笔记【7】—— 机械手臂轨迹规划实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

机器人学之运动学笔记【7】—— 机械手臂轨迹规划实例

  • 1.任务描述
  • 2. 参数设定
  • 3. 方法一:以linear function with parabolic blends 在 Cartesian space 下规划轨迹
    • 3.1 步骤一
    • 3.2 步骤二
    • 3.3 步骤三
    • 3.4 步骤四
    • 3.5 步骤五
  • 4. 方法二:以linear function with parabolic blends 在 Joint space 下规划轨迹
    • 4.1 步骤一
    • 4.2 步骤二
    • 4.3 步骤三
    • 4.4 步骤四
  • 5. 小结

用一个例题把整门课程的重点知识做一个汇整应用

1.任务描述

机械手臂夹住放在桌子上的杯子,移动手臂将杯子挂到墙上的杯架,规划手臂【将杯子从桌面拿起放上杯架】间的整段轨迹
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
initial point 对应 fc0;final point 对应 fcf;
如果直接以起点和终点做轨迹规划的话,可能会发生一些现问题:我们无法确保在开始时,杯子不会受到向下的挤压。所以增设两个via point ,一个 fc1 设置在杯子重心上方,确保轨迹路径是向上的;一个 fc2 设置在杯架前方,确保杯子是先移动到杯架前方然后再水平移动到杯架上面。

在这里插入图片描述

2. 参数设定

在这里插入图片描述
在这里插入图片描述
注意:这里 PPT所示有误,不是以 world frame 角度,是以关节0角度计算。找出杯子在各个轨迹点时相对于{0}的 Transformation Matrix 。

我们关心的是{6}对{0}的 Transformation Matrix,所以还需要进一步找到C对{6}的Transformation Matrix,从而求解出{6}对{0}的 Transformation Matrix。

在这里插入图片描述
在这里插入图片描述

3. 方法一:以linear function with parabolic blends 在 Cartesian space 下规划轨迹

3.1 步骤一

在这里插入图片描述

3.2 步骤二

在 cartesian space 下将6个自由度规划出来就是长这个样。

在这里插入图片描述
到目前为止,我们只是了解了所要规划的轨迹是怎样的,还没有涉及到机械臂相关的部分,所以下一步就需要逆运动学解算。

3.3 步骤三

这里需要以IK解算出轨迹上所有设定点以及内插点的六轴转角,计算量非常大
这里以第二个via point P2为例进行详细逆运动学计算

在这里插入图片描述
先把123轴的角度解出来,然后456轴的角度再以 Euler angle 的方式去解

在这里插入图片描述
在这里插入图片描述
到这里就将 P2 时刻的前三轴的角度计算完了

在这里插入图片描述ZYZ的方式就是以Z4的轴向做后续的转动,但是现在Z3和Z4方向如图所示,如果从3对0做ZYZ的话差了一个角度,必须把3对0转到456这边与ZYZ做对应。

在这里插入图片描述DH上面定义的 θ4、θ5、θ6是针对{4}{5}{6}的Z轴旋转的,而ZYZ的 euler angle 是针对同一个frame上面的Z轴、Y轴、Z轴去转的

在这里插入图片描述在这里插入图片描述

3.4 步骤四

在这里插入图片描述

3.5 步骤五

在这里插入图片描述

4. 方法二:以linear function with parabolic blends 在 Joint space 下规划轨迹

4.1 步骤一

在这里插入图片描述

4.2 步骤二

在这里插入图片描述

4.3 步骤三

在这里插入图片描述

4.4 步骤四

在这里插入图片描述
在这里插入图片描述

5. 小结

通过机器人学一的学习,主要涵盖了以下知识点

  • 刚体运动状态的描述
  • 顺向运动学
  • 逆向运动学
  • 轨迹规划

这篇关于机器人学之运动学笔记【7】—— 机械手臂轨迹规划实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/158428

相关文章

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

java String.join()方法实例详解

《javaString.join()方法实例详解》String.join()是Java提供的一个实用方法,用于将多个字符串按照指定的分隔符连接成一个字符串,这一方法是Java8中引入的,极大地简化了... 目录bVARxMJava String.join() 方法详解1. 方法定义2. 基本用法2.1 拼接

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创

Java List排序实例代码详解

《JavaList排序实例代码详解》:本文主要介绍JavaList排序的相关资料,Java排序方法包括自然排序、自定义排序、Lambda简化及多条件排序,实现灵活且代码简洁,文中通过代码介绍的... 目录一、自然排序二、自定义排序规则三、使用 Lambda 表达式简化 Comparator四、多条件排序五、

Java实例化对象的​7种方式详解

《Java实例化对象的​7种方式详解》在Java中,实例化对象的方式有多种,具体取决于场景需求和设计模式,本文整理了7种常用的方法,文中的示例代码讲解详细,有需要的可以了解下... 目录1. ​new 关键字(直接构造)​2. ​反射(Reflection)​​3. ​克隆(Clone)​​4. ​反序列化

Python解决雅努斯问题实例方案详解

《Python解决雅努斯问题实例方案详解》:本文主要介绍Python解决雅努斯问题实例方案,雅努斯问题是指AI生成的3D对象在不同视角下出现不一致性的问题,即从不同角度看物体时,物体的形状会出现不... 目录一、雅努斯简介二、雅努斯问题三、示例代码四、解决方案五、完整解决方案一、雅努斯简介雅努斯(Janu

Linux区分SSD和机械硬盘的方法总结

《Linux区分SSD和机械硬盘的方法总结》在Linux系统管理中,了解存储设备的类型和特性是至关重要的,不同的存储介质(如固态硬盘SSD和机械硬盘HDD)在性能、可靠性和适用场景上有着显著差异,本文... 目录一、lsblk 命令简介基本用法二、识别磁盘类型的关键参数:ROTA查询 ROTA 参数ROTA

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n