ROS2 Nav2 一路走来遇到的一些问题和知识总结

在map_sever的map_io.cpp中存在

// Checking map mode
  if (
    save_parameters.mode == MapMode::Scale &&
    (save_parameters.image_format == "pgm" ||
    save_parameters.image_format == "jpg" ||
    save_parameters.image_format == "jpeg"))
  {
    std::cout <<
      "[WARN] [map_io]: Map mode 'scale' requires transparency, but format '" <<
      save_parameters.image_format <<
      "' does not support it. Consider switching image format to 'png'." << std::endl;
  }

 当save_parameters.mode为Scale,且image.format是pgm、jpg、jpeg其中一种的时候,输出报错[WARN] [map_io]: Map mode 'scale' requires transparency, but format “  ”does not support it. Consider switching image format to 'png'. 

首先看一下这个保存参数的消息类型:

struct SaveParameters
{
  std::string map_file_name{""};
  std::string image_format{""};
  double free_thresh{0.0};
  double occupied_thresh{0.0};
  MapMode mode{MapMode::Trinary};
};

当像素的Alpha值不为0,栅格值被设定为状态不明。

像素的明暗程度值小于free\_thresh就表示栅格没有被占用,给栅格赋0。

若大于occupied\_thresh就认为被占用了,给栅格赋100。

free\_threshoccupied\_thresh之间就线性转换到0~100之间。 

在写入地图信息之前还会判断上述参数设置的是否正确,在map_io.cpp中

//checking thresholds会对参数设置的是否正确进行判断。如果没设置的话,默认为0.65和0.25

MapMode定义中有三种格式

在nap_mode.h中

MapMode

描述图像像素值和地图占用状态(0-100;-1)之间的关系。

亮度是指给定像素的RGB通道在0到255的范围内的平均值。

Trinary

*亮度>=占用阈值————占用(100)

(介于两者之间)—————未知(-1)

*亮度<=空闲阈值——————自由(0)

Scale

*alpha<1.0————未知(-1)

*亮度>=占用阈值————占用(100)

*。。。(线性插值到)————(0-99)

*亮度<=空闲阈值————自由(0)

Raw

*亮度=0——————自由(0)

(线性插值到)————0-99

*亮度=100——————占用(100)

*亮度>=101——————未知

在tryWriteMapToFlie函数中,把data的数值转化为灰度图来进行显示,从data的索引入手进行转换,设置每一个栅格(x,y)中对应的颜色灰度值pixel(data转化为pixel)。

每个栅格的填充颜色都是灰度数值,

Trinary模式

map_cell小于0或者大于100,灰色205表示

map_cell小于等于定义的free_thresh_int,使用浅灰色254表示

map_cell大于等于定义的occupied_thresh_int,使用黑色0表示

其他情况灰色205表示。

scale模式

根据地图数据的值进行灰度映射,将较高值的地图数据映射为较浅的灰度,较低值的地图数据映射为较深的灰度。

如果map_cell小于0或者大于100,使用半透明的灰色表示,其他情况根据map_cell的值进行灰度映射。0就是白色,100就是黑色

Raw模式

将地图数据直接 转化为灰度图,将较高值的地图数据映射为浅灰色,较低值的地图数据映射为深灰色。

如果map_cell小于0或者大于100,使用白色表示,其他情况根据map_cell的值进行灰度映射。

然后得到一个image对象,定义为image.pixelColor(x,y,pixel),// Get/set pixel color at location x & y.

后通过image.write(mapdatefile) 写进mapdatafile这张图片中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值