文章目录

  • 运动规划、路径规划和轨迹规划
    • 路径规划算法
      • 随机采样的算法
      • 梯度下降法
    • 轨迹规划算法
      • 基本思路
      • 开源算法介绍
    • 总结
    • 参考资料:

运动规划、路径规划和轨迹规划

机器人的运动规划可以看做是包括了路径规划和轨迹规划两个步骤,目的是根据给定的任务,计算出一条可以下发给机器人控制器去执行的轨迹。

路径规划,顾名思义就是在有障碍的空间里找出一条没有碰撞的路径来,一般情况下,这些路径都由一系列的离散点来表示,相邻的点进行线性插值,确保每个离散点和中间的插值点都不会有碰撞。

轨迹规划是根据路径规划生成的离散点,计算一条连续的满足机器人运动学、动力学约束的包含时间信息的轨迹。在轨迹上按照实际的伺服周期采样位置点,下发给伺服控制器,从而使机器人运动到目标位置。











































路径规划









生成一些列无碰撞的离散点









轨迹规划









生成连续的轨迹







路径规划算法

路径规划算法一般包括基于随机采样和梯度下降两种。如果某种算法保证在一定时间内可以找到一个解,则具有完备性;如果求出来的解是最优解,则具有最优性。评价路径的优劣一般和优化目标有关系,通常除了不碰撞之外,还会设置路径长度、平滑性的优化目标,希望最终找到一条路径最短、最平滑、无碰撞的路径。比如说,两点之间,有无数中路径可以到达,但是两点直线连接则是路径最短的一条,如果这条直线还没有和周围障碍碰撞,那么就是最优的。

随机采样的算法

开源的OMPL实现了很多中基于随机采样的算法

  • RRT:基于采样的算法,成功率较高,但是因为随机采样,即便是相同的环境和初始条件,规划出来的路径每次也可能不同

  • PRM:也是基于采样,不过是先通过离线采样建立一个联通的路图,在根据任务进行最优搜索

梯度下降法

  • 势场法:将障碍物看做一个能够向外产生推力势场的源,利用优化的算法逐次迭代求解,对于简单场景可以保证结果的一致性,但复杂情况下,成功率可能不高,可以参考ROS MoveIT的CHOMP,TrajOpt模块

随机采样的算法对于碰撞检测库的要求是只需要知道是否碰撞即可,而势场法需要知道当前状态下碰撞梯度信息(距离碰撞物的距离,越远则势场越小,越近则势场越大)。

轨迹规划算法

基本思路

路径规划输出的是一系列离散的路径点(waypoint),并不能直接发给机器人执行,需要首先生成一条平滑的连续路径(path)来把这些点串起来;然后再根据机器人各个轴最大速度、加速度等限制,生成带有时间信息的连续轨迹。

轨迹规划第一步是根据离散的路径点生成的路径p(s)p(s)p(s),需要保证路径的连续,也就是位置、切线、曲率等的连续。

p(s):通过所有路径点的几何路径,比如样条曲线、贝赛尔曲线q(t):带有时间信息的轨迹,按照插补周期采样下发给控制器s(t):时间参数q(t)=p(s(t))q˙(t)=p′(s)s˙q¨(t)=p′′(s)s˙2+p′(s)s¨轨迹规划需要满足速度、加速度、加加速度的约束:q˙min≤q˙(t)≤q˙maxq¨min≤q¨(t)≤q¨max\begin{aligned}p(s)&: 通过所有路径点的几何路径,比如样条曲线、贝赛尔曲线\\q(t)&: 带有时间信息的轨迹,按照插补周期采样下发给控制器\\s(t)&: 时间参数\\[3ex]q(t) &= p(s(t)) \\\dot q(t) &= p'(s)\dot s\\\ddot q(t) &= p''(s)\dot s^2 + p'(s)\ddot s\\[5ex]轨迹规划&需要满足速度、加速度、加加速度的约束:\\[3ex]\dot q_{min} &\leq \dot q(t) \leq \dot q_{max}\\\ddot q_{min} &\leq \ddot q(t) \leq \ddot q_{max}\\\\\end{aligned} p(s)q(t)s(t)q(t)q˙(t)q¨(t)q˙minq¨min:线线::=p(s(t))=p(s)s˙=p(s)s˙2+p(s)s¨q˙(t)q˙maxq¨(t)q¨max
轨迹规划的第二步是生成一条时间参数曲线s(t)s(t)s(t),确保轨迹的速度、加速度等不超过限制。

上面说的两步有时也可以合并为一步,直接计算q(t)q(t)q(t),具体采用哪种方式和算法有关系。

开源算法介绍

连续性是轨迹规划的基础,在此之上,再有时间最优(Time Optimal)、最小加加速度(Minimum Jerk)等不同的优化目标。

Ros 的 MoveIT的模块Time Parameterization包含了三种轨迹规划算法:

  • Iterative Parabolic Time Parameterization,IPTP
  • Iterative Spline Parameterization,ISP
  • Time-optimal Trajectory Generation,TOTP

这三种方法都可以实现在关节空间规划加速度约束的时间最优轨迹,以为加加速度不约束,所以规划出来的结果,加速度是要么最大、要么最小、要么零,即Bang-Bang Trajectory。

和TOTP类似的一种算法是Toppra,它的实现比Totp更简单一些,且对路径不做要求,而Totp要求路径必须是采取直线-圆弧过度的方式。

对于加速度连续轨迹,Toppra的作者提出了Totp3算法,但是过于复杂,至今没有比较好的实现。可以参考的论文:

  • Smooth Time Optimal Trajectory Planning for Industrial Manipulators, PhD thesis by Daniela Constantinescu
  • Optimal trajectory planning for industrial robots by A. Gasparetto *, V. Zanotto

以上介绍的都是离线轨迹规划,轨迹都是通过一系列点的,计算时间一般在几十到几百ms,甚至更长。

如果轨迹需要实时调整,比如改变速度、目标位置,那么就需要实时计算轨迹,也就是在线轨迹规划,一般要求计算时间要控制在几ms。

对于***点到点(Point-to-Point)***的轨迹规划,因为只要两个点,时间最优轨迹就是双S速度曲线轨迹,一般点到点计算速度快,大多可以用于在线规划。

  • RML库实现了这个算法,但是其只开源了速度连续的部分,加速度连续部分并没有开源,因为计算速度很快,也适用于在线计算。
  • OptControl,这也是ros的一个模块,基本实现了和RML相同的功能,但是使用上稍显复杂。
  • OJET,也是计算Double S轨迹的,可以在网页上试用。

总结

目前在工业上还是很少有用到路径规划的,随机采样算法不能保证一致性,难以满足工业严格的节拍要求;势场法可能会陷入局部最优,导致最终优化失败(这也是所有基于优化的算法的一个难题)。对于可靠性要求极高的工业项目,这是难以接受的。工业现场的大多数场景还是离线编程与现场示教。随着3D视觉的持续发展,也出现很多把实时路径规划技术应用到抓取项目中的案例,国内做3D视觉的公司,几乎都在同时做抓取、播种等机器人相关方案,比如武汉的库伯特,上海的梅卡曼德等,国外做Bin Picking的更多了,传统的机器人厂商之外,还有很多只做视觉产品、软件的公司,如日本MUJIN,美国Energid。

机器人视觉 Pick-it 3D 智能分拣机器人 - [YouTube]

轨迹规划机器人公司是必须要做的,一般机器人示教器都提供了MoveL/MoveJ/MoveC等运动指令,属于点到点的轨迹,采取梯形或者双S轨迹,如果是多个点的话,会有一些过渡、融合的(blending)算法,从而让机器人在中间无需停止。但是很少有机器人公司直接提供样条曲线、时间最优轨迹等模块给用户使用。

参考资料:

  1. Toppra: Pham, Hung & Pham, Quang Cuong. (2018). A New Approach to Time-Optimal Path Parameterization Based on Reachability Analysis. IEEE Transactions on Robotics. 34. 645 - 659. 10.1109/TRO.2018.2819195.
  2. Totp: Kunz, Tobias & Stilman, Mike. (2012). Time-Optimal Trajectory Generation for Path Following with Bounded Acceleration and Velocity. 10.15607/RSS.2012.VIII.027.
  3. RML
    1. -http://www.reflexxes.ws/
    2. https://github.com/Reflexxes/RMLTypeII
    3. Kröger, Torsten. (2010). On-Line Trajectory Generation in Robotic Systems - Basic Concepts for Instantaneous Reactions to Unforeseen (Sensor) Events. 10.1007/978-3-642-05175-3.
  4. OptimalConntrol:
    1. Marius Beul and Sven Behnke: Fast Full State Trajectory Generation for Multirotors
      In Proceedings of International Conference on Unmanned Aircraft Systems (ICUAS), Miami, FL, USA, June 2017
    2. Marius Beul and Sven Behnke: Analytical Time-optimal Trajectory Generation and Control for Multirotors
      In Proceedings of International Conference on Unmanned Aircraft Systems (ICUAS), Arlington, VA, USA, June 2016
    3. https://github.com/AIS-Bonn/opt_control
  5. 比较好的教材:
    1. Luigi Biagiotti · Claudio Melchiorri, Trajectory Planning for Automatic Machines and Robots:一本比较全面的介绍轨迹规划的教材
    2. Modern Robotics: Mechanics, Planning, and Control , https://github.com/NxRLab/ModernRobotics

机器人运动规划技术介绍相关推荐

  1. 机器人运动控制算法专栏介绍

    机器人运动控制算法专栏介绍 本博客专栏将从理论到实践进行全面讲解,从机器人运动控制的基础理论到代码实现,读者将能够全面了解机器人运动控制的关键环节.本专栏从数学公式的推理,到代码实现的详细阐述,读者将 ...

  2. 机器人运动规划调研(pending)

    文章目录 前言 发展历程 通用运动规划方法 基于自由空间 Cfree几何构造的规划方法 可视图法 前言 阅读移动机器人运动规划研究综述心得 总结一下,机器人运动规划的发展历程,算法和思路. 搜索策略和 ...

  3. 【IEEE2014】EET:基于采样的机器人运动规划中的平衡勘探与开发

    EET:基于采样的机器人运动规划中的平衡勘探与开发 摘要: 本文提出了一种用于运动规划的探索/利用树(EET)算法.EET规划者故意用概率的完整性来换取计算效率.这种权衡使EET规划器能够比最先进的基 ...

  4. rk3288 img打包工具_【个人开源】机器人运动规划学习工具箱使用说明

    最近的课题与机器人的运动规划有关.回顾过去的学习经历,深感机械出身的我们编程实践与总结能力实在太弱,以前的一些课题就拿matlab随便写一写m文件出个结果了事,许多后来发现有用的课程或作业,要么找不到 ...

  5. 13_Course Summary_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】

    课程回顾 最开始讨论了在网格上移动的机器人的路径规划问题,引入了图的概念,图中节点对应机器人可以到达的离散位置,边缘对应位点间的路径. 对于这些基于网格的问题,我们讨论了广度优先搜索[Breadth ...

  6. 10_Rapidly Exploring Random Trees_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】

    在随机路图算法中,基本思路是建立一个由随机样本点和连接它们的边组成的路标图,一旦建立完成,就可以将想要的起点和终点通过路标图建立连接,得到一条可行路径.注意第一阶段建立的是一般路标图,并未考虑将任何一 ...

  7. 1_Grassfire Algorithm_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】

    用0作为距离值标记目标节点,给所有距离目标节点1步的点标上1,距离2的标上2-以此类推,直至抵达起点. 对于网格中的节点,标上的距离值代表的是从这个点走到目标点的最少步数.会发现这些数字从目标点向外辐 ...

  8. 11_Artificial Potential Field_宾夕法尼亚大学机器人运动规划专项课程【学习笔记】

    1. Constructing Artificial Potential Field 本节将讲解如何在人工势场中引导机器人在充满障碍物的环境中运动,基本思路是在位形空间内构造一个平滑函数[smooth ...

  9. 深蓝学院-机器人运动规划学习笔记-第一章

    第一课 移动机器人运动规划 Motion planning for mobile robots Introduction Course outline Typical planning methods ...

  10. 机器人运动规划:TOPP轨迹后处理开源方案基础版整理

    文章目录 写在前面 TOPP基础版整理 总结一下Time Parameterization Algorithms [Iterative Parabolic Time Parameterization] ...

最新文章

  1. air调用java,AIR2.0入门教程:与Java应用交互
  2. 从零开始学OpenDaylight(碳版本)之三:Hello示例
  3. 改变TabNavigator控件第一个tab标签的偏移量.
  4. 19、Power Query-快速分析各产品的销售情况
  5. linux权限-m,Linux笔记:权限管理
  6. 优化-浏览器缓存和压缩优化
  7. 7-41 PAT排名汇总 (25 分)(详解+思路+重写sort函数)兄弟们冲呀呀呀呀呀呀呀
  8. 答案 石头剪刀布 编码过程 0912
  9. Apache本地环境部署
  10. 陆奇、雷军、熊晓鸽聊疫情后的创业风口
  11. kafka创建topic_ELK-基础系列(六)-ELK加入消息队列-Kafka部署
  12. Idea 新建类 快捷键
  13. AFNetworking-RequestSerializer
  14. 理解设计模式——代理模式
  15. allure的安装使用以及报告的生成
  16. java excel 取消科学计数法_java使用poi解析或处理excel的时候,如何防止数字变成科学计数法的形式...
  17. Linux_2022/7/19_Day1
  18. 淘宝装修之模块之间有间隙(淘宝装修一)
  19. 使用Python对植物大战僵尸学习研究
  20. 什么是反向 DNS?使用场景是什么?如何反向DNS查找,怎样配置?

热门文章

  1. php格林威治时间,时间戳与格林威治时间互相转换
  2. 红米note3双网通丨标注:2015617_官方线刷包_救砖包_解账户锁
  3. ToolBar修改返回按钮图标
  4. CSMA/CD与CSMA/CA的区别
  5. UFS/EMMC压力测试
  6. unit怎么发音_unitl是什么意思
  7. html项目符号正方形,html 项目符号
  8. 手把手教你搭建SpringCloud项目(十)集成OpenFeign服务接口调用
  9. 关于我写公众号的目的和原因
  10. Java编程那些事儿2——程序设计是什么?