学生休息室

分享学生如何在日常项目中使用MATLAB和Simulink的技术和现实例子#学生成功#金宝app

机器人机械手的轨迹规划

注意:虽然本文将专门讨论操纵器,但所讨论的许多概念也适用于其他类型的系统,如自动驾驶汽车和无人驾驶飞行器。

轨迹规划是整个问题的一个子集导航运动规划.运动规划的典型层次结构如下:

  1. 任务计划-设计一组高水平的目标,比如“去捡起你面前的物体”。
  2. 路径规划-生成从起点到目标点的可行路径。路径通常由一组连接的路点组成。
  3. 轨迹规划-为如何遵循给定的位置、速度和加速度等约束条件的路径生成时间计划。
  4. 轨迹后-一旦规划了整个轨迹,就需要有一个控制系统,能够以足够准确的方式执行轨迹。

最大的问题通常是“路径规划和轨迹规划的区别是什么?”如果你要带走一件事:轨迹是一种如何随着时间推移遵循路径的描述,如下图所示

在这篇文章中,我们将假设我们的任务计划器中的一组路点已经可用,并且我们希望为操作器生成一个轨迹,以便随着时间的推移遵循这些路点。我们将研究构建和执行轨迹的各种方法,并探索一些常见的设计权衡。

任务空间与关节空间

首先要做的设计选择之一是是否要生成一个关节空间工作空间轨迹。

  • 任务空间意味着路径点和插值都在机械臂上特定位置的笛卡尔位姿(位置和方向)上——通常是末端执行器。
  • 关节空间表示路径点和插值直接在关节位置上(角度或位移,取决于关节类型)

主要的区别是,任务空间轨迹往往看起来比关节空间轨迹更“自然”,因为即使关节不是,末端执行器也会相对于环境平滑地移动。最大的缺点是,与关节空间轨迹相比,遵循任务空间轨迹需要更多地求解逆运动学(IK),这意味着很多更多的计算,特别是如果你的IK求解器是基于优化的。

[左]任务空间轨迹[右]关节空间轨迹

你可以从我们的机器人操纵,第1部分:运动学博客文章.下表还列出了在任务空间和关节空间中规划和执行轨迹的优缺点。

任务空间

关节空间

优点

  • 运动是可预测的
    (任务空间插值)
  • 更好地处理障碍和碰撞
  • 更快的执行
    (只解决路点的IK)
  • 驱动器运动平稳,更容易验证

缺点

  • 慢的执行
    (每步解IK)
  • 执行器的运动不一定是平稳的,而且很难验证
  • 中间点不保证遵守关节极限或碰撞

轨迹类型

无论您选择的是任务空间还是关节空间轨迹,都有多种方法可以创建随时间插值姿态(或关节配置)的轨迹。现在我们将讨论一些最流行的方法。

梯形速度

梯形速度轨迹是恒加速度、零加速度和恒减速的分段轨迹。这导致了一个梯形速度剖面,和一个“线性段与抛物线混合”(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帐户或创建一个新帐户。