百度网站地图生成,如何做网络营销推广5,视频网站建设审批,门户网站有文章目录 例说mapserver静态地图参数1. Rviz中显示的地图2. mapserver保存地图详解3. 补充实验 例说mapserver静态地图参数
1. Rviz中显示的地图
在建图过程中#xff0c;rviz会显示建图的实时情况#xff0c;其输出来自于SLAM#xff0c;浅蓝色区域为地图大小#xff0c… 文章目录 例说mapserver静态地图参数1. Rviz中显示的地图2. mapserver保存地图详解3. 补充实验 例说mapserver静态地图参数
1. Rviz中显示的地图
在建图过程中rviz会显示建图的实时情况其输出来自于SLAM浅蓝色区域为地图大小黑色像素为障碍物占据栅格白色区域为自由区域。
2. mapserver保存地图详解
rosrun map_server map_saver -f test图片尺寸为 384 × 384 384\times 384 384×384地图图片的尺寸不依赖于Gazebo和rviz的初始默认栅格而是根据机器人探索情况动态增长
eog test.pgm测试一下当机器人跑的特别远时地图尺寸会变化 打开配置文件vim test.yaml
image: test.pgm
resolution: 0.050000
origin: [-10.000000, -10.000000, 0.000000]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.196PGM是一种用于表示2D栅格地图的图像格式通常在机器人导航和SLAM中使用。 image: test.pgm:
这行指定地图图像文件的名称通常是以.pgm为扩展名的文件包含了地图的栅格信息。 resolution: 0.050000:
这行指定了地图的分辨率即每个像素的大小。在这个例子中像素的边长为0.05单位通常以米为单位。 origin: [-10.000000, -10.000000, 0.000000]:
这行指定了地图的原点也就是地图中(0, 0)栅格的位置。在这个例子中原点的X坐标为-10Y坐标为-10Z坐标为0。这表示地图的左下角位于世界坐标系中的(-10, -10)位置。 实际上地图的尺寸和分辨率是由SLAM算法指定的笔者是gmapping算法配置文件中xmin、ymin、xmax、ymax分别为地图的尺寸边界delta为地图的分辨率 xmin: -10.0
ymin: -10.0
xmax: 10.0
ymax: 10.0
delta: 0.05negate: 0:
这个参数通常用于指定地图的占据信息。如果值为0表示地图中0值代表占据occupied而255值代表空闲free。如果值为1表示地图中0值代表空闲255值代表占据。 occupied_thresh: 0.65:
这个参数指定了栅格被认为是占据的概率阈值。在地图中每个栅格通常用一个0到1之间的值表示占据的概率。如果概率大于或等于0.65则该栅格被认为是占据的。 free_thresh: 0.196: 静态地图信息可以通过话题/map获取其消息类型为nav_msgs::OccupancyGrid 消息解析 # This represents a 2-D grid map, in which each cell represents the probability of
# occupancy.Header header #MetaData for the map
MapMetaData info# The map data, in row-major order, starting with (0,0). Occupancy
# probabilities are in the range [0,100]. Unknown is -1.
int8[] data其中数据部分表明了未知区域为-1其他数值为占据概率取值范围为[0,100]结合上面的配置不难得出在生成的地图中取值65以上的点为黑色点取值19.6以下的为白色点灰色未知区域为-1 这个参数指定了栅格被认为是空闲的概率阈值。如果概率小于0.196则该栅格被认为是空闲的。 Gazebo中的场景 Gazebo中栅格数量为 20 × 20 20\times 20 20×20每个栅格1米地图大小 384 × 384 384\times 384 384×384精度0.05m/pix那么地图表达 19.2 × 19.2 m 19.2\times 19.2m 19.2×19.2m基本一致 对于具体的地图坐标与换算算法ROS实现可参考 https://blog.csdn.net/weixin_47012067/article/details/121875590 在ROS的地图中地图pgm是以像素为单位标记的每个像素点(map.info.resolution)代表0.05m即地图的分辨率精度为0.05m。
例如下图上的星星他的位置在像素层面上的坐标为 ( 400 , 150 ) (400, 150) (400,150)则 x 400 x400 x400像素 y 150 y150 y150像素。这个机器人距离地图原点的实际距离是横坐标方向为 400 × 0.05 20 m 400 \times 0.0520m 400×0.0520m纵坐标方向为 150 × 0.05 7.5 m 150 \times 0.057.5m 150×0.057.5m。 3. 补充实验
实际上Gazebo和rviz中直接看到的栅格是图形化工具与生成的地图没有直接关系 world文件中
model nameground_planestatic1/staticlink namelinkcollision namecollisiongeometryplanenormal0 0 1/normalsize100 100/size/plane/geometrysurfacefrictionodemu100/mumu250/mu2/odetorsionalode//torsional/frictioncontactode//contactbounce//surfacemax_contacts10/max_contacts/collisionvisual namevisualcast_shadows0/cast_shadowsgeometryplanenormal0 0 1/normalsize100 100/size/plane/geometrymaterialscripturifile://media/materials/scripts/gazebo.material/urinameGazebo/Grey/name/script/material/visualself_collide0/self_collidekinematic0/kinematicgravity1/gravity/link/model这个是地平面的尺寸将其改为size30 30/size明显变化了灰色区域但是其并非在rviz中的基本版面 在Gazebo中点击World-GUI-grid 可以发现栅格数量和栅格大小都是可以指定的 只是度量工具沿墙有10个格子每个格子1m表明墙有10m 将栅格数量修改为10栅格大小修改为2后发现其占5个格子仍然是10m同时所建的静态地图仍然为精度0.05尺寸 384 × 384 384\times 384 384×384 rviz的栅格同样如此也是可以指定数量和大小的同样也不会影响建图所以gazebo和rviz中的栅格只不过是图形化的度量工具。