Navigation ';未收到地图';在RVIZ中将自定义costmap2d图层用作插件时

Navigation ';未收到地图';在RVIZ中将自定义costmap2d图层用作插件时,navigation,ros,Navigation,Ros,我正在为你做一个变通办法 因为没有一个现有的costmap2d图层允许使用我用来创建自定义图层的全范围值(0-255)。因此,我只是使用并修改了interpretValue-函数,以便将值(由于使用的占用率网格介于-1和100之间)映射到图层的整个范围(应该是0-255)。我将我的自定义插件集成到了global_costmap_params.yaml中,系统似乎可以正确加载插件(至少没有进一步的错误或无法加载的警告) 问题是:在RVIZ中,全局costmap-部分抛出一条警告,上面写着“没有收到

我正在为你做一个变通办法

因为没有一个现有的costmap2d图层允许使用我用来创建自定义图层的全范围值(0-255)。因此,我只是使用并修改了interpretValue-函数,以便将值(由于使用的占用率网格介于-1和100之间)映射到图层的整个范围(应该是0-255)。我将我的自定义插件集成到了global_costmap_params.yaml中,系统似乎可以正确加载插件(至少没有进一步的错误或无法加载的警告)

问题是:在RVIZ中,全局costmap-部分抛出一条警告,上面写着“没有收到地图”(主题是“/move\u base/global\u costmap/costmap”,当静态\u层设置为插件时可以正常工作)。因此,我只能看到坐标系,但看不到地图

我正在使用ROS Melodic

插件源代码(occgrid\u to\u costmap\u layer.cpp):

package.xml:

cmake_minimum_required(VERSION 3.0.2)
project(custom_layers)

 add_compile_options(-std=c++11)

find_package(catkin REQUIRED COMPONENTS
  costmap_2d
  dynamic_reconfigure
  map_msgs
  message_filters
  nav_msgs
  roscpp
  pluginlib
  tf2
)

include_directories(
  include
  ${catkin_INCLUDE_DIRS}
)

add_library(occgrid_to_costmap_layer
  src/occgrid_to_costmap_layer.cpp
)
<?xml version="1.0"?>
<package format="2">
  <name>custom_layers</name>
  <version>0.0.0</version>
  <description>The custom_layers package</description>
  <maintainer email="faps@todo.todo">faps</maintainer>
  <license>TODO</license>

  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>costmap_2d</build_depend>
  <build_depend>dynamic_reconfigure</build_depend>
  <build_depend>map_msgs</build_depend>
  <build_depend>message_filters</build_depend>
  <build_depend>nav_msgs</build_depend>
  <build_depend>roscpp</build_depend>
  <build_depend>pluginlib</build_depend>
  <build_depend>tf2</build_depend>
  <build_export_depend>costmap_2d</build_export_depend>
  <build_export_depend>dynamic_reconfigure</build_export_depend>
  <build_export_depend>map_msgs</build_export_depend>
  <build_export_depend>message_filters</build_export_depend>
  <build_export_depend>nav_msgs</build_export_depend>
  <build_export_depend>roscpp</build_export_depend>
  <build_export_depend>pluginlib</build_export_depend>
  <build_export_depend>tf2</build_export_depend>
  <exec_depend>costmap_2d</exec_depend>
  <exec_depend>dynamic_reconfigure</exec_depend>
  <exec_depend>map_msgs</exec_depend>
  <exec_depend>message_filters</exec_depend>
  <exec_depend>nav_msgs</exec_depend>
  <exec_depend>roscpp</exec_depend>
  <exec_depend>pluginlib</exec_depend>
  <exec_depend>tf2</exec_depend>

  <export>
    <costmap_2d plugin="${prefix}/costmap_plugins.xml"/>
  </export>
</package>

自定义图层
0.0.0
自定义图层包
同性恋者
待办事项
柳絮
costmap_2d
动态重配置
地图
消息过滤器
导航系统
roscpp
插件库
tf2
costmap_2d
动态重配置
地图
消息过滤器
导航系统
roscpp
插件库
tf2
costmap_2d
动态重配置
地图
消息过滤器
导航系统
roscpp
插件库
tf2

谢谢你的帮助

问题的原因与中的相同:

自定义层不知何故无法从global_costmap_params.yaml正确读取参数“map_topic”。(有没有办法解决这个问题?)

更改中的默认参数

参数(“映射主题”,映射主题,标准::字符串(“map”)

参数(“映射主题”,映射主题,标准::字符串(此处插入所需映射主题“”)

修正了这个问题

编辑:

cmake_minimum_required(VERSION 3.0.2)
project(custom_layers)

 add_compile_options(-std=c++11)

find_package(catkin REQUIRED COMPONENTS
  costmap_2d
  dynamic_reconfigure
  map_msgs
  message_filters
  nav_msgs
  roscpp
  pluginlib
  tf2
)

include_directories(
  include
  ${catkin_INCLUDE_DIRS}
)

add_library(occgrid_to_costmap_layer
  src/occgrid_to_costmap_layer.cpp
)
<?xml version="1.0"?>
<package format="2">
  <name>custom_layers</name>
  <version>0.0.0</version>
  <description>The custom_layers package</description>
  <maintainer email="faps@todo.todo">faps</maintainer>
  <license>TODO</license>

  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>costmap_2d</build_depend>
  <build_depend>dynamic_reconfigure</build_depend>
  <build_depend>map_msgs</build_depend>
  <build_depend>message_filters</build_depend>
  <build_depend>nav_msgs</build_depend>
  <build_depend>roscpp</build_depend>
  <build_depend>pluginlib</build_depend>
  <build_depend>tf2</build_depend>
  <build_export_depend>costmap_2d</build_export_depend>
  <build_export_depend>dynamic_reconfigure</build_export_depend>
  <build_export_depend>map_msgs</build_export_depend>
  <build_export_depend>message_filters</build_export_depend>
  <build_export_depend>nav_msgs</build_export_depend>
  <build_export_depend>roscpp</build_export_depend>
  <build_export_depend>pluginlib</build_export_depend>
  <build_export_depend>tf2</build_export_depend>
  <exec_depend>costmap_2d</exec_depend>
  <exec_depend>dynamic_reconfigure</exec_depend>
  <exec_depend>map_msgs</exec_depend>
  <exec_depend>message_filters</exec_depend>
  <exec_depend>nav_msgs</exec_depend>
  <exec_depend>roscpp</exec_depend>
  <exec_depend>pluginlib</exec_depend>
  <exec_depend>tf2</exec_depend>

  <export>
    <costmap_2d plugin="${prefix}/costmap_plugins.xml"/>
  </export>
</package>
这很可能是由于名称空间问题造成的。为map_topic-param指定名称空间(参见上面链接的另一个线程)也可以解决这个问题