什么是 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。

来源:Matlab

更多关于机器人技术相关的文章,请关注微信公众号【机器人R1】。

matlab 角度转四元数_基于Matlab的机械臂路径规划相关推荐

  1. 基于dijsktra算法的最短路径求解_基于dijkstra算法的AGV路径规划(含C++代码)

    文字&代码来源: @Wasabi喵喵喵 基于dijkstra算法的AGV路径规划 dijkstra算法的路径规划 经典Dijkstra算法是一种贪心算法,根据路径长度递增次序找到最短路径,通常 ...

  2. 用matlab画旋转抛物面_基于MATLAB的旋转抛物面天线的几种特性的仿真

    [实例简介] 这是一篇关于基于MATLAB的旋转抛物面天线的几种特性的仿真的论文,对旋转抛物面天线的方向图.利用系数.口径截获效率和增益因子及馈源方向函数等特性进行了仿真 第5期 顾洪军,等:基于 M ...

  3. matlab相关性分析频谱_基于Matlab的相关频谱分析程序教程

    基于Matlab的相关频谱分析程序教程 Matlab 信号处理工具箱 谱估计专题 频谱分析 Spectral estimation(谱估计)的目标是基于一个有限的数据集合描述一个信号的功率(在频率上的 ...

  4. matlab 二值化_基于MATLAB的指纹识别系统[GUI界面+万字技术文档+语音播报]

    一.课题介绍 本设计为基于MATLAB的指纹识别系统.本设计系统主要对指纹图像进行三方面处理:图像预处理.特征提取和特征匹配.图像预处理包括四个步骤:图像灰度化.滤波增强.二值化.细化,对指纹图像进行 ...

  5. matlab程序 地震 相干噪声_基于 matlab 的背景噪声计算程序的设计与应用

    基于 matlab 的背景噪声计算程序的设计与应用 许 可,刘瑞瑞,孔繁旭,朱 宏,柳艳丽,李 晔 [摘 要] 摘要: 文章介绍了利用软件平台,开发出采用经典谱估计中算法的背 景噪声计算程序的设计原理 ...

  6. matlab三相短路电流计算程序_基于MATLAB下的供电系统三相短路电流计算研究

    基于 MATLAB 下的供电系统三相短路电流计算研究 王邦林 [期刊名称] <南方农机> [年 ( 卷 ), 期] 2019(050)004 [摘要] 在供电系统电气设计和运行中 , 短路 ...

  7. matlab三相短路电流计算程序_基于MATLAB的短路电流计算程序编制.pdf

    基于MATLAB的短路电流计算程序编制 维普资讯 2008年第4期 <贵州电力技术> (总第 l06期) 基于 MATLAB的短路电流计算程序编制 武汉大学电气工程学院 周冬旭 向俊杰 陈 ...

  8. matlab单机无限大系统_基于MATLAB的单机无穷大系统短路故障分析

    基于 MATLAB 的单机无穷大系统短路故障分析 [摘要] 本文以 MATLAB7.0 软件为平台构建了一个单机无穷大系统的仿真 模型, 并以电力系统中最常见的单相短路故障为例, 分析了短路中的电压电 ...

  9. matlab 李萨如_基于MATLAB的李萨如图形研究

    内容简介: 基于MATLAB的李萨如图形研究,毕业论文,说明书共20页,5144字,附开题报告.任务书.源程序等. 摘要 质点在相互垂直的分振动频率比成有理数的情况下,合成振动轨迹为稳定的曲线,曲线的 ...

最新文章

  1. 修改initrd做miniLinux
  2. 生成四位验证码php,PHP生成四位整数验证码图片及使用例子
  3. 关于SAP Spartacus的Action - LoadCmsPageData
  4. WPF 中设置Combox下拉框Text 显示值
  5. Windows与Linux比较:相似与不同
  6. 4款超好用的时间轴制作软件
  7. zib机器人怎么_ZIB智伴机器人好不好 ZIB智伴机器人使用测评
  8. 使用excel导入功能时日期数据变成数字的解决
  9. unity的切屏显示顺序
  10. C语言入门,编写程序,输出两个整数中的较大值。
  11. 湘江智能携手中联重科,工程机械产业智能化开启“星城速度”
  12. 电话号码归属地批量查询方法的优缺点对比
  13. typhon例子:cs,bufDataset(类似delphi的clientDataset),josn解析器
  14. 波士顿犯罪数据时空分析及可视化
  15. 软件测试人员如何安稳度过企业试用期
  16. 查询期刊是不是SCI或EI
  17. 计算机系统要素--第六章,02-HACK汇编编译器实现
  18. 搭建DNF台服之配置客户端
  19. 搜狗总收录批量查询教程 如何有效提高搜狗总收录的方法详解
  20. 为什么红外图像分辨率低?

热门文章

  1. Android之Animation动画的介绍及用法
  2. php 怎么定义一个空对象,php定义空对象的方法
  3. k8s 手动恢复redis 集群_二进制手动部署k8s-1.14高可用集群(二、集群部署)
  4. 导师都有哪些“秘密”没有告诉你?
  5. 研究表明,胸大无脑是不存在的......
  6. 直男约会能有多奇葩​?
  7. 辍学程序员改变世界,这位长得像马云的90后要击败Facebook的扎克伯格了…
  8. 女程序员怀孕7个月坚持上班敲代码
  9. 今天,送你一份交通行业最全数据集(共享单车、自动驾驶、网约出租车、交通信号识别)
  10. python第k序列元素查找_Python寻找第k小的元素