代价地图的转换

简介:本部分关于怎样把代价地图转换插件应用到转换占据栅格costmap2d到几何形状来优化(测试阶段)

teb_local_planner包支持costmap_converter插件,这些插件将占据栅格costmap_2d转换为几何形状的障碍物。

默认情况下,占据栅格为点装的障碍物。如果地图分辨率很高,则就需要大量的计算,这可能会在计算拓扑结构中系统不稳定性(取决于障碍物的数量)。另一方面,障碍的转换也需要花费时间。然而,转换时间非常依赖于选择的算法,可以在分开的线程执行。就目前而言,代价地图的转换是实验阶段,就有效性和导航质量的最好配置而言在将来决定。

通过设置参数costmap_converter_plugin插件来激活,可以通过下面代码查看可用的插件:

  1. rospack plugins --attrib=plugin costmap_converter

也可以指定参数costmap_converter_spin_thread以及costmap_converter_rate。

必须在启动代码之前加载插件。障碍物的可视化使用teb_markers。

1.例子参数文件

以下文件costmap_converter_params.yaml描述了怎样设置参数根据机器人导航配置里面;

  1. TebLocalPlannerROS:
  2.  
  3. ## Costmap converter plugin
  4. costmap_converter_plugin: "costmap_converter::CostmapToPolygonsDBSMCCH"
  5. #costmap_converter_plugin: "costmap_converter::CostmapToLinesDBSRANSAC"
  6. #costmap_converter_plugin: "costmap_converter::CostmapToLinesDBSMCCH"
  7. #costmap_converter_plugin: "costmap_converter::CostmapToPolygonsDBSConcaveHull"
  8. #costmap_converter_plugin: "" # deactivate plugin
  9. costmap_converter_spin_thread: True
  10. costmap_converter_rate:
  11.  
  12. ## Configure plugins (namespace move_base/TebLocalPlannerROS/PLUGINNAME)
  13. ## The parameters must be added for each plugin separately
  14. costmap_converter/CostmapToLinesDBSRANSAC:
  15. cluster_max_distance: 0.4
  16. cluster_min_pts:
  17. ransac_inlier_distance: 0.15
  18. ransac_min_inliers:
  19. ransac_no_iterations:
  20. ransac_remainig_outliers:
  21. ransac_convert_outlier_pts: True
  22. ransac_filter_remaining_outlier_pts: False
  23. convex_hull_min_pt_separation: 0.1

现在可以把参数加载到move base空间。将上面文件加载到导航launch文件里面

  1. <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
  2.  
  3. <!-- Load all costmap_2d and planner parameters here -->
  4.  
  5. <param name="base_local_planner" value="teb_local_planner/TebLocalPlannerROS" />
  6.  
  7. <!-- LOAD COSTMAP_CONVERTER PARAMETERS HERE -->
  8. <rosparam file="$(find my_robot_name_2dnav)/costmap_converter_params.yaml" command="load" />
  9.  
  10. </node>

2.完整例子

  1. You can find an example setup with the stage simulator in the teb_local_planner_tutorials package.
  2.  
  3. Install the teb_local_planner_tutorials package
  4. Inspect the parameter/config files
  5.  
  6. Launch the diff_drive setup: roslaunch teb_local_planner_tutorials robot_diff_drive_in_stage_costmap_conversion.launch
  7.  
  8. Modify parameters using rosrun rqt_reconfigure rqt_reconfigure or by adapting the files.
  9.  
  10. Switch different costmap conversion algorithms in costmap_converter_params.yaml

teb教程6的更多相关文章

  1. teb教程1

    http://wiki.ros.org/teb_local_planner/Tutorials/Setup%20and%20test%20Optimization 简介:本部分关于teb怎样优化轨迹以 ...

  2. teb教程8

    融合动态障碍物 简介:考虑怎样把其他节点发布的动态障碍物考虑进来 1.本部分演示了动态障碍物该如何被包含到teb_local_planner中. 2.写一个简单的动态障碍物的发布器publish_dy ...

  3. teb教程3

    配置和运行机器人导航 简介:配置teb_local_planner作为navigation中local planner的插件 参考teb安装 由于局部代价地图的大小和分辨率对优化性能影响很大,因为占据 ...

  4. teb教程10 teb questions

    http://wiki.ros.org/teb_local_planner/Tutorials/Frequently%20Asked%20Questions

  5. teb教程9

    通过costmap_converter来跟踪和包含动态障碍物 简介:利用costmap_converter来很容易跟踪动态障碍物 1.costmap_converter中提供了一个插件称之为costm ...

  6. teb教程7

    融合自定义的障碍物 简介:本部分讲解怎样考虑其他节点发布的多边形的障碍物. 1.在一些应用当中,可能不想依赖于代价地图或者想添加其他的除了点状的障碍物.你可以发送你自己的障碍物列表到teb_local ...

  7. teb教程5

    跟随全局规划器 简介:本部分是关于如何配置局部规划器严格跟随全局规划,也包括调节在时优和路径跟随上的权衡. 1.先看一下via-points当前的优化行为:启动下面节点 roslaunch teb_l ...

  8. teb教程4

    障碍物避障以及机器人足迹模型 简介:障碍物避障的实现,以及必要参数的设置对于机器人足迹模型和其对应的影响 1.障碍物避障是怎样工作的 1.1 惩罚项 障碍物避障作为整个路径优化的一部分.显然,优化是找 ...

  9. teb教程2

    http://wiki.ros.org/teb_local_planner/Tutorials/Inspect%20optimization%20feedback 检查优化反馈 简介:怎样检查优化的轨 ...

随机推荐

  1. Python面向对象初始(三大特征,多态,继承,封装)

    Python面向对象的初始 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程序的 ...

  2. 函数体中return下面的代码不执行,但是需要预解析

    //函数体中return下面的代码不执行,但是需要预解析 function fn(){ console.log(num);//undefined return function(){ }; var n ...

  3. 笔试算法题及解答(Python)

    1.给定任意一个正整数,求比这个数大且最小的“不重复数”,“不重复数”的含义是相邻两位不相同,例如1101是重复数,而1201是不重复数 # coding:utf-8 ''' Created on 2 ...

  4. 团队作业-Bata冲刺第一天

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2 这个作业要求在哪里 https://edu.cnblo ...

  5. 最长上升子序列(LIS)长度及其数量

    例题51Nod-1376,一个经典问题,给出一个序列问该序列的LIS以及LIS的数量. 这里我学习了两种解法,思路和代码都是参考这两位大佬的: https://www.cnblogs.com/reve ...

  6. Struts2学习笔记 - namespace命名空间

    默认的命名空间“ namespace="" ”. 根命名空间 “ namespace="/" ”. <package name="test&qu ...

  7. 转 HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth之完全详解

    HTML:scrollLeft,scrollWidth,clientWidth,offsetWidth到底指的哪到哪的距离之完全详解 scrollHeight: 获取对象的滚动高度. scrollLe ...

  8. java web项目获取项目路径

    注意:有时获取到的项目路径后再+“自定义路径后” 路径不可用,这时要看下项目里自定义路径是不是空文件夹,如果是空文件夹则调试和运行时文件夹不会编译到部署文件里. 1.方法一 调试时只能获取eclips ...

  9. mybatis中递归查询

    业务是这样的,一个商品有不同的规格,所有规格选择完后会出现价格,这些规格我是放在一个表里,父子级关系.mybatis做的时候传过来一个商品Id.然后根据商品id去找所有的规格. <?xml ve ...

  10. delphi 读写记录类型文件Record

    type personInfo=Record //定义Record Name:String[10]; Age:integer; end; //写记录包括新键与添加记录 procedure WriteR ...