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

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

3天内不再提示

关于MATLAB中的机械臂算法的分析和介绍

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

扫码添加小助手

加入工程师交流群

中文路径在英语中可能有两种翻译:

path

trajectory

首先告诉大家,我们所说的“路径”的是后者——trajectory。我们看一下这两种“路径”在机械臂的世界里有什么区别。

设想机械臂的end-effector要从A点运动到B点:

关于MATLAB中的机械臂算法的分析和介绍

从A到B叫path:

关于MATLAB中的机械臂算法的分析和介绍

如果我们规定从A到B这个path,必须在特定的时间(t0–t6),经过这7个点。

那么这7个点叫waypoints。路径(trajectory)指的是通过这7个点的具体计划(例如什么时间,以什么速度等等)。规划我们如何经过这7个点的算法,叫做路径规划(trajectoryplanning)算法。

上面这7个点,如果机械臂的end-effector在通过的时候,位置连续、速度连续、甚至加速度也是连续的,那么我们说这个 trajectory 是平滑的(smooth)。

机械臂中有几种比较常见的trajectory:

Trapezoidal Trajectories(梯形路径)

关于MATLAB中的机械臂算法的分析和介绍

梯形路径指的是:

end-effector在相邻waypoints之间的速度是象梯形一样,先线性加速,然后速度保持不变,在接近目标后线性减速。梯形路径的优点是比较简单实用,但是在每个waypoint会有停顿。下图是一个机械臂走梯形路径的样例:在过waypoints的时候,会完全停止,所以走的是直线,速度和加速度肯定不连续。

关于MATLAB中的机械臂算法的分析和介绍

Polynomial Trajectories(多项式路径)

其中又分三次多项式和五次多项式。分别写作:

关于MATLAB中的机械臂算法的分析和介绍

三次多项式可以记录end-effector的速度、位置的信息。五次多项式可以记录end-effector的位置、速度、加速度的信息。下图是一个五次多项式的例子,可以看到速度、加速度都是连续的。三次或者五次多项式的trajectory在通过waypoints的时候速度都是连续的,这和梯形路径是不一样的。

关于MATLAB中的机械臂算法的分析和介绍

下图是一个机械臂走五次多项式路径的样例:为了保证过waypoints的时候速度不停顿,走的是曲线。

关于MATLAB中的机械臂算法的分析和介绍

B-splines(B样条曲线)

B 样条曲线将除了起始点和终点外,将其他的 waypoints 看成是控制点(controlpoints)。机械臂的end-effector并不会真正通过这些controlpoints,而在他们之间找一条平滑的曲线。这样做的目的是在平滑加速度和曲线拟合的准确性之间找一个折衷方法。

关于MATLAB中的机械臂算法的分析和介绍

(图片来自于Wikipedia)

如果一个trajectory只有这7个点,无论机械臂控制器的运动控制模块如何强大,都无法保证做到“平滑”的运行。我们必须对路径点进行插值(interpolation)。

下图的橙色点为插值点示意:

关于MATLAB中的机械臂算法的分析和介绍

在了解插值后,我们来看一下路径规划出来的信息如何和传递到反向运动学(inversekinematics)。反向运动学模块将确保end-effector按照规划出来的路径运行,即路径跟随(trajectoryfollowing)。

这里,我们按插值类型情况分两种模式:

1. Trajectory interpolated in task space

在这种模式下,中间插值的点是在taskspace(即XYZ坐标系,或者叫笛卡尔坐标系)进行插值。下图表明了这一过程,这时候trajectorygeneration只需要做一次,产生所有的waypoints和interpolationpoints(插值点)。然后运动控制系统在每个控制周期都必须调用inversekinematics算法去做路径跟随(trajectoryfollowing)。

关于MATLAB中的机械臂算法的分析和介绍

2.Trajectory interpolated in joint space

在这种模式下,中间插值点的点是在jointspace(即对关节角度插值)。下图表明了这一过程。这时候trajectorygeneration也只需要做一次,但做的过程和taskspace的做法不同。即在每一个waypoint调用一次inversekinematics,然后对关节角度的进行插值。Trajectoryfollowing模块只需执行插值后的角度指令。

关于MATLAB中的机械臂算法的分析和介绍

角度方向插值(orientation interpolation)

我们刚才谈到的插值,都是针对end-effector的位置(position,即XYZ的坐标)。我们不应该忽略end-effector的角度方向(orientation)插值。我们看一段动画来了解一下,什么是orientation的插值:

可以看到,随着end-effector的移动,它的方向也在不断做出平滑的调整,在end-effector运行到目标位置后,它的方向也调整到位。当然,有很多场合角度方向是不需要调整的。例如:喷漆机械臂,永远将end-effector指向喷漆作业面。

MATLAB 中的机械臂路径规划算法

在R2019a 发布后RoboticsSystemToolbox(RST)中多了几个机械臂路径规划的MATLAB函数和Simulink模块。

MATLAB函数:

关于MATLAB中的机械臂算法的分析和介绍

Simulink模块:

关于MATLAB中的机械臂算法的分析和介绍

不管是MATLAB函数还是类似Simulinkblock,大概这么几项功能:

生成梯形或者多项式的位置 trajectory

生成角度方向的 trajectory

将上两者合二为一的生成既包含位置,也包含角度方向(合称pose)的trajectory——即基于homogeneoustransforms的posetrajectory。

让我们写几行代码,来产生一个三次多项式的trajectory:

关于MATLAB中的机械臂算法的分析和介绍

可以看到,位置是连续的。如果我们将速度(qd)、加速度(qdd)画出来,可以看到qdd是不连续的。

关于MATLAB中的机械臂算法的分析和介绍

Simulink示例

在MATLABfileexchange里搜索“TrajectoryPlanningforRobotManipulators”,会找到一个用多种方式产生trajectory的例子。

用一张表格总结如下:

关于MATLAB中的机械臂算法的分析和介绍

这里有两点值得注意:

无论是MATLAB函数还是Simulinkblock,所有角度方向的插值都是基于SLERP(sphericallinearinterpolation)。这是一种基于四元数(quaternions)的插值法。不会造成下图所示的“不走近路,绕远路”的问题。例如,角度要从0度转到30度。因为圆周是360度,错误的方式是从0度转到330度–虽然也能到达指定位置或者角度,但它是错误的。在manipJointTrajectory模型中,因为用到了基于jointspace(关节角度)的插值,读者可以注意一下如何处理这个问题。

关于MATLAB中的机械臂算法的分析和介绍

Time-scaling。在manipTransformTrajectoryTimeScaling模型中,如果不加timescaling这个模块,那么所有的角度变化和位置变化都是基于线性插值。如果加入了“想要的”速度、加速度信息---即timescaling。我们可以使角度变化和位置变化按照我们想要的梯形或者多项式形式去调整。例如,我想让角度一开始不变,然后快速变化,最后速度为0。

关于MATLAB中的机械臂算法的分析和介绍

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

    关注

    0

    文章

    88

    浏览量

    20852
  • 机械臂
    +关注

    关注

    13

    文章

    582

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

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

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

    协作机械产品介绍

    电子发烧友们、工业自动化从业者、科研工作者们注意啦!今天给大家重磅介绍一款在机械领域表现极为亮眼的产品——协作机械,它正以卓越性能重塑行
    发表于 08-07 17:20 0次下载

    DFT算法与FFT算法的优劣分析

    一概述 在谐波分析,我们常常提到的两个词语,就是DFT算法与FFT算法,那么一款功率分析仪/谐波分析
    的头像 发表于 08-04 09:30 891次阅读

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

    在特定的汽车零部件生产工厂焊接生产线上,机械被应用于焊接作业,其控制体系基于Profinet协议。同时,工厂的自动化控制体系以西门子S7-1200PLC为核心,通过ModbusTCP协议实现
    的头像 发表于 07-03 16:56 415次阅读
    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 677次阅读
    GZCOM-NET:为<b class='flag-5'>机械</b><b class='flag-5'>臂</b>测试带来高效无线解决方案!

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

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

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

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

    为控制Mercury X1和Mercury B1机械而设计的创新外骨骼

    今天,我们将介绍一款专为控制 Mercury X1 和 Mercury B1 机械而设计的创新外骨骼。这种外骨骼以人类手臂的结构为蓝本,可实现直观和精确的控制。     开发这种外骨骼的动机源于
    的头像 发表于 02-11 09:50 959次阅读
    为控制Mercury X1和Mercury B1<b class='flag-5'>机械</b><b class='flag-5'>臂</b>而设计的创新外骨骼

    如何使用PLC控制myCobot 320机械

    根据持续的用户反馈,目前市场对 PLC 与 myCobot 系统集成的需求很大,因此本文提供的案例介绍了如何使用 PLC(可编程逻辑控制器)来控制 myCobot 320 机械。本案例重点
    的头像 发表于 01-23 14:03 2156次阅读
    如何使用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 1242次阅读
    深度解析!RK3568 加持<b class='flag-5'>机械</b><b class='flag-5'>臂</b>是如何实现颜色识别与抓取的?

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

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

    求LabVIEW程序代做,关于噪声测量方面,需要matlab与labview混合编程,涉及优化算法、PID控制等,可带价联系

    求LabVIEW程序代做,关于噪声测量方面,需要matlab与labview混合编程,涉及优化算法、PID控制等,可带价联系QQ2789223947
    发表于 12-11 17:27