gpt4 book ai didi

navigation - 如何将具有多个值的非二进制占用网格映射到 ROS 中的成本图?

转载 作者:行者123 更新时间:2023-12-04 15:26:56 25 4
gpt4 key购买 nike

我正在寻找一种将非二进制占用网格映射到全局成本 map 的方法。占用网格的值 -1 表示未定义,0 表示非碰撞,1-100 表示碰撞区域。这里有一个类似的问题,给定的答案没有提供具体的解决方案:

https://answers.ros.org/question/335530/what-range-of-costs-does-ros-navigation-support/

为了更好地了解:

我正在使用 ROS Melodic。

我的占用网格如下所示: Image of Occupancy grid

我的 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

请注意,我是代价 map 的初学者,所以这可能根本没有意义!

使用给定的 global_costmap_params.yaml 提供以下成本图:Image of the resulting global costmap

如您所见,代价 map “忽略”了碰撞区域并以与非碰撞路径区域相同的代价映射它们。有什么方法可以修改 costmap_params 以使其正确映射占用网格?

提前致谢!

最佳答案

最具体地说,我会查看插件的成本图参数,主要是 static_map obstacles 插件。也许你想要 staticmap参数trinary_costmap确实,要在成本图中具有完整的值。 obstacles 中的那些使用多层或输入数据可能会改变您期望看到的内容。

我还会看看 Clearpath 的 Husky husky_navigation包装是一个很好的例子,例如。 move_base.launch文件。所有参数都写在config/目录,并由 rosparam 加载在 move_base 内节点。一些细节:如果你正在做一个与机器人一起移动的本地代价 map ,你不想跟踪空白空间,你想要一个滚动窗口,并使用障碍层而不是静态层;对于全局,您将跟踪所有空间,但不会相对于机器人移动窗口,并且您将使用静态 map 。

我认为您遇到的问题之一是数据流。 Ros(和大多数人,因为它)如何倾斜是从一开始就为 map_server 加载初始/静态 map ( amcl )和 move_base , 用 LaserScan 更新两者s &/或 PointCloud s,然后你只剩下 amcl帧 tfs 和局部位置估计的输出,并将其输入 move_base节点,你只需要 goal .使用 occ_grid map 消息更新 amcl ,例如,您必须更改 use_map_topic参数。

编辑:万一 map_server 是您真正需要的,这是我从 husky_nav 的 amcl_demo.launch 中提取的示例用法:

<!-- Run the map server -->
<arg name="map_file" default="$(find husky_navigation)/maps/playpen_map.yaml"/>
<node name="map_server" pkg="map_server" type="map_server" args="$(arg map_file)" />

关于navigation - 如何将具有多个值的非二进制占用网格映射到 ROS 中的成本图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62069112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com