传感器集成-激光雷达系列文章
传感器集成是整合多个传感器收集的数据,以更好地感知周围环境;首先介绍激光雷达的相关内容,包括激光雷达的基本介绍(本节)、激光点云数据处理方法(点云分割、点云聚类、障碍物识别实例)等。
文章目录
- 传感器集成-激光雷达系列文章
- 激光雷达简介
-
- Lidar系统结构
- Lidar分类
- Lidar工作原理
- Lidar技术指标
- 激光点云
-
- PCL(Point Cloud Library)点云库
- 点云数据存储——PointT点类型
-
- PCL可用PointT类型
- PointXYZ——成员变量:float x,y,z;
- PointXYZI-成员变量:float x,y,z,intensity
激光雷达简介
激光雷达Lidar:Light detection and ranging,激光探测与测距。 Lidar通过向目标物体发射激光束并接收反射激光束TOF通过飞行时间法等方式测量目标物体的距离、方向、速度、姿态等参数,从而探测、跟踪和识别障碍物、移动物体等目标。
激光波长(0.5μm~10μm),高准直性使激光雷达性能优异:
- 角分辨率(Velodyne HDL-64E水平视角分辨率:0.1°~0.4°,垂直视角分辨率:0.4°)与距离分辨率高(cm级);
- 抗干扰能力强;
- 可获得各种图像信息(距离、角度、反射率、速度等);
Lidar系统结构
激光雷达Lidar系统构成:
- ;发射激光束是包括激光器和发射光学系统在内的探测信号;
- :激光信号,即回波信号,包括光学系统、光学滤光装置、光电探测器;
- :光电转换、数据获取、信号处理、数据校准和输出;
- :控制激光激发、信号接收和系统工作模式;
以下是Velodyne HDL64激光雷达,64激光Z轴布置在一定角度,水平方向360°机械旋转,角分辨率0.08°,旋转频率10Hz最大探测距离约为120m(车辆等)
Lidar分类
Lidar根据激光光源、信号形式、检测方法、线数、扫描方法、功能用途、运输平台等,有 目前主要依据Lidar成像扫描方法分类:
- 机械旋转(混合固态):机械360水平方向°电子扫描技术用于旋转扫描技术,俯仰/垂直方向。主要优点是单点测量精度高,抗干扰能力强,激光功率高;缺点是装配工作量大(结构复杂,价格昂贵)。
- MEMS型:利用MEMS微振动镜采用半导体生成工艺,将所有机械不集成到单个芯片中。其优点是集成度高、体积小、能耗低;芯片级工艺适合大规模生产;缺点是高精度、高频振动控制困难,制造精度要求高;无法实现360°需要组合使用扫描。
- 全固态激光雷达(Solid-State Lidar):与相控阵雷达一样,激光的出射角度是通过调整发射阵列中各发射单元的相位差来改变的;其优点是扫描速度快(MHz),扫描精度高( μ r a d \mu rad μrad量级),可控性好。
Lidar工作原理
Lidar通过测距:发射并接收反射光束,计算发射光束和反射光束的飞行时间。
Lidar技术指标
激光雷达的主要技术参数如下:
激光点云
:激光测量中,Lidar中的每个激光器发射激光束,经物体反射后得到一个点云(包含距离,反射强度等信息),所有激光反射点的集合即为点云。 PCD点云数据(Point Cloud Data):激光雷达数据的存储格式,如(x,y,z),(x,y,z,i),(x,y,z,RGB)格式存储,(x,y,z)为笛卡尔坐标系中的位置信息,i为反射强度。对于VLP64激光雷达,一个pcd文件包含大约64*360/0.08=288000个(x,y,z,i)值。 激光点云的坐标系和车辆本地坐标系一致,X轴指向车辆前方,Y轴指向车辆左侧,Z轴向上,符合右手定则。
PCL(Point Cloud Library)点云库
PCL是一个开源的C++库用于处理点云数据,包括点云相关的获取,滤波,分割,配准,检索,特征提取,识别,追踪,曲面重建,可视化的模块。
点云数据存储——PointT点类型
实际应用中,激光点云是复杂的n维结构,有不同类型的存储格式,包括PointXYZ,PointXYZI,PointXYZRGB等。 对于带有SSE功能的处理器,最高效的方法是存储三维坐标为浮点型,然后紧跟一个浮点型数据作为填补位数以满足存储对齐要求。
structure PointXYZ
{
float x;
float y;
float z;
float padding;
}
但padding额外的填补会浪费存储空间,因此需要引入PointT模板类型。PCL使用模板(Templates)处理不同格式的点云数据,以实现代码重用。
PCL可用PointT类型
PCL可用的PointT类型如要如下:
- PointXYZ——成员变量:float x, y, z;
- PointXYZI-成员变量:float x, y, z, intensity;
- PointXYZRGB-成员变量:float x, y, z, rgb;
- PointXYZRGBA-成员变量:float x, y, z; unit32_t rgba;
- 简单的二维xy point结构
- InterestPoint-成员变量:float x, y, z, strength;
- ……
PointXYZ——成员变量:float x,y,z;
PointXYZ是使用最常见的点数据类型,只包含三维xyz坐标信息,附加一个浮点数来满足存储对齐,可通过.data[0]
或.x
来访问x轴坐标值。
union
{
float data[4];
struct
{
float x;
float y;
float z;
};
};
PointXYZI-成员变量:float x,y,z,intensity
xyz坐标加intensity的point类型。
union{
float data[4];
struct
{
float x;
float y;
float z;
};
};
union{
struct{
float intensity;
};
float data_c[4];
};