1.yaml 加图层,yaml文件输入容易出错,最好复制格式修改内容,手动输入英文输入法输入。
plugins: - {name: static_layer, type: "costmap_2d::StaticLayer"} - {name: virtuals, type: "costmap_2d::VirtualLayer"} - {name: obstacles, type: "costmap_2d::ObstacleLayer"} - {name: inflation_layer, type: "costmap_2d::InflationLayer"}
2.加图层导致整个地图的异常?在这里困住了两天,没发现原因,主要是由于加了图层之后,costmap_2d_ros可以读取到plugins 参数了。原先yaml 文件中没有plugins 参数。
因此其他图层包括障碍物图层的ros::NodeHandle namespace 命名空间发生变化。可以运行时打印出来看看。使用nh.getNamespace() 函数获取。可以发现和之前不一样了。
解决方法:1. 在costmap_2d_ros图层初始化时候去掉/pname,保证名字一致。
plugin->initialize(layered_costmap_, name + "/" + pname, &tf_);
方法2. 修改读取不到的配置参数前缀:加图层名字,这样也可以读取到参数。
observation_sources: scan scan: {sensor_frame: base_scan, data_type: LaserScan, topic: scan, marking: true, clearing: true} 改为: obstacles: observation_sources: scan scan: {sensor_frame: base_scan, data_type: LaserScan, topic: scan, marking: true, clearing: true}