干货 | 机器人的运动规划方法和应用现状

news2025/5/30 14:38:12

如今,机器人正在更深入的服务于人类,它们要想完成的一些力所能及的操作,都需要依托于机器人的运动规划。本期技术干货,我们邀请到了小米工程师——‍孙国康,向我们介绍机器人的运动规划方法和应用现状。

一、前言

近年来,机器人技术进一步发展,机器人也越来越接近我们的生活。北京冬奥会的智能餐厅里, 机器人自主完成炒菜、出餐、送餐;布拉格酒吧昏暗的灯光下,机器人调酒师正优雅的完成一杯杯鸡尾酒的制作。早已不止在工厂,机器人正在更深入的服务于人类,完成它们力所能及的事情。那机器人是如何完成的这些操作功能呢?

视频1:几种机器人在生活场景中的应用

视频来源:7 Amazing Robotic ARMS (Chef, Barista, Barteder) for Food and Beverage Industry - YouTube

机器人完成上述功能的基础之一是产生和上述功能相匹配的运动,而控制机器人的运动离不开机器人的运动规划。机器人的运动规划是使机器人从当前点避开所有可能的障碍物到达目标点的过程,这个过程可以分成两部分,一是无碰撞路径的生成,二是路径的光滑化。无碰撞路径的生成又叫路径规划,路径的光滑化又叫轨迹规划。

路径规划一般可以得到从起点到终点的一系列路径的散点,轨迹规划是将路径的散点赋予时间信息,得到机器人可执行的控制指令。这篇文章将通过路径规划和轨迹规划原理的介绍及应用,对机器人运动规划方法进行浅析。

二、运动轨迹之路径规划

>>>> 2.1 原理介绍

本文首先通过点状物体在二维空间中的路径规划来描述清楚常用几种路径规划方法是如何工作的,再将其扩展到高维空间,使读者对路径规划方法有一个大体的认识。

2.1.1 基于网格的方法

基于网格的方法首先将机器人所在的空间离散为网格,并且通过碰撞检测,得到机器人可以运动的自由空间。然后在自由空间中进行路径搜索,搜索出一个从初始状态到目标区域的某一网格点的运动。基于网格使用图搜索算法,能够在给定的图中得到完备且最优的路径。

90ab53cf995cdd39235ad08b7f8abf4e.jpeg

图片:基于网格方法路径规划示意

图片来源:https://ai.nju.edu.cn/_upload/tpl/00/d7/215/template215/Robot.html

2.1.2 基于采样的方法

基于采样的方法为了提高求解速度,放弃进行最优解的求取,而只求取满意解。基于采样的方法不再将空间进行网格划分,而是通过随机选点的方法进行空间探索。主要有随机路图法(PRM)和快速搜索随机树法(RRT)两类方法。

随机路图法的原理是在空间中通过随机采样选取不碰撞的点,然后再将两点连接,得到随机路图。得到随机路图后,采用路径搜索算法搜索得到规划的无碰撞路径。下面的视频能很好的使这一过程可视化。

676aa53e040f5dde65ba87b21f4f3525.gif

视频:随机路图法路径规划过程示意

视频来源:https://www.youtube.com/watch?v=gP6MRe_IHFo

快速搜索随机树法方法是用树来表示这个过程。该方法是先在空间中随机采样采一个点,然后将这个点与原来树的最近点连在一起,若连接线没有发生碰撞,则将该采样点添加到搜索树。按照这种方法不断扩展搜索树,并且最终连到目标位置。基于采样的方法在采样点足够多时总能找到一组无碰撞的路径,但它不一定是最优的。

4bc3df7c2a39e678dc2877ffc857783f.gif

视频:快速搜索随机树法路径规划过程示意

视频来源:https://www.youtube.com/watch?v=Ob3BIJkQJEw


2.1.3 人工势场法

人工势场法进行规划的基本方法是:以机器人目标位置做为引力场,以障碍物作为斥力场,基于引力场和斥力场之间的关系计算机器人所受的合力,合力的方向以及大小为机器人所需的速度方向和大小。

如下面的视频所示,根据目标点和障碍物建立起势场,而机器人在势场的作用力的引导下走到目标点。人工势场法在复杂环境下,容易陷入局部极值的情况,可能找不到解,也求不出最优解。但人工势场法的计算速度快,容易和控制算法相结合。

4e3e232f4e381ab0b3ff27c4fc420bc9.gif

视频:人工势场法规划过程示意

视频链接:https://www.youtube.com/watch?v=O17-hhekXSY



 >>>> 2.2 在机械臂运控中的应用

2.2.1 C空间

前述路径规划算法是针对一个点在二维空间来进行路径规划的,而实际的机器人有体积而且自由度更高。实际机器人的路径规划一般在位形空间(C空间)中进行规划,来满足对高自由度机器人的路径规划需求。

位形是指机器人上每个点位的集合,包含所有可能位形的空间称为位形空间。如下面的视频所示,2DOF的机械臂位形空间可以用它的两个关节角来表示,它的位形空间可以被表示为圆环面,在工作空间中的障碍物也可以通过映射,映射到C空间中。机器人的自由度数等于其C空间的维度,一个7自由度的机械臂,意味着需要在7维的空间中规划其运动。现有的可视化手段已经较难去进行可视化了。

7bb24780731be6fa5b1a34ca54a8324d.gif

视频:C空间拖动机械臂   

6c236ede61fd73c8f86bc4baefeff1ba.gif

视频:2DOF机械臂的位形拓扑

7bbef3eb150b5c079bd54efa2c064883.gif

视频:障碍物映射到C空间

以上三个视频来源:https://www.youtube.com/watch?v=tlFVbHENPCI

2.2.2 路径规划方法在高维C空间的应用

前面提到基于网格的方法,在高维空间中,理论上仍然可行,但引入的计算量过大。如7自由度机械臂,按照5度的分辨率(已经是很差的分辨率了)进行网格划分,将会产生72^7=1.003*10^13个网格(^表意为次方),因为需要对每个网格进行判断该网格是否产生碰撞,就需要进行碰撞检测,仅是对每个网格进行碰撞检测(若碰撞检测的时间为0.01ms),就需要27863小时。所以一般在高维空间中不使用该方法。

在高维空间中建立势场同样也不方便,人工势场法在应用时通常先在工作空间中建立势场,再计算机器人上每个连杆在势场中受到的作用力,然后通过雅可比矩阵将作用力其映射到每个关节上,进而得到C空间的力矩,这样就完成了人工势场法在高维空间中的应用。

d6c58a5e13db31fc07e735f1b00052e5.gif

视频:人工势场法在2DOF机械臂的应用示意

视频来源:https://www.youtube.com/watch?v=FA10-Guhbqs

随机路图和快速搜索随机树法不需要知道C空间的具体情况,只对随机采样点进行碰撞检测(判断是否在C空间的可行区域内),然后两点之间采用简单的局部规划器进行连接。如下面两个这两种方法均能在高维空间中执行,并且采样点足够多时总能找到一组满意解。

bfe018f702bbe5dae869083fc2bfb8ce.gif

视频:随机路图法在3DOF机械臂上的应用示意

e4b2720f4f7509327d89bbb4e55317ad.gif

视频:快速搜索随机树法在4DOF机械臂上的应用示意

视频来源:https://www.youtube.com/watch?v=Ob3BIJkQJEw

基于速度的方法能在寻找到一条机器人路径的同时,考虑机器人的动力学、障碍物的位置和速度等动态约束。如利用速度障碍的概念,可以将障碍物约束转换为一个速度级的不等式约束,作为控制器的一个约束条件。这类方法一般可以直接得到机器人执行所需的轨迹。但基于速度的方法有和人工势场法类似的问题,当环境中障碍物稍微变得复杂时,该方法可能找不到一条有效路径。

基于速度的方法往往需要和采样方法相结合,先通过采样的方法规划出一条初始轨迹,再通过考虑机器人的动力学、障碍物的位置和速度等动态约束,来控制机器人完成轨迹的执行。

视频:基于速度的方法在机械臂运动规划上的应用

视频来源:https://www.youtube.com/watch?v=cTXytsWyFxE

上面介绍的几种方法均在以机械臂为代表的高自由度机器人中有较多应用,而且有很多改进的变种。在不考虑机器人动力学的情况下,基于采样的RRT和PRM等方法几乎已经成为路径规划的主流方法。但是在动态环境和一些复杂操作场景中,人工势场法和一些基于速度的方法则能够直接和机器人的动力学控制相结合,得到更好的控制效果,也是目前研究和应用的重点。

三、运动规划之轨迹规划

路径规划后的路径没有时间信息,直接使用会使机器人急起急停,对机器人本体的冲击很大,甚至机器人根本无法执行,因此机器人为了完成对路径的顺利执行还需要进行轨迹规划。

轨迹规划就是给路径规划所得到的路径点进行平滑,赋予时间信息,使路径变成机器人可执行的轨迹。如下图所示,图中展示了机器人执行相同的路径,而采用不同轨迹的运动效果。从左到右依次是时间最优、固定节拍和末端匀速机器人,从图中可以看出不同的轨迹规划方法对机器人执行的影响。通过轨迹规划,机器人可以得到加速度和冲击更小、能量消耗更小同时时间花费更少的轨迹。

a5a62c376a407adb5fa6bb92a8e346c6.gif

视频:同一路径下不同轨迹规划方法(左到右依次是:时间最优、固定节拍、末端匀速)的执行效果

视频来源:https://www.zhihu.com/zvideo/1316437536278429696

 >>>> 3.1 轨迹规划

路径规划后的路径点在关节空间,关节空间轨迹规划直接规划关节的运动,需要求解的是关节角度、角速度、角加速度与时间的函数关系。轨迹规划是已知关节始末位置关节角度以及中间节点对应的关节角度,求解连续轨迹的过程,因此,轨迹规划转化成插值拟合问题。

4a9aabf8df83b621f2023eb314f2ab12.png

图片:曲线拟合

目前开展的轨迹平滑主要采用的方法有 B 样条曲线、NURBS 曲线等。样条曲线拥有许多优良性质,如几何不变性、局部支撑性等,使其在多段轨迹过渡时连接的平滑以及整个曲线的平滑性上有很好的保证。采用样条曲线在关节空间中进行轨迹规划时能减少关节冲击,同时使得轨迹适应性更好。

c7beb2a0d493adea0bdf79f5ec269497.gif

图片:样条曲线拟合的局部支撑性

轨迹规划算法主要是利用样条曲线的优良性质,保证速度、加速度、加加速度的连续, 改善了轨迹连接过渡的平滑性,并且使轨迹具有局部性,方便对轨迹进行局部修改,避免了对轨迹的整体影响。在精度要求越来越高的需要下,样条曲线将更多地用于轨迹规划。

但轨迹规划算法只考虑了轨迹的连续、平滑,未考虑实际作业要求中的效率、能量、冲击等问题。为此,对轨迹尚待进一步优化,以期提高轨迹的质量。


>>>> 3.2 轨迹优化

轨迹优化的主要是使关节运动能够提高效率、降低能耗,减少冲击等,以满足实际要求。优化目标一般可分为:时间最优、能量最优、冲击最优以及综合最优。

关节空间轨迹时间优化的目的是在满足约束条件下,尽可能地缩短运行时间,提高工作效率。对于轨迹时间的优化,本质上是以时间最短为优化目标,在运动学或动力学约束条件下,寻找最优解的数学优化问题,所以,对时间的优化就集中在对于优化算法的研究上。大多数的方法都是在满足关节速度、加速度、加加速度约束下,采用不同的优化算法进行寻优。

能量优化的大致思路与时间优化类似,在运动学、动力学约束下,建立能量消耗函数,采取优化算法进行求解。相关方法的不同之处在于对能耗函数及优化算法的选择上。不同的能耗函数反映的是不同形式的能量消耗指标,如何建立统一的能量消耗函数是今后的研究方向。同时,考虑单一的能量优化应用较少,更多的情况需要综合考虑其他因素(如时间、冲击等),综合优化更符合实际需求。

关节冲击使关节运动不平稳,严重的会增加振动、机械磨损,导致结构破坏。对于轨迹冲击优化的研究,既有对评价冲击大小的指标设定研究,也有对优化算法的具体应用的探讨。现阶段的主要研究集中在建立冲击评价指标及优化算法的使用上,实际中大多是考虑多方面目标的优化,单独考虑冲击最优对于实际意义不大,冲击最优的同时也需要考虑效率、能量问题。

四、落地应用

>>>> 4.1 在拖动示教中的应用

前面提到运动规划包含了路径规划和轨迹规划两个部分。在多数应用场景下,路径规划的部分是由人“手把手”教给机器人的,而不是由机器人自己生成的,这里的人工教授即为拖动示教。具体来看拖动示教的实现过程如下,操作员先拖动机器人执行期望路径,控制器记下对应的路径后,进行轨迹规划,控制机器人执行该路径。如下面的应用Demo所示,拖动示教操作简单,却能完成相当多的工作,实现机器人的快速部署,几乎可以称得上是现有协作机器人的标配。运动规划在拖动示教中的应用主要体现在轨迹规划上。

视频9:机械臂拖动示教的应用实例

视频来源:https://www.youtube.com/watch?v=RWzFS0PkHuo


>>>> 4.2 搬运、码垛中的应用

在机器人实现搬运和码垛的过程中,通过视觉获取目标点位置,再通过人为的给定路径的中间点,完成搬运和码垛的操作。

视频:机械臂在码垛应用实例

视频来源:https://www.youtube.com/watch?v=DVnFT9audks

下面视频是一个移动机器人操作的场景,涉及了移动机器人导航和机械臂操作的运动规划。

视频:移动机器人操作应用实例

视频来源:https://www.youtube.com/watch?v=BiemOdLYf48

>>>> 4.3 生活场景中的应用

相比于上述两类工业应用场景而言,生活应用场景的环境更加开放,对机器人运动规划的能力要求也更高。虽然当前大规模落地的应用还不多见,但机器人已经能够成功胜任一些特定场景需求,下面给出几个较为经典的例子。

4.3.1 障碍物环境下的目标跟踪和抓取操作

下面视频给出了YUMI和BAXTER两个机器人在障碍物环境下完成目标物体跟踪和取放任务的实例。

视频:目标跟踪和抓取应用实例

视频来源:https://www.youtube.com/watch?v=Fl4WvsXQDzo


4.3.2 咖啡制作与拉花

下面的视频是Rethink(老牌协作机械臂生产商),展示的是协作机械臂在制作咖啡+拉花这样一个商业场景中的应用,得益于协作械臂安全且丰富的人机交互能力。

视频:机器人进行咖啡制作与拉花应用实例

视频来源:https://www.youtube.com/watch?v=rRSC2XZga98


4.3.3 机器人端水杯+避障

机器人端水杯需要满足水不外撒所需的动力学约束,同时进行避障。这时运动规划和轨迹规划往往会合二为一,直接计算出所需的轨迹。

视频:机器人进行端水杯操作

视频来源:https://www.youtube.com/watch?v=K_rOgjixkOs


>>>> 4.4 其他应用

下面这个视频是目前最广泛的运动规划平台MoveIt前几年给出的一些应用示例,可以从实例中看出一些机器人运动规划的应用情况。

视频:运动规划的一些应用集合

视频来源:https://www.youtube.com/watch?v=0og1SaZYtR

五、结语

尽管现阶段运动规划方法取得了一定的发展,甚至理论上已经较为完备,但由于现有机器人的操作环境单一,运动规划在实际应用中的场景依然比较有限,未来尚有很大的发展空间。相信随着机器人应用场景的进一步开放,机器人运动规划终将在各个领域大放异彩。

参考文献

[1] Mohanan M G ,  Salgoankar A . A survey of robotic motion planning in dynamic environments[J]. Robotics and Autonomous Systems, 2017, 100:171-185.

[2] Tsardoulias E G ,  Iliakopoulou A ,  Kargakos A , et al. A Review of Global Path Planning Methods for Occupancy Grid Maps Regardless of Obstacle Density[J]. Journal of Intelligent & Robotic Systems, 2016, 84(1-4):829-858.

[3] H. Choset, K. M. Lynch, S. Hutchinson. Principles of Robot Motion: Theory, Algorithms, and Implementations[M]. 2005.

[4] Pankert J ,  Hutter M . Perceptive Model Predictive Control for Continuous Mobile Manipulation[C]// International Conference on Robotics and Automation. IEEE, 2020.

[5] Kevin M. Lynch, Frank C. Park. Modern Robots Mechanics, Planning, and Control[M]. 2017

de6615b379072accf78ba461bf4f9464.gif

34b72b8bef601d284e0ea973fe8432ee.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/334786.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 浅谈之 STL Deque

C 浅谈之 STL Deque HELLO,各位博友好,我是阿呆 🙈🙈🙈 这里是 C 浅谈系列,收录在专栏 C 语言中 😜😜😜 本系列阿呆将记录一些 C 语言重要的语法特性 🏃&a…

舆情监测方案怎么写,TOOM舆情监测系统解决方案

舆情监测是通过网络和媒体来收集、分析、评估和报告关于某一特定话题或组织的舆论动态的过程。舆情监测方案通常包括数据收集、数据分析、报告生成等步骤,以帮助组织了解公众对其的看法和声音,并以此作出相应的决策和行动,舆情监测方案怎么写…

车道线检测-Eigenlanes 论文学习笔记

论文:《Eigenlanes: Data-Driven Lane Descriptors for Structurally Diverse Lanes》 代码:https://github.com/dongkwonjin/Eigenlanes 核心:在 Eigenlane Space 中检测车道线 创新点 Eigenlane:数据驱动的车道描述符&#xff…

Python中__init__.py文件深入理解

Python中文件__init__.py深入理解1. 简介1.1 模块(Module)和包(Package)的概念1.2 __init__.py文件简介2. __init__.py内容写法2.1 __init__.py文件内容2.2 __init__.py内容解释1. 简介 1.1 模块(Module)和…

这是从零在独自开开发,将是副业赚钱最好的平台!

文章目录最重要的事情放前面1.前言2.简单介绍一下3.【独自开】介绍3.1 分层标准化平台架构3.2 集成第三方数字接口3.3 支持各个行业的系统定制开发4.如何在【独自开】赚钱获取收益?4.1 如何称为【独自开】开发者?最重要的事情放前面 通过平台的审核也可以得到相应的奖金&…

信息系统建设和服务能力等级证书(CS)

2019年11月26日,中国电子信息行业联合会发布了《信息系统建设和服务 能力评估体系 能力要求》(简称《能力要求》)。《能力要求》是我国信息系统建设和服务能力领域的首个团体标准,旨在通过该标准的实施提升信息系统建设和服务行业…

Linux学习之冯诺依曼体系结构

目录冯诺伊曼结构体系基本概念冯诺依曼结构分为五个部分组成冯诺依曼结构体系的各部分的读写特点:从软件数据上认识冯诺依曼结构体系冯诺伊曼结构体系 基本概念 数学家冯诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机…

JVM相关面试题

文章目录说一下 JVM 的主要组成部分及其作用?说一下 JVM 运行时数据区 ?JVM中哪些是线程共享区 ?说一下堆栈的区别?队列和栈是什么?有什么区别?简述Java类加载机制?说一下类装载的执行过程?什么…

类的 6 个默认成员函数

文章目录一、构造函数1. 构造函数的定义2. 编译器生成的构造函数3. 默认构造函数4. 初始化列表5. 内置成员变量指定缺省值(C11)二、析构函数1. 析构函数的定义2. 编译器生成的析构函数3. 自己写的析构函数的执行方式三、拷贝构造函数1. C语言值传递和返回值时存在 bug2. 拷贝构…

2023上半年软考中级报名-系统集成项目管理工程师

系统集成项目管理工程师是全国计算机技术与软件专业技术资格(水平)考试(简称软考)项目之一,是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试,既属于国家职业资格考试,又是职…

【Hello Linux】 Linux基础命令(持续更新中)

作者:小萌新 专栏:Linux 作者简介:大二学生 希望能和大家一起进步! 本篇博客简介:介绍Linux的基础命令 Linux基础命令ls指令lsls -als -dls -ils -sls -lls -nls -Fls -rls -tls -Rls -1总结思维导图pwd指令whoami指令…

已解决:pywintypes.com_error: (-2147221005, ‘无效的类字符串‘, None, None)

今天接到一个需求,就是读取doc文件, 注意是doc! doc! doc, 不是docx! 不是docx! 不是docx! 以下的博客都是挂羊头,卖狗肉 但是好多博客都是读取docx,以次来博取流量与眼球,还有好多我都用不了&#xff0…

做产品时有哪些常见的错误认知?

作为产品新人最容易遗漏的就是一些小的细节,有时候可能脑子里想过,可因为事情繁冗又遗漏了某些环节,导致项目不顺利。 产品经理就像是全托幼儿园的唯一一个老师,想要做的好就要管的多且全面,将自己的位置放的低一点多…

centos7环境安装单机版MinIo后台自启动

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录MinIo简介一、搭建MinIo1. Linux服务器执行命令,查看当前系统2. 执行对应版本的minIo下载命令3. 下载完毕,执行启动服务命令4. minIo 启动成功…

08讲 | 基于STM32单片机NBIOT定位实战项目

前言 绘制基于 STM32 单片机的 NBIOT 实战开发板。 文章目录前言一、原理图1、绘制1)电源供电a、USB 转 TTL 电路b、锂电池充电管理电路c、3.3V电压转换电路d、一键开关机电路2)单片机最小系统3)ADC电压转换电路4)NBIOT 模组串口电…

Resin内存马逆袭之路

前言 故事还是要从很久很久以前说起,红蓝对抗越来越激烈,常见的免杀Webshell文件已经逃脱不了蓝队大佬的火眼金睛了,函数混淆的花里胡哨最后还是能被轻松分析,所以早在很多年前,就已经进入了内存马的时代,…

细讲一个 TCP 连接能发多少个 HTTP 请求(一)

一道经典的面试题是从 URL 在浏览器被被输入到页面展现的过程中发生了什么,大多数回答都是说请求响应之后 DOM 怎么被构建,被绘制出来。但是你有没有想过,收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式、什么顺序、建…

Android主页面进程卡死黑屏怎么办?多线程机制来解决

问题描述 在做一个页面跳转小案例,在输入页输入要计算第几项斐波那契数列,然后跳转到另一个页面显示计算的结果,当输入的值很大时,跳转到另一个页面时,页面卡死黑屏。 页面卡死黑屏问题原因 计算斐波那契数列的常规方法…

Linux--fork

一、fork入门知识 fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。可以简单地说fork()的作用就是创建一…

如何在Python里使用ChatGPT及ChatGPT是什么?怎么注册?

废话不多说,直接开干! 需要库 pip install openaiimport openai# Set your API keyopenai.api_key "你的chatgpt的密钥key"# Use the GPT-3 modelcompletion openai.Completion.create(engine"text-davinci-002",prompt"Once upon …