costmap converter

背景:

该软件包用于配合teb local planner一起使用,用于加速teb的路径规划。teb中随着costmap的障碍物cell数量增加,耗时也会急速上升,对障碍物cell进行聚类就很有必要。

costmap converter plugin:

作用: costmap_2d单元格 转化为 几何图元(geometry primitives: points, lines, polygons)作为obstacles.

作用

如果没有激活该插件costmap_2d单元格 作为 单点障碍物,在high resolution map,计算时间长并且不稳定。

但是conversion也需要花时间,转换时间主要取决于算法,可以在单独的线程中执行。

配置的例子:

TebLocalPlannerROS:

  ## Costmap converter plugin   
  costmap_converter_plugin: "costmap_converter::CostmapToPolygonsDBSMCCH"
  #costmap_converter_plugin: "costmap_converter::CostmapToLinesDBSRANSAC"
  #costmap_converter_plugin: "costmap_converter::CostmapToLinesDBSMCCH"
  #costmap_converter_plugin: "costmap_converter::CostmapToPolygonsDBSConcaveHull"
  #costmap_converter_plugin: "" # deactivate plugin
  costmap_converter_spin_thread: True
  costmap_converter_rate: 5
 
 
  ##Configure plugins (namespace move_base/TebLocalPlannerROS/PLUGINNAME)
  ## The parameters must be added for each plugin separately
  costmap_converter/CostmapToLinesDBSRANSAC:
    cluster_max_distance: 0.4
    cluster_min_pts: 2

提供的转换方法:

CostmapToLinesDBSRANSAC:单元格转换成点,线。

costmap_2d转换成lines (和points)的集合

CostmapToLinesDBSMCCH:单元格转换成点,线表示。

CostmapToPolygonsDBSConcaveHull:单元格转换成凹多边形表示。

CostmapToPolygonsDBSMCCH:单元格转换成凸多边形表示。

代码架构

compute()函数

代价地图的障碍物处理逻辑都在compute()函数中

dbscan函数

该函数将给定的点集进行聚类,分成一系列的点簇。 DBSCAN(Density-Based Spatial Clustering of Applications with Noise,带有噪声的基于密度的聚类方法)是一种基于密度的空间聚类算法。

选中一个样本点a,围绕点a画一个圆,规定这个圆的半径以及圆内最少包含的样本点,如果在指定半径内有足够多的样本点在内,那圆圈的圆心就转移到这个内部样本点,继续去圈附近其它的样本点,类似病毒传播。等到这个移动的圆所圈住的样本点数量少于预定值,就停止了。最开始那个点a称为为核心点,停下来的那个点为边界点,没被圈到的点为离群点。

  • 特点: 基于密度
  • 与其他算法比较
    kmeans 只能处理球形的簇,一个聚成实心的团(因为算法本身计算平均距离的
    局限)。但环形和不规则形状则不行了

convexHull2

每个点簇转换成凸多边形 graham算法

simplifypolygon

抽取主要凸多边形主要的轮廓,用到了douglaspeuker算法

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值