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中的机械臂算法的分析和介绍

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

    关注

    0

    文章

    86

    浏览量

    20013
  • 机械臂
    +关注

    关注

    12

    文章

    498

    浏览量

    24177
收藏 人收藏

    评论

    相关推荐

    奥比光推出2.0版大模型机械

    近期,奥比 光研发团队融合前沿多模态大模型技术,推出最新2.0版大模型 机械 演示方案。新方案搭载公司最新深度相机Gemini 335L和Femto Bolt,能够基于语音指令,自动执行沏茶、插花、滴
    的头像 发表于07-19 16:50 481次阅读

    大象机器人开源协作机械机械接入GPT4o大模型!

    和智能化的任务,提升了人机协作的效率和效果。我们个人平时接触不太到 机械 这类的机器人产品,但是有一种小型的 机械 我们人人都可以拥有它myCobot,价格低廉的一种桌面型
    的头像 发表于07-03 14:09 407次阅读
    大象机器人开源协作<b class='flag-5'>机械</b><b class='flag-5'>臂</b><b class='flag-5'>机械</b><b class='flag-5'>臂</b>接入GPT4o大模型!

    国产Cortex-A55人工智能教学实验箱_基于Python机械跳舞实验案例分享

    又不必要。 从力学的角度 分析,物件在空间只有6个自由度。因此为抓取和传送在空间不同位置和方位物件,传送机构也应具有6个自由度。 实验程序流程 1、创建 机械 对象 2、 机械
    发表于06-28 14:37

    基于六维力传感器的机械自动装配应用

    外部环境的关键装置,六维力传感器通常安装于机器 末端执行器与 机械 之间,用于检测作业 的机器人与环境之间的多维交互力/力矩,并将交互力/力矩反馈给机器人力控制系统,
    的头像 发表于06-06 13:49 346次阅读
    基于六维力传感器的<b class='flag-5'>机械</b><b class='flag-5'>臂</b>自动装配应用

    自然语言控制机械:ChatGPT与机器人技术的融合创新(下)

    引言 在我们的上一篇文章 ,我们探索了如何将ChatGPT集成到myCobot 280 机械臂中,实现了一个通过自然语言控制 机械 的系统。我们详细 介绍
    的头像 发表于04-11 15:54 516次阅读
    自然语言控制<b class='flag-5'>机械</b><b class='flag-5'>臂</b>:ChatGPT与机器人技术的融合创新(下)

    如何去提升机械的位置控制性能?

    1.背景 介绍 机械 的位置控制是 机械 最重要的功能。 机械
    的头像 发表于03-05 08:43 462次阅读
    如何去提升<b class='flag-5'>机械</b><b class='flag-5'>臂</b>的位置控制性能?

    【国产FPGA+OMAPL138开发板体验】(原创)2.手把手玩转游戏机械

    ChatGPT来增强其交互能力。 5.1 ChatGPT集成 AI 算法实现 为了使 机械 具有AI功能,我会使用机器学习和AI 算法来优化其运动轨迹和控制参数。例如,可以使用强化学习
    发表于02-01 20:18

    【开源获奖案例】四轴机械控制系统

    ——来自迪文开发者论坛本期为大家推送迪文开发者论坛获奖开源案例——四轴 机械 控制系统。工程师采用T5L智能屏,基于DGUS软件“旋转指示”控件实现 机械 的实时位置显示,并通过串口控制
    的头像 发表于12-23 08:13 728次阅读
    【开源获奖案例】四轴<b class='flag-5'>机械</b><b class='flag-5'>臂</b>控制系统

    七轴开源协作机械myArm视觉跟踪技术!

    处理技术,使用ArUco标记的 机械 系统可以实现更高级的自动化功能,如精确定位、导航和复杂动作的执行。 本案例旨在展示结合ArUco标记和 机械 运动控制技术,实现对
    的头像 发表于12-18 11:14 769次阅读
    七轴开源协作<b class='flag-5'>机械</b><b class='flag-5'>臂</b>myArm视觉跟踪技术!

    开源六轴协作机械MechArm案例演示!

    介绍今天,我将向大家展示一个我独立设计并实现的 机械 模型。这个模型的核心功能是实现实时的手势追踪——只需用手轻轻拖拽, 机械 就能立即跟随你
    的头像 发表于11-28 15:58 646次阅读
    开源六轴协作<b class='flag-5'>机械</b><b class='flag-5'>臂</b>MechArm案例演示!

    如何解决柔性机械建模过程问题

    柔性 机械 刚性 机械 建模方法已经可以有效地求解出 机械 各部分之间的耦合情况,但是对于柔性
    的头像 发表于11-17 17:12 622次阅读

    刚性机械的动力学建模

    。 不同的建模原理可以得到 机械 不同的动力学表达式,有些 算法可以求解出 机械 的正向和逆向问题,而有些 算法
    的头像 发表于11-17 17:03 573次阅读

    六自由度机械轨迹规划仿真

    需要重新输入“startup_rvc”回车来启动这个工具箱。 本文所控对象为串联六R 机械 ,其具体尺寸参数见于代码 的D-H表。 MATLAB代码 % Modified DH % AB
    的头像 发表于11-17 16:11 990次阅读
    六自由度<b class='flag-5'>机械</b><b class='flag-5'>臂</b>轨迹规划仿真

    机械结构是什么样的

    },{5}和{6}的原点。如下图示。 对于 机械 , 通常将之看作“连杆结构” ,连杆是由关节组合而成。因此在 分析 机械 的时候需要为
    的头像 发表于11-17 15:48 2296次阅读
    <b class='flag-5'>机械</b><b class='flag-5'>臂</b>结构是什么样的

    单关节机械接触力补偿因素

    进行重力补偿。通过减去 机械 当前位置的重力分量,可以获得实际的接触力。 2.惯性补偿: 机械 在运动过程 可能会产生惯性力,这些力会影响接触力
    的头像 发表于11-10 17:08 468次阅读