我正在寻找一种将非二进制占用网格映射到全局成本图的方法。占用栅格的值为-1(未定义),0(非碰撞)和1-100(碰撞区域)。这里有一个类似的问题,给出的答案没有提供具体的解决方案:
https://answers.ros.org/question/335530/what-range-of-costs-does-ros-navigation-support/
有关更好的概述:
我正在使用ROS Melodic。
我的占用网格如下所示:占用网格的图像
我的global_costmap_params.yaml如下所示:
global_costmap:
plugins:
- {name: static_layer, type: "costmap_2d::StaticLayer"}
- {name: inflation_layer, type: "costmap_2d::InflationLayer"}
global_frame: base_link
map_topic: "prediction_occ_grid"
update_frequency: 10.0
publish_frequency: 10.0
rolling_window: true
always_send_full_costmap: true
height: 26.9
width: 36.4
请注意,我只是成本图的初学者,因此可能根本没有任何意义!
使用给定的global_costmap_params.yaml可传递以下成本图:生成的全局成本图的图像
如您所见,成本图“忽略”了碰撞区域,并以与非碰撞路径区域相同的成本来映射它们。有什么方法可以修改costmap_params以便正确地映射占用网格?
提前致谢!
原来,该插件无法从global_costmap_params.yaml中读取给定的参数(有关原因可能是什么或如何解决的任何想法?)。
我通过将Navigation-repo克隆到catkin_ws / src文件夹中(而不是通过sudo apt-get install ros-melodic-navigation安装导航)并更改了costmap_2d / plugins / static_layer中的trinary_costmap -param的默认值来解决了该问题.cpp为'false'。
现在,它可以正确映射占用网格的所有中间值。
编辑:
我发现这是由于名称空间问题引起的。由于trinary_costmap是static_layer-plugin的plugin-internal参数,因此似乎必须明确指定名称空间。
因此,可以像这样在global_costmap_params.yaml中设置参数:
/ move_base / global_costmap / static_layer / trinary_costmap:false
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句