碰撞检测的五种方法

 

使用模板和查表的方法

  使用机器轮廓覆盖像素模板;项目中使用的是这种方法,提前对footprint建立一个查找表;

  使用机器轮廓边缘像素模板查表:对于密集的路径点比较适用,ros的navigation2里面hybridAstar使用的是这种方式;

    

使用几何方法

  使用机器轮廓边缘直线段在地图中lineHit;使用raytrace、bresenham画线算法;

  使用机器轮廓多边形和环境几何信息做碰撞检测;环境简化成多边形参考ros的mapconvertor,将障碍物用多边形拟合,将轮廓用多边形拟合,aproxypoly; 对多边形做凸分解;判断两个多边形是否相交的方法比较简单;判断点是否在多边形内部;

  使用AABB检测,判断障碍物点是否在机器轮廓的boundingBox里面,再将点转化到车辆坐标系下判断是否再车辆轮廓内部,apollo里面open cene使用的hybrid路径规划使用的是这种方法,前提也要是知道障碍物的点或者线和多边形描述,可以使用最近邻搜索,使用kdtree,但是面对动态环境频繁的建立kdtree效率不高,虽然有类似动态kdtree的方法;

 

碰撞检测的用途:

  路径上的障碍物检测,用于减速和停障;需要保证路径跟随的精度较高,对于曲线路径,需要保证路径点足够密集;为了防止路径跟随不准导致误检测或者漏检测可以将footprint机器轮廓模板放大,比机器尺寸稍微大一点,或者将轮廓模板向路径点位姿横向方向偏移一定距离看是否覆盖到障碍物;

  用于路径搜索,保证路径是无碰撞的;

  应用到高分辨率地图中,可以搜索到5cm分辨率不能搜索出的路径,解决窄通道脱困问题;

  类似于dwa搜索并扩展,保证紧贴障碍物和不碰撞,用于沿墙,沿障碍物轮廓;

 

posted @ 2023-02-23 10:34  tmjDD  阅读(555)  评论(0编辑  收藏  举报