...
Code Block | ||||
---|---|---|---|---|
| ||||
sdp = SlamwareCorePlatform::connect(opt_sdpIPAddress, opt_sdpPort); rpos::core::RectangleF knownArea = sdp.getKnownArea(MapTypeBitmap8Bit, rpos::features::location_provider::EXPLORERMAP); //获得地图已知区域 Map map = sdp.getMap(MapTypeBitmap8Bit, knownArea, rpos::features::location_provider::EXPLORERMAP);//根据地图已知区域,获得地图 bitmap_image mapBitmap(map.getMapDimension().x(), map.getMapDimension().y()); //根据已获得的地图尺寸,定义bmp for (size_t posY = 0; posY < map.getMapDimension().y(); ++posY) //获取mapdata数据,并转化成bmp { for (size_t posX = 0; posX < map.getMapDimension().x(); ++posX) { rpos::system::types::_u8 cellValue = 128 + map.getMapData()[posX + (map.getMapDimension().y()-posY-1) * map.getMapDimension().x()]; mapBitmap.set_pixel(posX, posY, cellValue, cellValue, cellValue); } } |
上述代码中由getKnowArea() 获取到的KnownArea, 指的是当前所生成的地图的区域,这部分会随着机器人运行过程中地图的增大而增大。getMapDimention().x() getMapDimention().y()分别获取的是地图X, Y方向的像素个数。getMapData()中的数据,是一组数值在。 -128 ~ 127 之间的包含地图信息的整数,在转换成灰度值的时候,需要加上128。在for循环中,可以看到,实际上所生成的BMP图像,相当于mapdata按Y轴上下反转了。下图为地图的坐标