机器人机械手的轨迹规划
注意:虽然本文将专门讨论操纵器,但所讨论的许多概念也适用于其他类型的系统,如自动驾驶汽车和无人驾驶飞行器。
轨迹规划是整个问题的一个子集导航或运动规划.运动规划的典型层次结构如下:
- 任务计划-设计一组高水平的目标,比如“去捡起你面前的物体”。
- 路径规划-生成从起点到目标点的可行路径。路径通常由一组连接的路点组成。
- 轨迹规划-为如何遵循给定的位置、速度和加速度等约束条件的路径生成时间计划。
- 轨迹后-一旦规划了整个轨迹,就需要有一个控制系统,能够以足够准确的方式执行轨迹。
最大的问题通常是“路径规划和轨迹规划的区别是什么?”如果你要带走一件事:轨迹是一种如何随着时间推移遵循路径的描述,如下图所示
在这篇文章中,我们将假设我们的任务计划器中的一组路点已经可用,并且我们希望为操作器生成一个轨迹,以便随着时间的推移遵循这些路点。我们将研究构建和执行轨迹的各种方法,并探索一些常见的设计权衡。
任务空间与关节空间
首先要做的设计选择之一是是否要生成一个关节空间或工作空间轨迹。
- 任务空间意味着路径点和插值都在机械臂上特定位置的笛卡尔位姿(位置和方向)上——通常是末端执行器。
- 关节空间表示路径点和插值直接在关节位置上(角度或位移,取决于关节类型)
主要的区别是,任务空间轨迹往往看起来比关节空间轨迹更“自然”,因为即使关节不是,末端执行器也会相对于环境平滑地移动。最大的缺点是,与关节空间轨迹相比,遵循任务空间轨迹需要更多地求解逆运动学(IK),这意味着很多更多的计算,特别是如果你的IK求解器是基于优化的。
[左]任务空间轨迹[右]关节空间轨迹
你可以从我们的机器人操纵,第1部分:运动学博客文章.下表还列出了在任务空间和关节空间中规划和执行轨迹的优缺点。
任务空间 |
关节空间 |
|
优点 |
|
|
缺点 |
|
|
轨迹类型
无论您选择的是任务空间还是关节空间轨迹,都有多种方法可以创建随时间插值姿态(或关节配置)的轨迹。现在我们将讨论一些最流行的方法。
梯形速度
梯形速度轨迹是恒加速度、零加速度和恒减速的分段轨迹。这导致了一个梯形速度剖面,和一个“线性段与抛物线混合”(LSPB)或s曲线位置剖面。
这种参数化使它们相对容易实现、调优和根据位置、速度和加速度限制等需求进行验证。
使用机器人系统工具箱,您可以使用trapveltraj函数在MATLAB或梯形速度剖面轨迹块在仿真金宝app软件。
多项式
你可以用不同阶数的多项式在两个路径点之间进行插值。在实践中最常用的顺序是:
- 立方(3理查德·道金斯order) -需要4个边界条件:两端的位置和速度
- 五次(5thorder) -需要6个边界条件:两端的位置,速度和加速度
类似地,高阶轨迹可用于匹配路径点位置的高阶导数。
多项式轨迹对于连续拼接速度和加速度为零或非零的分段非常有用,因为加速度曲线与梯形速度轨迹不同,是平滑的。然而,验证它们更加困难,因为不是直接调整最大速度和加速度,而是设置可能在轨迹段之间超出的边界条件。
使用机器人系统工具箱,您可以使用cubicpolytraj而且quinticpolytraj函数,或者多项式轨迹块在仿真金宝app软件。
下面的动画比较了路径点处速度为零的梯形速度轨迹(左)和路径点处速度为非零的五次多项式轨迹(右)。
样条
另一种构建插值轨迹的方法是通过样条。样条也是多项式的分段组合;但与多项式轨迹不同的是,它是时间上的多项式(所以每段都有一个多项式),样条是空间上的多项式,可以用来创建复杂的形状。计时方面通过以均匀的速度跟随产生的样条来实现。
样条有许多类型,但运动规划中常用的一种类型是b样(或基样条)。b样条是通过定义中间控制点来参数化的,样条并没有完全通过这些控制点,而是保证保持在这些点的凸包内。作为设计师,你可以调整这些控制点以满足运动要求,而不用担心轨迹会超出这些控制点。
二维b样条控制点的修改效果
在机器人系统工具箱中,可以使用bsplinepolytraj函数.
处理旋转
到目前为止,我们只展示了位置上的轨迹,但你可能还想控制末端执行器的方向。与位置不同,插值方向可能更具挑战性,因为角度是连续包裹的。对于欧拉角这样的方向表示,相同的位型有多种表示。
解决这个问题的一种方法是使用四元数插值方向,这是一种明确表示方向的方法。其中一种技术叫做球面线性插值(Slerp),该算法在两个角速度恒定的方向之间寻找围绕固定轴的最短路径。
使用机器人系统工具箱,您可以使用rottraj而且transformtraj函数,或者旋转轨迹而且变换轨迹block,分别在S金宝appimulink中。
使用Slerp方法在末端执行器上的旋转轨迹
虽然Slerp假设线性插值在一个恒定的速度,你可以结合什么是已知的时间标度改变轨迹的行为。您可以应用前一节中讨论的一些轨迹来“扭曲”时间向量,而不是以统一的时间间隔对轨迹进行采样。
例如,梯形速度时间缩放将使你的轨迹开始和结束每个段的速度为零,并在段的中间达到最大速度。使用下面的MATLAB命令,您可以创建和可视化梯形速度时间缩放的变换轨迹。
T0 = trvec2tform([0 0 0]);Tf = trvec2tform([1 2 3])*eul2tform([pi/2 0 pi/4],'ZYX');tTimes = linspace(0,1,51);tInterval = [0 5];[s,sd,sdd] = trapveltraj([0 1],numel(tTimes));[T,dT,ddT] = transformtraj(T0,Tf,tInterval,tTimes,'TimeScaling',[s;sd;sdd]);plotTransforms (tform2trvec (T) tform2quat (T));
用梯形速度时间尺度变换轨迹
接下来是什么?
我们已经介绍了几种为机器人操纵器生成运动轨迹的方法。由于轨迹是参数化的,它们给出了在任务空间或关节空间中位置、速度和加速度随时间变化的解析表达式。
获得位置的参考导数有助于验证轨迹是否符合安全极限,但也有利于对机械手的低级控制。例如,速度轨迹可以作为PID控制器的导数分支的直接输入;或者你可以用位置,速度和加速度来计算前进动力对于基于模型的控制器。如果你想了解更多关于机器人操纵器的低级控制,请查看我们的机器人操纵,第2部分:动力学和控制博客职位。
正如我们在这篇文章中所做的,我们从简单的运动学模型上设计轨迹开始。下一步是尝试使用动态模拟-范围从简单的闭环运动模型到一个全三维刚体仿真.
当然,最终目标是在您最喜欢的操作器硬件上进行尝试。
如果你想要更深入地了解轨迹规划,我发现这个演讲成为一个伟大的资源。要了解更多使用MATLAB和Simulink进行轨迹规划的知识,请观看我们的金宝app下面的视频而且从文件交换下载文件.
如有其他问题,请在下方留言或发邮件给我们roboticsarena@mathworks.com.
评论
如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。