Home » TEB轨迹规划算法教程 » TEB轨迹规划算法教程-costmap转换

TEB轨迹规划算法教程-costmap转换

TEB轨迹规划算法教程-costmap转换

说明:

  • 介绍如何应用costmap转换插件将占用的costmap2d单元格转换为几何图元以进行优化(实验)

costmap_converter插件

  • teb_local_planner包支持costmap_converter插件。

  • 这些插件将占用的costmap_2d单元格转换为几何图元(点,线,多边形)作为障碍物。

  • 在不激活任何插件的情况下,每个占用的costmap单元被视为单点障碍。

  • 如果地图的分辨率很高,这会导致大量的障碍,并且可能在计算独特拓扑(取决于障碍物的数量)时引入更长的计算时间或不稳定性。

  • 另一方面,障碍物的转换也需要时间。 但是,转换时间很大程度上取决于所选的算法,并且可以在单独的线程中执行。

  • 最重要的是,costmap转换是实验性的,并且必须在将来确定效率和导航质量意义上的最佳配置。

  • 有关参数的详细信息,请参阅Node-API

  • 通过ros参数〜/costmap_converter_plugin设置其名称来激活插件。

  • 您可以在costmap_converter包的说明中找到名称,也可以查看可用的插件:

rospack plugins --attrib=plugin costmap_converter
  • 您还可以指定参数〜/costmap_converter_spin_thread和〜/costmap_converter_rate。
  • 必须在启动节点之前加载插件。
  • 使用rqt_reconfigure,在运行时期间,与插件本身相关的所有参数都是可更改的。
  • 使用〜 / teb_markers话题可视化障碍。
  • 通过将空字符串设置为plugin_name来停用转换。

示例参数文件

  • 以下文件costmap_converter_params.yaml
  • 演示了如何根据教程配置和运行机器人导航中的机器人设置来设置参数:
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
    ransac_inlier_distance: 0.15
    ransac_min_inliers: 10
    ransac_no_iterations: 2000
    ransac_remainig_outliers: 3
    ransac_convert_outlier_pts: True
    ransac_filter_remaining_outlier_pts: False
    convex_hull_min_pt_separation: 0.1
  • 现在,您可以将参数加载到move_base命名空间中。
  • 更改导航启动文件以加载costmap_conversion_params.yaml。
<node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">

    <!-- Load all costmap_2d and planner parameters here -->

    <param name="base_local_planner" value="teb_local_planner/TebLocalPlannerROS" />


    <!-- LOAD COSTMAP_CONVERTER PARAMETERS HERE -->
    <rosparam file="$(find my_robot_name_2dnav)/costmap_converter_params.yaml" command="load" />

</node>

完整的例子

  • 安装 teb_local_planner_tutorials ,看第一篇介绍
  • 增加配置文件
  • 启动脚本
roslaunch teb_local_planner_tutorials robot_diff_drive_in_stage_costmap_conversion.launch
  • 修改参数:
rosrun rqt_reconfigure rqt_reconfigure
  • 修改文件costmap_converter_params.yaml的对应转换算法

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: teb轨迹规划算法教程