热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ros开源物体检测_ROS传感器之LIDAR简介

一.概念LIDAR,全称LightDetectionAndRanging,即激光检测和测距,通常称为激光雷达。其功能是利用激光检测物体以及

一.概念

LIDAR,全称Light Detection And Ranging,即激光检测和测距,通常称为激光雷达。其功能是利用激光检测物体以及测量与物体之间的距离。

二.分类

不同的分类标准,有不同的分类结果。通常有两类分类标准,按照线束可分为两类:一是单线激光雷达,二是多线激光雷达。单线激光雷达的数据可以看做是一定高度的一排点阵,多线激光雷达的数据包含高度信息,可以看做是一个面。按照机械性质又可分为机械激光雷达和固态激光雷达,目前主流市场以机械激光雷达为主。

三.原理

机械激光雷达原理可以简化理解为一个发射器,一个接收器和一个旋转镜面,发射器周期向旋转镜面发射光束,由镜面折射出去,此光束经过障碍物反射后,由接收器接收,统计时间,然后根据光速,计算距离。镜面不停旋转,镜面旋转一周,相当于激光雷达扫描一周,可以获取一帧激光雷达数据。

四.输出

激光雷达的直接输出主要包含两部分:一是距离点,代表物体与激光雷达之间的距离;二是反射强度,不同的物体其反射强度不同,在特定场景下,利用反射强度,可以识别物体,例如车道线检测。

五.作用

激光雷达与IMU和GPS在作用上有一个显著差异点,IMU与GPS测量自身信息,激光雷达测量的是环境信息,并可以根据环境信息,反推自身信息。在自动驾驶或者机器人领域,测量自身信息,在称之为定位,测量环境信息,称之为感知,建图本质上属于感知。

六.数据特性

在机器人和自动驾驶领域,基于激光雷达的方案比较成熟,这与其优势的数据特性有关。具体如下:

  1. 测量信息比较多:物体三维信息,包括位置和速度,形状,材料等。
  2. 不受光线影响:这点决定其可以全天候工作。其缺陷是易受天气影响,还有一点是相对于其他传感器,激光雷达成本比较高,不利于产品商业化量产,不过近几年,随着激光雷达技术的发展,其成本也逐渐降低。

七.ROS中LIDAR数据表示

1. sensor_msgs/LaserScan

sensor_msgs/LaserScan是激光雷达基本数据类型,其所描述的是一次扫描的数据,包括扫描角度、时间以及扫描距离等,执行以下命令:

rosmsg show sensor_msgs/LaserScan

执行效果:

82ca788319781cafeacd5a4e0e0b46c8.png

header项同前文GPS(ROS传感器之GPS简介), angle_min扫描起始角度, angle_max扫描结束角度, angle_increment两次扫描间隔的角度, time_increment两次扫描的时间间隔, scan_time此帧数据产生的时间,机械激光雷达数据点,是由旋转扫描产生,所以同一帧的每个点产生的时间都不一样, scan_time要表示整帧数据的时间,一般取第一帧和最后一帧的平均时间,或者使用GPS时间,这个后续再详细介绍。range_min最小有效距离, range_max最大有效距离, ranges所有扫描点的距离, intensities所有扫描点的反射强度。

2. sensor_msgs/PointCloud2

sensor_msgs/PointCloud2代表点云数据,pcl是点云库,专门处理点云数据,通过将 sensor_msgs/LaserScan格式先转化为 sensor_msgs/PointCloud2格式,然后可以调用pcl算法,处理数据。执行以下命令:

rosmsg show sensor_msgs/PointCloud2

执行效果:

0d096627ebdfadd3fa964a55ad5db30c.png

header项同前文GPS(ROS传感器之GPS简介),height表示高度,width表示宽度,可以把一帧点云数据看成图像数据,一个点对应一个像素,宽和高也与之对应。is_bigendian数据存储是否按照小端存储, point_step表示一个点所占的字节数, row_step表示一行点所占的字节数, is_dense表示数据是否有效, data实际存储点云数据, fields表示每一个点云所包含的格式,可以按照 fields区域把点云数据解析出来。以下是激光雷达 velodyne的一帧点云数据,我们以此进一步说明此结构

faf3a14d0c5fd3c5662d120c932d559f.png

header代表本帧时间戳、序列号, frame_id设置为 velodyne;height为1, width为55823,所以此帧点云数:height×width=1×55823=55823, point_step为32,代表一个点占32字节, row_step为1786336,此数据代表一行所占的字节数:point_step×width=32×55823=1786336;此帧总的自己数:row_step×height=1786336×1=1786336, fields表示一个点的结构,x、y、z代表三维坐标, intensity代表反射强度, ring表示圈的序列号。fields中name代表 field name,offset代表一个点结构内的起始地址,datatype代表field数据类型,count代表field的个数。早期还有一个结构:sensor_msgs/PointCloud,也是表示点云数据,目前已经淘汰。

八. 小结

本篇介绍激光雷达的基本概念和原理,以及在ros系统中激光雷达数据的两种表达方式。下一篇以Velodyne为例,介绍如何获取,解析以及使用激光雷达数据。



推荐阅读
author-avatar
用户r7t3govjq0
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有