学生休息室

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

机器人轨迹规划

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

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

  1. 任务计划-设计一套高层次的目标,比如“去捡起你面前的东西”。
  2. 路径规划-生成从起点到目标点的可行路径。一条路径通常由一组相连的路点组成。
  3. 轨迹规划-生成一个时间计划,如何遵循给定的路径,如位置,速度和加速度。
  4. 轨迹后-一旦规划好了整个轨迹,就需要一个控制系统,能够足够精确地执行轨迹。

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

在这篇文章中,我们将假设任务规划器中的一组路径点已经可用,并且我们想为一个机械臂生成一个轨迹来随时间跟随这些路径点。我们将研究构建和执行轨迹的各种方法,并探索一些常见的设计折衷。

任务空间vs.关节空间

您的第一个设计选择是是否要生成一个关节空间工作空间轨迹。

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

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

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

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

任务空间

关节空间

优点

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

缺点

  • 慢的执行
    (每次步解IK)
  • 致动器运动不一定平稳,验证难度较大
  • 中间点不保证考虑关节极限或碰撞

类型的轨迹

不管你是选择任务空间轨迹还是关节空间轨迹,都有各种方法来创建轨迹,随时间的推移插值姿态(或关节配置)。现在我们将讨论一些最流行的方法。

梯形速度

梯形速度轨迹是恒定加速度、零加速度和恒定减速的分段轨迹。这导致了梯形速度剖面,以及“带有抛物混合的线段”(LSPB)或s曲线位置剖面。

这种参数化使得它们相对容易实现、调整和根据位置、速度和加速度限制等需求进行验证。

与机器人系统工具箱,您可以使用trapveltraj函数在MATLAB或梯形速度剖面轨迹块在仿真金宝app软件。

多项式

你可以用不同阶数的多项式在两个路径点之间进行插值。在实践中最常见的顺序是:

  • 立方(3理查德·道金斯要求4个边界条件:两端的位置和速度
  • 五次(5th需要6个边界条件:位置、速度和两端的加速度

类似地,高阶轨迹可以用来匹配路径点位置的高阶导数。

多项式轨迹对于连续拼接速度和加速度为零或非零的段是有用的,因为加速度轮廓是光滑的,不像梯形速度轨迹。然而,验证它们是更加困难的,因为不是直接调整最大速度和加速度,而是现在设置边界条件,可能超出轨道段之间。

与机器人系统工具箱,您可以使用cubicpolytrajquinticpolytraj函数,或多项式轨迹块在仿真金宝app软件。

下面的动画比较了一个在路径点处速度为零的梯形轨迹(左)和一个在路径点处速度非零的五次多项式轨迹(右)。

样条

另一种建立插值轨迹的方法是通过样条。样条也是多项式的分段组合;但与多项式轨迹不同的是,它是时间上的多项式(所以每个分段都有一个多项式),样条是空间上的多项式,可以用来创建复杂的形状。时序方面是通过以匀速跟随得到的样条曲线来实现的。

样条曲线有很多类型,但运动规划中最常用的类型是b样(或基样条函数)。b样条通过定义中间控制点参数化,这些控制点不是样条经过的,而是保证留在这些点的凸包内。作为一名设计师,你可以调整这些控制点以满足运动要求,而不必担心轨迹会超出这些点。

修改二维b样条控制点的效果

在机器人系统工具箱中,您可以使用bsplinepolytraj函数

处理旋转

到目前为止,我们只展示了位置上的轨迹,但你们可能还想控制末端执行器的方向。不像位置,插值方向可能更有挑战性,因为角度是连续包裹的。有了一些像欧拉角这样的方向表示法同样的构型有多种表示法。

解决这个问题的一种方法是使用四元数插值方向,这是一种明确表示方向的方法。其中一种技术被称为球面线性插值(Slerp),求出绕固定轴具有恒定角速度的两个方向之间的最短路径。

与机器人系统工具箱,您可以使用rottrajtransformtraj函数,或旋转轨迹变换轨迹分别在Simulin金宝appk中使用。

基于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,“时间表”,[s; sd sdd]);plotTransforms (tform2trvec (T) tform2quat (T));

变换轨迹与梯形速度时间缩放

接下来是什么?

我们已经介绍了几种生成机器人运动轨迹的方法。由于轨迹是参数化的,它们给出了任务空间或关节空间中位置、速度和加速度随时间变化的解析表达式。

有位置的参考导数是有用的,以验证轨迹的安全限制,但也伟大的低水平控制您的机械手。例如,速度轨迹可以作为PID控制器导数分支的直接输入;或者你可以用位置、速度和加速度来计算前进动力基于模型的控制器。如果你想了解更多关于机器人操作手的低级控制,请查看我们的机器人操作,第二部分:动力学和控制博客职位。

正如我们在这篇文章中所做的,我们从在简单的运动学模型上设计轨迹开始。下一步是尝试使用动态模拟-范围从简单的闭环运动模型到一个全三维刚体仿真

当然,最终目标是在您喜欢的操作器硬件上进行尝试。

如果你想了解更深入的轨道规划知识,我发现这个演讲成为一个伟大的资源。要了解更多关于MATLAB和Simulink的轨迹规划,请观看我们的金宝app下面的视频从文件交换下载文件

如果你还有其他问题,请在下方留言或发邮件给我们roboticsarena@mathworks.com

|

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。