学生休息室

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

机器人操纵器的轨迹规划

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

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

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

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

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

任务空间与联合空间

您拥有的第一个设计选择之一是您是否要生成一个联合空间工作空间轨迹。

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

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

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

您可以了解更多关于Sanipulator Kinematics的信息机器人操作,第1部分:运动学博客帖子.下表还列出了规划和执行任务空间与联合空间的轨迹的优缺点。

任务空间

关节空间

优点

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

缺点

  • 慢的执行
    (每次步解IK)
  • 致动器运动不一定平稳,验证难度较大
  • 中间点不能保证尊重联合限制或碰撞

轨迹的类型

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

梯形速度

梯形速度轨迹是恒速加速度,零加速度和恒定减速的分段轨迹。这导致梯形速度曲线和“具有抛物线混合物”(LSPB)或S曲线位置轮廓的“线性段”。

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

与机器人系统工具箱,您可以使用trapveltraj功能在MATLAB或梯形速度剖面轨迹块在Si金宝appmulink中。

多项式

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

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

类似地,高阶轨迹可用于匹配在航点处的高阶导数。

多项式轨迹可用于连续缝合具有零或非零速度和加速度的段,因为加速曲线与梯形速度轨迹不同。但是,验证它们是更困难的,因为您现在正在设置可能在轨迹段之间遮光的边界条件的最大速度和加速度。

与机器人系统工具箱,您可以使用cubicpolytraj.quinticpolytraj函数,或多项式轨迹块在Si金宝appmulink中。

下面的动画将梯形速度轨迹比较在Waypoints(左)上的零速度和在航点(右)的非零速度的Quintic多项式轨迹。

样条

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

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

修饰控制点对2D B样条的影响

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

处理旋转

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

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

与机器人系统工具箱,您可以使用rottrajTransfortraj.函数,或旋转轨迹变换轨迹分别在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控制器导数分支的直接输入;或者你可以用位置、速度和加速度来计算前进动力基于模型的控制器。如果你想了解更多关于机器人操作手的低级控制,请查看我们的机器人操纵,第2部分:动态和控制博客职位。

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

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

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

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

|

评论

要发表评论,请点击在这里要登录您的MathWorks帐户或创建新的。