机器人应用中经常要求机器人平滑地沿一条路径运动,并不停顿地经过一个或多个中间节点。这样做或许是要在工作空间中避开障碍物,也可能是为了执行一项需要高精度连续轨迹的任务,如在制造业中要涂抹一圈密封胶。

为了使问题一般化,考虑该轨迹含有 NNN 个中间点 xkx_kxk​,k∈[1,N]k\in [1, N]k∈[1,N],因此有 N−1N-1N−1 个运动段。设 xk∈RMx_k\in\mathbb{R}^Mxk​∈RM 是位姿的一种向量表示。

机器人从静止状态 x1x_1x1​ 开始运动,到 xNx_NxN​ 结束停止,但在通过(或接近)中间点时不能停顿。生成这个运动轨迹的最大问题是过约束。为了实现速度连续,我们只能舍弃让轨迹能达到每个中间点。在一维情况下这个问题更容易理解,如图所示。该运动轨迹包括直线运动段与多项式曲线段的混合,如同lspb函数,但在这里我们选择了五次多项式,因为它们能够满足位置、速度和加速度在起点和终点的边界条件。

轨迹的第一段从速度为零的初始位姿 x1x_1x1​ 开始加速,然后汇接入指向第二个位姿 x2x_2x2​ 的直线段。汇接时间被设为常数 tacct_{acc}tacc​,在到达 x2x_2x2​ 之前的 tacc/2t_{acc}/2tacc​/2 时间,直线轨迹又汇接上一段多项式曲线,持续 ttt 时间后再次汇接到从 x2x_2x2​ 到 x3x_3x3​ 的直线段,然后就一直重复这一过程。可以给每个直线段设定一个恒速值 x˙k\dot{x}_kx˙k​。因此,汇接混合中的平均加速度是
x¨av=x˙k+1−x˙ktacc\ddot{x}_{av}=\dfrac{\dot{x}_{k+1}-\dot{x}_k}{t_{acc}} x¨av​=tacc​x˙k+1​−x˙k​​如果该轴的最大加速能力已知,那么就可以计算出最小混合时间(该轴会达到其峰值加速度,而不是平均加速度。在五次多项式系数已知时,可以用五阶多项式的二阶导数计算出混合的峰值加速度)。
对于多轴的情况,很可能在某个特定运动段其中一些轴要比其他维度需要移动更多距离,而如果各个关节有不同的速度限制时,将会使轨迹生成变得复杂。为解决上述问题,第一步需要确定哪个轴将是完成最慢的,依据是每个轴对应这个运动段的运动距离以及该轴最大可达速度。这样可以算出该段的运动持续时间和各轴实际所需的速度。这确保了所有轴在同一时间达到下一个目标 xkx_kxk​。
工具箱函数mstraj可以基于中间点矩阵生成一个多段多轴轨迹。例如,有 444 个中间点的两轴运动可以用以下方法生成:

>> via = [ 4,1; 4,4; 5,2; 2,5 ];
>> q = mstraj(via, [2,1], [], [4,1], 0.05, 0);

函数mstraj的第一个参数是中间点矩阵,每点对应矩阵的一行。剩余的参数分别是:每轴的最大速度向量,每段的运动时间向量,起点各轴坐标,采样时间间隔,以及加速时间。函数mstraj返回一个矩阵,行对应的是时间每步,列对应的是各个轴。在没有提供输出参数时mstraj将直接绘制出轨迹曲线,如图所示。从这个例子所给的参数表明,第一个轴的最大速度比第二个轴更大。然而在最后一个运动段,两轴是以相同的速度运动的,因为这段的运动时间是由最慢的轴决定的。

如果增加加速时间:

>> q = mstraj(via, [2,1], [], [4,1], 0.05, 1);


轨迹会变得更圆滑,如上图所示。这是因为增加加速时间意味着轨迹上可以有更多的时间来完成多项式曲线段的混合。该函数也接受可选的起点和终点的速度参数,而且 tacct_{acc}tacc​ 可以是一个向量,给出每次混合的加速度时间。

值得注意的是,这个函数只是简单地对向量代表的位姿进行插值。在这个例子中,向量被假定为笛卡儿坐标向量,但这个函数也适用于欧拉角或横滚-俯仰-偏航角,然而这个函数不是对坐标系旋转进行插值的理想方式。有关对姿态的插值我们后面会继续讨论。

机器人学——2.2-分段轨迹相关推荐

  1. 轨迹聚类之分段聚类方法总结

    目录 2.距离函数 2.1 轨迹距离函数 3.轨迹分段 3.1 MDL原则 参考资料 现有的轨迹聚类算法可分为两类: 一种是基于整体的轨迹聚类,即将一条轨迹视为一个整体而对其不做分段,通过定义轨迹的相 ...

  2. GPS/轨迹追踪、轨迹回放、围栏控制

    折腾一个多月终于弄完了这个项目,起初都未曾接触GPS/轨迹追踪.轨迹回放.圈划围栏...等一些在百度地图或者Googel地图操作的一些业务,后端的业务相对来说简单点 cas单点登录,mongdb灵活的 ...

  3. GPS轨迹聚类算法TRACLUS介绍(四)

    线段聚类LINE SEGMENT CLUSTERING 这篇博客将说明TRACLUS算法的归组聚类阶段.首先,先讨论线段的密度属性:其次,介绍基于密度的聚类算法DBSCAN:然后,介绍计算线段聚类中代 ...

  4. 轨迹预处理(轨迹清洗)

    轨迹 轨迹由一系列轨迹点组成,单个轨迹点通常包含三个属性,经度(lng) ,纬度(lat),以及时间戳(timestamp): 1. 轨迹分段 轨迹采集的过程中由于硬件设备信号的不稳定,容易丢失部分轨 ...

  5. 【附源码和详细的公式推导】Minimum Snap轨迹生成,闭式求解Minimum Snap问题,机器人轨迹优化,多项式轨迹路径生成与优化

    该篇博客内容较多,工作量也很大,难免在理解上表达上有错误,如有发现烦请指教.如有问题在博客中留言,或者github的仓库中提Issues都行,看到后我会尽快回复. Minimum Snap源代码:Mi ...

  6. [运动规划算法]基于飞行走廊的轨迹优化

    文章目录 简介 一.介绍 二.原理 飞行走廊生成 三.项目演示 参考 简介 Btraj是一个在线的四旋翼无人机的运动规划框架,主要用于未知环境中的自主导航.基于机载状态估计和环境感知,采用基于快速行进 ...

  7. 【论文笔记】虚拟领导者控制编队机动

    [名称]Formation control of unmanned micro aerial vehicles for straitened environments [刊物]Autonomous R ...

  8. 阿里云GanosBase升级,发布首个云孪生时空数据库

    简介: GanosBase是李飞飞带领的达摩院数据库与存储实验室联合阿里云共同研发的新一代位置智能引擎:本次重磅升级为V4.0版本,推出首个云孪生时空数据库. 作者 | 谢炯 来源 | 阿里技术公众号 ...

  9. 数字视频稳定处理面临的困难

    数字视频稳定处理面临的困难 作者:谢家荣 数字视频稳定处理的方法 1.处理方法的分类与步骤 从宏观的角度来看,数字视频稳定的处理方法分为实时处理和后期处理.实时处理是将传感器捕获到的视频图像中的每一帧 ...

最新文章

  1. 封闭已久的智能驾驶系统,在云栖大会上,被敲开一个裂缝
  2. 11G中自动收集统计信息
  3. JVM史上最最最完整深入解析,不看后悔一百次!
  4. 人事软件测试自学,自学软件测试什么课程
  5. 超牛逼的异步协程爬虫
  6. 网购到火车票 浅析淘宝和12306网站架构
  7. 苹果7手机html5测试,HTML5 基础测试题
  8. codevs1079 回家
  9. 网页无障碍php,【译】开发无障碍的Web组件
  10. C++ 原子操作和内存模型
  11. MATLAB学习笔记
  12. html页面调节图片大小,怎么用css设置图片大小?
  13. 百度AI市场热品试用 | 台面式双目活 体检测USB摄像头
  14. c/c++中的内存分配器
  15. 第五章 全连接神经网络
  16. 常见的NoSQL数据库有哪些
  17. linux遇到nul字符,linux TXT文件操作 '^@ ' 'NUL' 符号乱码问题
  18. 记录一次minerd肉鸡木马的排查思路
  19. 如何进入UI设计行业 相关学习路线是什么
  20. LM4f232H5QD评估板 资料 汇总

热门文章

  1. 串口通信基本知识及实例开发1(Com口通信简介)
  2. linux下修改DNS服务
  3. MacOS搭建OMNeTpp+Veins+SUMO车联网仿真平台
  4. usb3.0 u盘 安装 linux,在16G USB3.0中安装ubuntu10.10成功!U盘功能可用
  5. 算法—递归生成斐波那契数列
  6. 成长性因子选股(1)
  7. Rust随机数库rand rand_core rand_chacha等
  8. EL表达式与JSTL简单入门
  9. Android adb 设置和获取系统属性
  10. 如何和业务方建立良好的合作关系