实例介绍机械臂运动规划及前沿研究方向

邱强,上海交通大学机械与动力工程学院博士生,本科毕业于清华大学机械工程系,目前研究方向为机械臂运动规划。

邮箱:[email protected]

知乎:fly qq

视频连接:https://www.leiphone.com/news/201703/0JJyEB2eqdRe9XS8.html

提纲:

  • 是什么:介绍运动规划的定义
  • 为什么:简单介绍运动规划的作用,即潜在市场
  • 怎么样:简单介绍算法发展历程,前沿研究方向

运动规划(Motion Planning)

  • 在给定环境中,指定机器人的起点和终点,计算出连接起点和终点,并满足一定约束条件(如壁障)的轨迹。
  • 从数学角度上看,移动机器人的路径规划(Path Planning)也属于运动规划的范畴。但由于问题的维度不同,所以使用的算法也不同,大家习惯观上将两者区分开。

为什么?

  • 人口老龄化要求提高劳动力
  • 市场转变,由工业机器人市场(汽车)向3C产业转移。3C产品更新周期短,款式种类多,单件利润低,整体市场大,对劳动成本增加,对自动化需求大。
  • 示教效率低,无法应对环境变化
  • 加中间点示教

运动规划著名企业

  • Mujin (日本公司)
    • OpenRave(运动规划平台)
    • Rosen Diank(创始人)
    • 视觉+机械臂运动规划,抓取区分螺钉
  • Kinema Systems

    • MoveIt!(运动规划平台)
    • Sachin Chitta(创始人)
    • 视觉+机械臂运动规划,码垛
  • [x] 仿真环境主要用于碰撞检测


规划器评价标准

  • Optimality(最优性):路径最短,规划速度最快等。
  • Complete(完备性):在有限时间内解决所有有解问题。

先从2D,点状机器人(point agent)的问题入手

1、基本路径规划算法

  • Walk To
    • 直接朝着目标走,直到到达目标点为止
  • 优化算法(蚁群等)
    • 类似最优控制
    • 大部分情况下效果不错,但复杂问题很容易陷入局部极值
    • 不完备也不最优
  • 人工势场
    • 在障碍物周围建立排斥势场
    • 从起点到终点构建吸引势场
    • 采用梯度下降等方式求解
    • 特点
      • 容易实现/效果很好
      • 可以与控制结合
      • 可能陷入局部极值
      • 不完备且不最优
  • 图搜索算法
    • 将问题描述成图(节点+边)
    • 用图搜索算法解决问题
    • Dijkstra、A*
    • 在给定的图中完备且最优
    • 如何建图?

      • 可视图(Visibility Graph)
        • 用封闭多面体描述障碍物
        • 利用障碍物顶点间的连线构建一个图(graph),之后同图搜索算法求解
        • 站在某个顶点上,环绕四周,把你能看到(无障碍物)的顶点连接起来
        • 完备且最优
      • 栅格化(Cell Decomposition)
        • 按一定分辨率将地图进行网格划分
        • 用四连通或八连通规则建立网格图
        • 分辨率完备(Resolution Complete)且最优


2、拓展到实际机器人

  • 机器人不在是一个点,需要将机器人的体积考虑在内。
  • 机器人的自由度更高,原本的算法是否都还可用?

3、理论基础——C空间/构型空间

  • Configuration Space
  • 用向量描述机器人构型
  • 在C空间内,机器人是一个点

    • 平面机器人$$\left (x,y,\theta \right )^{T}$$
    • 七轴机器人$$\left (\theta {1},\theta {2},\theta {3},\theta {4},\theta {5},\theta {6},\theta _{7} \right ) ^{T}$$器人的体积考虑在内。

4、高维度

  • 蚁群等优化算法
    • 收敛慢,更多局部极值点
  • 可视图法
    • 在高维空间中,算法不成立
  • 栅格法
    • 理论上可行
    • 但计算量太大
    • 一般在高于3维的问题上不使用该方法
  • 人工势场
    • 在C空间内建立势场不方便
    • 只对个别控制点进行计算,折算到每个关节上
    • 不完备且不最优,但对于简单问题很实用
  • PRM & RRT

    • 不需要知道C空间的具体情况,只对随机采样点进行碰撞检测(判断是否在C空间的可执行区域内)
    • 两点之间采用简单的局部规划器(如Walk to)进行连接
    • PRM:获得一个图,采取图搜索算法求解
    • RRT:获得一个连接到终点的树,反向搜索即可
    • 在高维空间可行,概率完备且不最优
    • 现状
      • 主要使用PRM和RRT等基于采样的方法
      • 这些算法计算的结果一般需要进行后处理(smoothing等)
  • PRM和RRT变种

    • C空间
    • 随机采样(平均采样、高斯采样等各种采样算法,T-RRT)
    • 有效性判断(如碰撞检测算法AABB、减少碰撞检测 Lazy-RRT)
    • 局部规划器连接(各种连接方法、重新连接RRT*、PRM*)

理论学习

  • Couseara:宾大 Robotics: Computational Motion Planning (简单编程)
  • Choset, Howie M. Principles of robot motion: theory, algorithms, and implementation. MIT press, 2005.
  • 经典论文+编程实现经典算法。

实践


研究方向

  • 理论现状
    • 从运动规划角度
    • 给定足够多的时间,一定能够最优且完备地求解到轨迹
  • 从理论角度而言,这个问题已经解决了
  • 研究方向

    • 新问题
    • 实用化
  • [ ]

这个算是蛮实用的,因为每次规划完执行的过程中会遇到环境变化的问题,这就需要在执行过程中重新规划。重新规划的路线与之前的路线是连接的,而不是中间停下来重新走。上面是RSS在2016年的研究,感兴趣的可以了解下。

  • [ ]

理想状态下机器人在运动规划下直接端一杯水到一个地方就行了,但实际情况下这个过程是有动力学在里面,如果不做任何处理,这个杯子会掉。所以,在考虑了动力学之后,重新进行运动规划,这时候杯子才不会掉。这个问题还是比较简单的,因为你只需要把它变成一个约束就好了。

  • [ ]

这个问题是存在的,因为在规划的时候会跟环境接触,例如这个机器人攀爬杆子然后落地,涉及到整个身体动力学跟你身体运动的协调过程,这个工作是MIT计算机科学与人工智能实验室在2014年的实验。接触动力学比传统的单体动力学复杂很多,因为我们不知道它接触的碰撞摩擦力这些不好建模。

  • [x]

运动规划是指我给你一个大任务,你自动生成一些小任务。这是IROS在2016年的一个工作,它的目标是让机器人到达对面这个点,而它的路径被障碍物挡住了,这个时候把运动规划加进来,从更高一个空间维度去求解这个问题。第一步,它把这个桌子往前推,发现桌子推不动的时候对任务进行重规划,然后规划到去推这个桌子,然后发现执行的效果与预计的不一样,所以它又生成新的任务,然后它拉开桌子之后就走到了对面实现了工作。这只是一个很简单的demo,但实际上生活中会遇到很多这样的问题,比如我想从这个房间到另一个房间,而门是关着的,这个时候就需要把门打开。所以说,不是要给机器人生成很多子任务,而是一个大任务,未来服务机器人想要做好这块是必须要做的。

  • [ ]

大部分时间大家都用在了实用化上,虽然说只要有足够时间它一定能求解出来,但实际情况下我们不可能给它无限的时间。另外RRT这些算法生成轨迹很奇怪, 你可以看右边这个视频,只是让它敲这个东西它要画一大圈,所以这也是一个问题,就是怎么优化它的轨迹。所以需要将研究领域好的算法往工业领域推,目前两者之间是存在很大缺口的。

  • [ ]

这个工作是想办法把旧的轨迹给用起来,通过人工的方式指定一个运动微元,也就是原始轨迹,等到了新的环境后再进行改变。当然,这个爬楼梯的过程,环境和动作基本上都相同,所以可以在这个微元的基础上进行改变。首先,通过变形的工作拉到现在起始点位置,部分起始点会重合,然后对这些新起始点进行重复利用,它会形成一个好的轨迹。这个工作是Hauser et al在2008年发布的论文。现在存在的问题是运动微元必须由人工来指定,所以研究方向是由系统自动生成运动微元。

  • [ ]

这是之前做的一个内容,比较简单但在相对固定的环境比较好用。大概原理就是根据人工示教的路径,通过高斯混合模型(GMM)对可行C空间进行建模,之后在这个GMM-C空间内进行规划。这个方法有点类似Learning From Demonstration 的工作,但我只用了它们前面一半的步骤,后面一半还是采用采样的方法。

  • [ ]

这个是我针对加工过程做的另一个工作。我们在工业领域用机器人往往期望的不是整个机械臂的动作,而只是末端的动作。假设我要抛光一个面,首先我要对末端进行规划,用CAD模型就可以计算实现;得到路径后发给机器人,之后直接求逆解或者用雅克比迭代过去。当然,这种方法大部分时候够用,但有时候也会遇到奇异点或者碰到障碍物。我就是针对这个七轴的机械臂,利用它的一个冗余自由度进行规划。因为末端是固定的轨迹,这个时候,只要找到冗余自由度对应的C空间流形,我们就可以在这么一个低维(2维)流形内进行很快速的规划,实现末端固定轨迹,且关节避障避奇异。

  • [x] 深度强化学习DRL

假设深度学习做运动规划,那么它进行一次运动规划的时间就是一次网络正向传播时间,这个时间非常短的,所以只要网络训练好后,运动规划需要耗费很长时间的问题就没有了。目前这块也有一些这方面的研究,上面左边图是用深度学习玩游戏,Nature上的一篇论文,效果比人还厉害;右上角是谷歌用深度学习来开门;右下角就是AlphaGo下围棋了。这个是很有意思的,它也是运动规划和控制的问题,但它是用网络来做的映射。

  • 在给定信息满足系统状态可观性的前提下,CNN强大的环境理解能力(observe→state)
  • RL可以进行路径规划
    • 通过value Iteration等方式建立表格(s→a,v)
    • 用神经网络NN拟合这个映射(s→a,v)
  • DQN


待解决问题

  • [ ]

  • [ ]

  • [ ]

results matching ""

    No results matching ""