0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MATLAB中的运动学机械臂算法

MATLAB 来源:djl 作者:MathWorks 2019-09-11 15:08 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

MATLAB 在 2016 年就推出了 Robotics System Toolbox(RST),其中有很多关于机械臂方面的算法。而且随着客户需求的增加,也在加入一些新的功能。为了试图让读者了解更多 RST 在机械臂方面的支持,让我们来看一下机械臂方面的算法概貌。

MATLAB中的运动学机械臂算法

这些名词听起来都比较深奥,但是在机械臂的世界里,这些都非常有用。

让我们看一个简单的例子。下图是一个简单的机械臂示意:机械臂的 end-effector(末端机构)受到 4 个旋转关节和 3 个连杆的共同作用,可以到达不同的作业地点,也可以处于不同的旋转角度。

MATLAB中的运动学机械臂算法

为了分析 end-effector 的具体位置和角度,我们看到:

它相对底座开始,做了 4 次旋转(rotation)和 3 次转置(translation)。那这 4 此旋转和 3 此转置的总和,我们可以用一个矩阵来表示:

MATLAB中的运动学机械臂算法

这个矩阵也叫 Homogeneous Transformation(齐次变换)。

有时候,对于旋转会有不同的表达方式,例如欧拉角(Euler Angles)、四元素(Quaternion)、旋转矩阵(Rotation Matrix)等等;表达转置,也可使用转置向量(Translation Vector)。有了 RST 这些都可以轻松通过不同的函数进行互换。下图为具体的函数列表:

MATLAB中的运动学机械臂算法

例如:将欧拉角转为Homogeneous Transformation:

>> eul = [0 pi/2 0];

tformZYX = eul2tform(eul)

tformZYX =

0.0000 0 1.0000 0

0 1.0000 0 0

-1.0000 0 0.0000 0

0 0 0 1.0000

由于机械臂的连杆长度是已知的,只要确定了各个关节转动的角度,我们就可以确定 end-effector 的最终位置和方向。这个我们称之为 forward kinematics(正向运动学)。反过来,如果我们知道了 end-effector 的最终位置和方向,我们也可以推导各个关节的角度,这个我们称之为 inverse kinematics(反向运动学)。

机械臂关注的主要是反向运动学。

如果 end-effector,需要走一段比较长的路程(path),从甲点运行到乙点。我们为了使得机械臂的 end-effector 的路径平滑,需要规划一系列的路径点(waypoints),这个我们叫做路径规划(trajectory planning)或者叫运动插补(interpolation)。例如下图,蓝色的曲线叫 path,而各个时间经过的路径点叫 trajectory。如何设计经过这些路径点的 trajectory,比较显而易见的指标是 “平滑” 。那什么是“平滑” ,它可能意味着 “速度连续” 、“加速度连续” 、 “没有顿挫” 等等。这些指标,都会转化成数学算法。 RST 也会有相应的算法支持,作者将另外写文章描述。

MATLAB中的运动学机械臂算法

机械臂的关节位置我们一般用电机来驱动。电机通过产生力矩来转动机械装置,驱动机械臂。不同场合或者时机,需要的力矩不尽相同。

例如,机械臂水平放置的时候需要关节电机产生力矩来抵消地球引力;当机械臂需要迅速移动的时候,需要的力矩比缓慢移动的要大,当机械臂弯曲或者平展时候,重心发生变化,由于惯量(I = mr²)的不同,需要的关节力矩也不相同;另外,在很多场合,机械臂需要和人交互(collaborative robots),在碰到人体的时候,需要做出安全的保护动作,并对力矩进行调整。

这些需要考虑力矩的因素,我们称之为动力学(dynamics)。和运动学类似,动力学分为正向动力学(forward dynamics)和反向运动学(inverse dynamics)。 RST 里支持两种都有相应的 MATLAB 函数和Simulink block。作者也会另外写文章详细介绍 RST 关于动力学的部分。

运动学

1. Rigid Body Tree (刚体树)

我们说研究运动学(主要是反向运动学),就是研究 end-effector 的位置改变会带动各个关节的角度如何改变。RST 用 Rigid Body Tree 这样一个对象,在这个对象上可以使运动学设计易用且可视化。下图展示了机械臂的刚体树样例,可以在 MATLAB 界面中展示各个 body 的详细参数。

MATLAB中的运动学机械臂算法

MATLAB中的运动学机械臂算法

一般来说,Rigid Body Tree 都是直接从机械臂的 CAD 文件或者 URDF(Unified Robot Description Format)文件导入。不过,也支持每个 body 的逐步添加。

我们随便敲几行 MATLAB 命令:

robot = importrobot('iiwa14.urdf');

show(robot);

MATLAB中的运动学机械臂算法

让我们来改变一下机器人的各个关节角度(configuration),比如让MATLAB自动给一个随机角度配置,再看一下结果。显然各个角度发生了变化。

q=randomConfiguration(robot);

show(robot,q);

MATLAB中的运动学机械臂算法

我们看看这个机械臂最末端的 end-effector 是什么?

showdetails(robot)

MATLAB中的运动学机械臂算法

我们再看看 end-effector 相对机器人底座(base)的 Homogeneous Transformation(相对位置和角度)。

MATLAB中的运动学机械臂算法

2. 反向运动学算法

反向运动学算法求解分两种:一种是分析解法(Analytic solutions);一种是数值解法(Numerical solutions)。

MATLAB 用的是数值解法,可以理解为迭代寻优,或者近似解。

MATLAB 里面的反向运动学求解器(solver)有两个:

Inverse Kinematics

Generalized Inverse Kinematics

两者的区别是,后者比前者多了很多限制(constraints) 。例如end-effector的方向限制、机械臂各个关节的角度限制、位置限制等等。

我们先看一下比较简单的 Inverse Kinematics:

MATLAB中的运动学机械臂算法

这是一个 6 轴机器人,end-effector 是 L6。

MATLAB中的运动学机械臂算法

我们想要的最终结果就是下图:

tform 是 L6 相对 base 的位置和方向(合称 pose)。

MATLAB中的运动学机械臂算法

下面的 MATLAB 代码是计算出最终的各个关节的角度(configSoln),由于是用了迭代的数值解法,weights 为权重,initialguess 为给出一个初始估计。

MATLAB中的运动学机械臂算法

我们再看一下比较复杂的 Generalized Inverse Kinematics:

下面的代码,做了这么几件事情:

导入了一个 7 自由度的 rethink 机械臂— sawyer

设定反向运动学的求解限制— 例如机械臂的 end-effector 永远指向地面的一个物体

对反向运动学进行求解

MATLAB中的运动学机械臂算法

如果我们加一段 end-effector 位置变化后,调用这段代码的动画效果,你会发现 end-effector 的指向没有变化 – 带限制的反向动力学求解成功了:

3. Simulink 示例

在安装 RST 之后,Simulink 的 library 里就会出现几个和机械臂(manipulator)相关的 block:

其中 Inverse Kinematics 就是反向运动学 block,其他的一些模块顾名思义和动力学有关,在下一篇文章我会重点介绍。

MATLAB中的运动学机械臂算法

在 MATLAB Central File Exchange 上搜索 “Designing Robot Manipulator Algorithms”,这是一个基于 Simulink 和 Stateflow 的例子。我们先看一下运行结果:

这个例子展现了机械臂的 end-effector 抓了红色物体,沿着规划好的紫色 trajectory,进行运动。

下图的 stateflow 状态机是一个 trajectory tracking 的算法,它的作用是确保 end-effctor 沿着预设的 trajectory 运行。

MATLAB中的运动学机械臂算法

状态机下面的是运动控制部分和环境和物理模型。运动控制很简单 – 直接计算反向运动学,将算好的关节角度交给物理模型去展现。物理模型构建也很简单—— 用 SimScape 中的 SimMultibody 直接导入机械臂的 URDF 文件即可。

MATLAB中的运动学机械臂算法

这里可以看到物理模型并没有包含伺服电机,而是“透明传输”— 反向运动学的结果直接发给了机械模型去展现。实际上真实的运动控制器会将位置、速度、力矩指令通过伺服总线(例如 EtherCAT)发给每个关节的电机去执行,电机通过减速器去带动机械结构。例如,一个 6 轴机械臂会有 6 个伺服电机,运动控制器会将运动过程解析为 6 个电机可以理解的位置、速度、力矩指令。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    114

    文章

    17638

    浏览量

    190222
  • 机器人
    +关注

    关注

    213

    文章

    30580

    浏览量

    219521
  • 运动学
    +关注

    关注

    0

    文章

    8

    浏览量

    7216
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    告别围栏时代!激光雷达让机械产线“智能守卫”效率飙升

    某知名制药企业的无菌制剂灌装生产线上,并排部署了8台高精度灌装机械,在A级洁净区(ISO5级)环境下工作,这些机械需要寻求安全防护方案来替代传统的围栏方案。传统方案(围栏)和安全光
    的头像 发表于 12-02 07:32 62次阅读
    告别围栏时代!激光雷达让<b class='flag-5'>机械</b><b class='flag-5'>臂</b>产线“智能守卫”效率飙升

    复合机器人对比传统AGV和机械的优势何在?

    复合机器人对比传统AGV和机械的优势,核心在于它突破了单一设备的功能局限,实现了“移动+操作”的深度协同,尤其在上下料和物料转运场景优势显著。经世智能复合机器人:重新定义上下料与物料转运的效率
    的头像 发表于 11-21 15:32 980次阅读
    复合机器人对比传统AGV和<b class='flag-5'>机械</b><b class='flag-5'>臂</b>的优势何在?

    传统测试设备的局限与协作机械的破局

    在协作式测试设备的研发与落地中,北京沃华慧通测控技术有限公司凭借深厚的测控技术积累,成为行业核心赋能者。作为专注于智能测控设备研发的高新技术企业,北京沃华慧通测控技术有限公司深度把握协作机械的技术特性,构建了 “机械
    的头像 发表于 10-11 09:34 296次阅读
    传统测试设备的局限与协作<b class='flag-5'>机械</b><b class='flag-5'>臂</b>的破局

    机器人机械效率提升的革命性解决方案:上海永铭电容器实践

    在现代自动化与精密制造,机器人机械(人形/工业)的稳定性与效率至关重要。电容器作为电路的基本组件,对机器人机械
    的头像 发表于 09-01 10:06 380次阅读
    机器人<b class='flag-5'>机械</b><b class='flag-5'>臂</b>效率提升的革命性解决方案:上海永铭电容器实践

    EtherCAT转Profinet协议转换网关实现PLC与机械通讯的配置案例

    在某汽车零部件制造企业的生产线,面临着设备协议不兼容的问题。该生产线的核心控制系统采用的是西门子S7-1500PLC,其通信协议为Profinet,而用于零部件加工的机械则采用EtherCAT协议。由于协议差异,
    的头像 发表于 08-30 10:55 605次阅读
    EtherCAT转Profinet协议转换网关实现PLC与<b class='flag-5'>机械</b><b class='flag-5'>臂</b>通讯的配置案例

    创想智控焊缝跟踪+发那科机器人实现工程机械架焊接智能化升级

    在工程机械领域,架是起重机、高空作业车等工程机械的关键承力部件,架焊接的精度和质量直接影响整机的结构强度与使用寿命。传统人工焊接方式无法满足现代工程
    的头像 发表于 08-16 15:17 557次阅读

    协作机械产品介绍

    多元需求比邻星协作机械拥有出色的负载表现,别看其外观设计精巧,却能轻松承载较重的物品 。在工业生产中,无论是搬运大型零部件,还是在精密电子制造环节对微小元器件进行精准操作,它都能稳定运行,重复定位精度极高
    发表于 08-07 17:20 0次下载

    PROFINET转MODBUS TCP网关在机械通信操作的应用研究

    在特定的汽车零部件生产工厂焊接生产线上,机械被应用于焊接作业,其控制体系基于Profinet协议。同时,工厂的自动化控制体系以西门子S7-1200PLC为核心,通过ModbusTCP协议实现
    的头像 发表于 07-03 16:56 413次阅读
    PROFINET转MODBUS TCP网关在<b class='flag-5'>机械</b><b class='flag-5'>臂</b>通信操作<b class='flag-5'>中</b>的应用研究

    GZCOM-NET:为机械测试带来高效无线解决方案!

    在智慧工厂机械的性能和安全性需通过静态与动态测试来保障。批量化测试时,后台需实时显示数据曲线和异常数据。GZCOM-NET凭借高效稳定的无线传输,为机械
    的头像 发表于 06-20 11:36 676次阅读
    GZCOM-NET:为<b class='flag-5'>机械</b><b class='flag-5'>臂</b>测试带来高效无线解决方案!

    大象机器人携手进迭时空推出 RISC-V 全栈开源六轴机械产品

    大象机器人成立于2016年,专注协作机器人研发与应用,产品线涵盖轻量级协作机器人、人形机器人、仿生机器人等多种形态。拳头产品myCobot系列以“全球最轻的六轴机械”闻名,累计销量超数万台,覆盖
    发表于 04-25 17:59

    海康威视推出大模型机械防碰撞相机

    工业机械负载作业时,往往重达几百斤甚至更重,提升效率的同时,如果它们“意外伤人”,后果不堪设想。
    的头像 发表于 03-17 09:47 889次阅读

    如何使用PLC控制myCobot 320机械

    根据持续的用户反馈,目前市场对 PLC 与 myCobot 系统集成的需求很大,因此本文提供的案例介绍了如何使用 PLC(可编程逻辑控制器)来控制 myCobot 320 机械。本案例重点介绍
    的头像 发表于 01-23 14:03 2147次阅读
    如何使用PLC控制myCobot 320<b class='flag-5'>机械</b><b class='flag-5'>臂</b>

    使用myCobot 280机械结合ROS2系统搭建机械分拣站

    这篇文章是来自Automatic Addison的开源项目,已获作者授权转载自github。本项目的主要内容是使用myCobot 280机械结合ROS2系统搭建机械分拣站。
    的头像 发表于 01-15 09:22 1909次阅读
    使用myCobot 280<b class='flag-5'>机械</b><b class='flag-5'>臂</b>结合ROS2系统搭建<b class='flag-5'>机械</b>分拣站

    深度解析!RK3568 加持机械是如何实现颜色识别与抓取的?

    ;2、掌握机械识别颜色抓取积木的实现方法。三、实验原理颜色识别抓取积木功能:实现识别出不同颜色的积木,机械夹取后并放在相应的位置
    的头像 发表于 01-15 08:07 1237次阅读
    深度解析!RK3568 加持<b class='flag-5'>机械</b><b class='flag-5'>臂</b>是如何实现颜色识别与抓取的?

    RK3568国产实验箱+人工智能机械:跳舞、叠罗汉、夹方块、积木搬运案例全解!

    基于语音控制实现机械特定动作的方法。三、实验原理程序功能通过语音控制机械实现特定复杂动作:机械
    的头像 发表于 12-12 19:01 1852次阅读
    RK3568国产实验箱+人工智能<b class='flag-5'>机械</b><b class='flag-5'>臂</b>:跳舞、叠罗汉、夹方块、积木搬运案例全解!