机器人学之运动学笔记【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

相关文章

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

Apache Ignite缓存基本操作实例详解

《ApacheIgnite缓存基本操作实例详解》文章介绍了ApacheIgnite中IgniteCache的基本操作,涵盖缓存获取、动态创建、销毁、原子及条件更新、异步执行,强调线程池注意事项,避免... 目录一、获取缓存实例(Getting an Instance of a Cache)示例代码:二、动态

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

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 拼接