Hi my new friend!

laserscan转gridmap

  • Home
  • laserscan转gridmap
Scroll down

CartoGrapher

Cartographer是Google推出的一套基于图优化的激光SLAM算法,它同时支持2D和3D激光SLAM,可以跨平台使用,支持Laser、IMU、Odemetry、GPS等多种传感器配置。该算法可以实现实时定位和建图。
CartoGrapher

LaserScan

测量的激光扫描角度,逆时针为正
设备坐标帧的0度面向前(沿着X轴方向)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Header header            # Header也是一个结构体,包含了seq,stamp,frame_id,其中seq指的是扫描顺序增加的id,stamp包含了开始扫描的时间和与开始扫描的时间差,frame_id是扫描的参考系名称.注意扫描是逆时针从正前方开始扫描的.

float32 angle_min # 开始扫描的角度(角度)
float32 angle_max # 结束扫描的角度(角度)
float32 angle_increment # 每一次扫描增加的角度(角度)

float32 time_increment # 测量的时间间隔(s)
float32 scan_time # 扫描的时间间隔(s)

float32 range_min # 距离最小值(m)
float32 range_max # 距离最大值(m)

float32[] ranges # 距离数组(长度360)(注意: 值 < range_min 或 > range_max 应当被丢弃)
float32[] intensities # 与设备有关,强度数组(长度360)

OccupancyGrid

栅格地图定义 :栅格地图就是用一个个栅格组成的网格来代表地图. 栅格里可以存储不同的数值, 代表这个栅格的不同含义.
栅格地图示意图
ROS的栅格地图使用

  • 白色代表空闲,也就是可通过区域,其存储的值为 0;
  • 黑色代表占用,也就是不可通过区域,其存储的值为 100;
  • 灰色代表未知,就是说目前还不清楚这个栅格是否可以通过,其存储的值为 -1.

nav_msgs/OccupancyGrid.msg如下

1
2
3
std_msgs/Header header
nav_msgs/MapMetaData info
int8[] data

info中包含起始点位置、地图宽和高、地图分辨率:

1
2
3
4
5
map.info.width; // 单位是栅格数(个)
map.info.height;
map.info.resolution;
map.info.origin.position.x; // 单位是米
map.info.origin.position.y;

data中包含地图每个栅格的占用情况,栅格地图的序号是行优先,从左下角开始,从左到右,从下到上的遍历data数组的数据。

我是学生,给我钱

其他文章
目录导航 置顶
  1. 1. CartoGrapher
  2. 2. LaserScan
  3. 3. OccupancyGrid
请输入关键词进行搜索