机器人的轨迹规划
注意:虽然这篇文章将专门讨论机械手,许多讨论的概念适用于其他类型的系统,如自动驾驶汽车和无人驾驶飞行器。
轨迹规划是整个问题的一个子集导航或运动规划.运动规划的典型层次如下:
- 任务计划-设计一套高水平的目标,比如“去捡你面前的东西”。
- 路径规划—生成从起点到目标点的可行路径。一条路径通常由一组连通的路点组成。
- 轨迹规划生成一个时间表,如何遵循给定的路径,如位置,速度和加速度。
- 轨迹后-一旦整个弹道计划完成,需要有一个控制系统,能够以足够精确的方式执行弹道。
最大的问题通常是"路径规划和轨迹规划有什么区别? "如果你想要拿走一件东西:一个轨迹是描述如何随着时间的推移遵循一条路径,如下图所示
在这篇文章中,我们将假设我们的任务规划器中的一组路径点已经可用,并且我们想生成一个机械手随时间跟随这些路径点的轨迹。我们将研究构建和执行轨迹的各种方法,并探索一些常见的设计权衡。
任务空间与关节空间
您拥有的第一个设计选择是是否要生成关节空间或工作空间轨迹。
- 任务空间表示路径点和插补位于机械臂(通常是末端执行器)上特定位置的笛卡尔位姿(位置和方向)上。
- 关节空间表示路径点和插值直接在关节位置上(角度或位移,取决于关节的类型)
主要的区别是,任务空间的轨迹往往比关节空间的轨迹看起来更“自然”,因为即使关节不是,末端执行器也会相对于环境平稳地移动。最大的缺点是,遵循任务空间的轨迹涉及到的逆运动学(IK)比关节空间的轨迹更多,这意味着很多更多的计算,特别是如果你的IK求解器是基于优化。
[左]任务空间轨迹[右]联合空间轨迹
你可以从我们的机器人操纵,第1部分:运动学博客.下表还列出了在任务空间和关节空间中规划和执行轨迹的优缺点。
任务空间 |
关节空间 |
|
优点 |
|
|
缺点 |
|
|
类型的轨迹
无论您选择的是任务空间轨迹还是关节空间轨迹,都有各种方法可以创建轨迹,随着时间的推移插值姿态(或关节构型)。现在我们将讨论一些最流行的方法。
梯形速度
梯形速度轨迹是恒定加速度、零加速度和恒定减速的分段轨迹。这就产生了一个梯形的速度剖面,以及一个“带有抛物线过渡的线段”(LSPB)或s曲线位置剖面。
这种参数化使得它们相对容易实现、调优和验证需求,如位置、速度和加速限制。
通过机器人系统工具箱,您可以使用trapveltraj函数在MATLAB或梯形速度剖面轨迹块在仿真金宝app软件。
多项式
可以使用不同阶次的多项式在两个路径点之间进行插值。实践中最常用的命令是:
- 立方(3理查德·道金斯-要求4个边界条件:位置和速度在两端
- 五次(5th-要求6个边界条件:位置,速度和两端的加速度
类似地,高阶轨迹可以用来匹配路径点位置的高阶导数。
多项式轨迹对于连续拼接零或非零速度和加速度段是有用的,因为加速度轮廓与梯形速度轨迹不同是平滑的。然而,验证它们是比较困难的,因为你现在不是直接调整最大速度和加速度,而是设置可能超出轨迹段之间的边界条件。
通过机器人系统工具箱,您可以使用cubicpolytraj和quinticpolytraj函数,或多项式轨迹块在仿真金宝app软件。
下面的动画比较了一个梯形速度轨迹与零速度在路径点(左)和五次多项式轨迹与非零速度在路径点(右)。
样条
另一种构建插值轨迹的方法是通过样条曲线。样条也是多项式的分段组合;但与多项式轨迹不同的是,多项式轨迹是时间上的多项式(所以每段都是一个多项式),样条曲线是空间上的多项式,可以用来创建复杂的形状。时序方面通过以匀速的结果样条来实现。
有许多类型的样条,但一种常用类型的运动规划是b样(或基样条函数)。b样条通过定义中间控制点来参数化,样条不完全通过中间控制点,而是保证停留在这些点的凸包内。作为一名设计师,你可以调整这些控制点以满足运动需求,而不必担心轨迹超出这些点。
修改2D b样条控制点的效果
在“机器人系统工具箱”中,可以使用bsplinepolytraj函数.
处理旋转
到目前为止,我们只给你们展示了位置上的轨迹,但是你们可能还想控制末端执行器的方向。与位置不同的是,由于角度是连续缠绕的,所以插入方向可能更有挑战性。对于一些像欧拉角这样的方位表示,相同的位形有多种表示。
解决这个问题的一种方法是使用四元数插值方向,这是一种明确表示方向的方法。其中一种技术叫做球面线性插值(Slerp),它能在两个方向之间以恒定的角速度绕一个固定的轴寻找最短路径。
通过机器人系统工具箱,您可以使用rottraj和transformtraj函数,或旋转轨迹和变换轨迹模块分别在Simul金宝appink中。
利用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部分:动力学和控制博客职位。
正如我们在这篇文章中所做的,我们从设计简单运动学模型的轨迹开始。下一步是尝试使用动态模拟-范围从任何地方简单的闭环运动模型到一个全三维刚体模拟.
当然,最终目标是在您喜欢的操纵器硬件上尝试这一点。
如果你想要更深入的轨道规划知识,我发现这个演讲成为一个很好的资源。要了解更多关于MATLAB和Simulink的轨迹规划,请观看我们的金宝app下面的视频和从“文件交换”下载文件.
如有其他问题,请在下方留言或发邮件至roboticsarena@mathworks.com.
评论
请点击留下评论在这里登录到你的MathWorks帐户或创建一个新的。