作者:周末,MathWorks 中国行业市场部经理

什么是 trajectory(路径)规划

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

1. path

2. trajectory

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

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

从 A 到 B 叫 path:

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

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

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

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

Trapezoidal Trajectories(梯形路径)

梯形路径指的是:

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

Polynomial Trajectories(多项式路径)

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

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

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

B-splines(B样条曲线)

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

(图片来自于Wikipedia)

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

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

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

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

1. Trajectory interpolated in task space

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

2.Trajectory interpolated in joint space

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

角度方向插值 (orientation interpolation)

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

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

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

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

MATLAB 函数:

Simulink 模块:

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

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

生成角度方向的 trajectory

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

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

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

Simulink示例

在 MATLAB file exchange 里搜索 “Trajectory Planning for Robot Manipulators”,会找到一个用多种方式产生 trajectory 的例子。

用一张表格总结如下:

这里有两点值得注意:

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

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

作 者 简 介

周末,MathWorks 中国行业市场部经理,专注于基于模型的系统和软件设计。负责 MATLAB/Simulink 在机器人、汽车电子、电力电子等行业的推广和应用,曾就职于 IBM 和上海贝尔。

文章转载自:MATLAB

matlab三轴机械臂,MATLAB 中的机械臂算法——路径规划相关推荐

  1. matlab编写转台程序,基于Matlab三轴惯导测试转台结构分析.doc

    基于Matlab三轴惯导测试转台结构分析 基于Matlab三轴惯导测试转台结构分析 摘 要:三轴惯导测试转台作为惯导测试设备,其精度直接影响惯导设备的精度,而中框回转精度在三轴精度相对较差.影响其中框 ...

  2. 基于MATLAB GUI的蚁群算法路径规划实现电动汽车充电站与换电站协调

    基于MATLAB GUI的蚁群算法路径规划实现电动汽车充电站与换电站协调 摘要: 随着电动汽车的普及和发展,电动汽车充电站与换电站的布局和规划变得尤为重要.本文基于MATLAB GUI平台,结合蚁群算 ...

  3. matlab三轴陀螺标定,一种mems三轴陀螺仪误差标定方法

    一种mems三轴陀螺仪误差标定方法 [专利摘要]本发明涉及一种MEMS三轴陀螺仪的误差标定方法,属于试验[技术领域].本发明方法通过建立MEMS三轴陀螺仪的误差校正模型,采用双轴速率转台对MEMS陀螺 ...

  4. matlab三次拟合多项式,matlab三次多项式拟合

    暂无评价|0人阅读|0次下载|举报文档 DSC曲线的三次样条拟合与Matlab实现_能源/化工_工程科技_专业资料.DSC曲线拟合与Matlab实现第... 人阅读|次下载 曲线拟合的最小二乘法mat ...

  5. matlab的数值计算方法,数值计算方法中的一些常用算法的Matlab源码

    数值计算方法中的一些常用算法的Matlab源码,这些程序都是原创,传上来仅供大家参考,不足之处请大家指正,切勿做其它用途-- 说明:这些程序都是脚本函数,不可直接运行,需要创建函数m文件,保存时文件名 ...

  6. matlab在电气信息类专业中的应用,MATLAB在电气信息类专业中的应用(高等学校应用型特色规划...

    第1章 matlab语言总览 1.1 matlab简介 1.1.1 matlab概况 1.1.2 matlab基本工作界面 1.2 matlab的工作环境 1.3 matlab入门 1.4 matla ...

  7. matlab 4轴机器人建模,MATLAB机器人工具箱6轴机械臂DH建模仿真

    机器人工具箱常用函数 Link类 Link 对象包括连杆的各种属性:运动学参数.惯性张量.电机.传递矩阵等 Link 的类函数: 信息/显示方式: display : 显示连杆参数表格 dyn : 显 ...

  8. matlab三轴陀螺标定,三浮陀螺仪漂移模型的建立及MATLAB实现

    1引言惯性导航系统作为战略武器的三大要素(核动力.导弹.惯性导航)之一,其精度和性能在某种意义上反映了一个国家的国防科技水平.要提高惯性导航系统的精度,最有效的途径之一便是对误差进行标定并加以补偿.实 ...

  9. 6轴机器人运动学逆解matlab,六轴机器人建模方法、正逆解、轨迹规划实例与Matalb Robotic Toolbox 的实现...

    摘要 本文主要是给大家一个系统的概念,如何用Matlab实现六轴机器人的建模和实现轨迹规划.以后将会给大家讲解如何手写正逆解以及轨迹插补的程序.程序是基于Matlab2016a,工具箱版本为Robot ...

  10. matlab三点求法向量,matlab求法向量

    |dT/ds| dT/ds 投影方向单位向量,垂直于 T 平面 T 和 N 的单位法向量,即曲率的平面 曲线的扭率: |dB/ds| 重力常数 力学中力的标准符号 弹簧的弹簧常数 ...... |dT ...

最新文章

  1. Android Keystore/keymaster的错误码
  2. python分词和词频统计
  3. oracle v sql不存在,程序包oracle.sql不存在
  4. linux bochs 网卡,Bochs 在Windows和Linux下配置对比
  5. mysql+8.0+新特性_MySQL 8.0备受瞩目的新特性大放送!
  6. nyoj 122 Triangular Sums
  7. 如何ajax上传文件,如何实现Ajax文件上传功能
  8. 【数据产品案例】阿里生意参谋-用户分析
  9. 电视购物直播系统是如何运行的?视频直播流媒体服务器购物直播应用案例
  10. Echarts地图案例
  11. [资源]--IOS捷径大全,众多实用小功能
  12. 《Clojure Web开发实战》——第2章,第2.3节应用架构
  13. bcm43142 linux 驱动下载,CentosRedhat下bcm43142博通无线网卡linux驱动之二
  14. 目标检测论文解读复现之十九:基于YOLOv5网络模型的人员口罩佩戴实时检测
  15. 发那科机器人没有码垛指令_FANUC 机器人码垛编程详细讲解
  16. 大众点评列表页采集思路,破解字体文件反爬(包含项目github 可用时间至2020-01-21)
  17. XStream的使用方法
  18. 手淘商品详情api接口|淘宝商品详情API接口文档
  19. 【智能车学习】电磁车算法优化总结
  20. PAT for Java:01-害死人不偿命的(3n+1)猜想:卡拉兹(Callatz)猜想

热门文章

  1. ICANN拟删旧国别域名 含英国gb苏联su塞黑cs
  2. php获取客户端IP地址的几种方法
  3. FastDFS原理介绍
  4. fastdfs原理及过程
  5. linux平台生成awr报告,Linux平台生成awr报告
  6. TLE82453-3SA-芯片手册
  7. 收获与期待——2016第四届中国计算机行业发展成就奖揭晓
  8. 期货市场对农业的影响
  9. 机器学习-多元分类/回归决策树模型(tree包)
  10. 康奈尔笔记系统介绍和购买