自动(智能)驾驶 | 全网第一本激光雷达手册阅读指南(下)

接着从上篇继续说,本部分主要介绍激光雷达数据等内容,这个可以说是看懂激光雷达手册的重中之重,也就是关键问题的关键(皮~)。同样由于velodyne的手册比较难啃但是内容完整丰富,本期我们依然以velodyne 128(alpha prime)为中心继续讲解,第二部分将说明其他激光雷达手册中的内容。

没有看过第一期的同学可以戳:

自动(智能)驾驶 | 关于激光雷达你需要关注这些(上)_MendozaG的博客-CSDN博客

本篇的目录

4.激光雷达的数据(data)

4.1 packet 类型及定义

 4.2packet的结构

 4.3精准时间的计算

4.4 将PCAP 文件转换为 点云文件

5.激光雷达的通信

6.附录中需要注意的

6.1激光器

6.2 时间同步

6.3相位锁

7.多太激光雷达接入的配置

(概念自测)

8. 其他激光雷达对比

8.1速腾激光雷达

8.1.1 RS-Ruby

8.1.2 RS-M1

8.2 禾赛激光雷达

8.2.1 AT128

8.2.2 pandar 128E3x

9. 总结

附录:激光雷达实物靓照:

4.激光雷达的数据(data)

传感器都有自己坐标系下本身的frame,该激光雷达的origin(0,0,0)在其底座上66.11mm,坐标系的建立和计算如下图(这点需要注意的是xyz轴可能在不同的传感器对于前向的定义不同,有的是正x而有的为正z)

4.1 packet 类型及定义

 接下来就是最为重要的packet解析:有两种packet:数据包(data packet)以及位置数据包(postion packet)位置包有时被称为遥测包,或GPS包。前者包含由传感器测量的三维数据以及返回光脉冲的表面的校准反射率。前者中还包含一组方位角和一个4字节的时间戳以及两个识别传感器模型和激光返回模式的工厂字节(Factory Byte)。如果您已经将传感器配置为与GPS时间源同步,那么位置数据包将提供所收到的最后一条NMEA消息(GPRMC或GPGGA)的副本(copy)。位置包还提供一个字节来识别PPS的状态信号与时间源同步的状态(例如locked、abent等状态)

其中具体包括:

1. 激光发射序列(firing sequence)

当传感器中的所有激光器都被发射时,就会发生发射序列。它们以特定于给定的产品线或模型的序列被发射。包括激光充电时间。一个点发射序列不允许跨越多个数据包。平均而言,需要55.275μs才能发射所有128个激光器并进行充电。该款激光雷达被分成八组发射激光(也就每个group 有16)。

2.激光的通道(laser channel)

一个激光通道是一个905 nm的激光发射器和接收器。每个channel都是有特定的安装仰角的(所以每个点的仰角也就是elevation是固定的,packet中只需给出对应的水平角即可,是没有仰角数据的)平常我们说的多少线,也就是有多少channel,给个channel都有ID。激光的pattern是这样的:

 从上图也可以看到0~7等,以8为单位,都不在一列上,分为了8个group,从而每个点都存在一个offset(相对)

3.点的数据(Data Point)

我们都知道,激光雷达原理是TOF,返回拿到的数据有距离和反射强度。在packet中,一个点由三个字节表示,其中两个字节表示距离(无符号整数,间隔尺寸为4mm,从而报文的25154代表着25154*4=100616mm)、一个表示校准化的反射率(被标准化到0~255)。俯仰角(ω)是根据数据点在数据块中的位置推断出来的。距离为0表示不进行测量(例如向空中发射激光)。激光要么是关闭了,要么是可测量的反射没有及时返回。

4.方位角(Azimuth)

每个数据块开头的标志字节之后,就会出现一个双字节的方位角值(α)。方位角是一个无符号的整数。它表示以百分之一个度表示的角度。因此,原始值为27742应解释为277.42°。方位角的有效值范围为0到35999(计算360*100=36000)每个数据块只报告一个方位角值(其余的根据该值可计算)。

5.数据的Block(Data Block)

注意,这部分最为重要也是最有难度的。128线回波信息在单回波模式下包含4个Block在双回波模式下则有8个连续的block每个packet至多有3个激光发射的序列。每个block只返回一个方位角。

每个block中的内容:

 一个两字节的标志位以及方位角,以及32个点的数据(上面提到了每个点3个字节,两个给距离,1个给反射率),从而最终为100字节

6.帧(frame)

数据帧包含单个旋转中的所有数据点,或从开始FOV结束的部分(如果设定了FOV的话就只记录特定角度范围的点)。它可能包含一些额外的数据,若被包含在一个发射序列在其跨越一个旋转边界的时候。

7.时间戳(time stamp)

时间戳由4个字节,32位无符号整型数组成。标记的是在数据包的第一个发射序列的第三个发射组的时间(也就是下图的位置,第一个sequence的第3个group)。时间戳是TOH(top of hour)的偏移值,标记的是一个小时单位为微秒:取值范围为0~3599999999(60*60*1000*1000=3600000000);

 时间戳是至关重要的,因为它被地理参考软件使用来将每个激光发射与来自惯性导航系统的相应数据进行匹配。惯性导航系统提供了一系列的俯仰、滚动、偏航、偏航、纬度、经度和高程的时间戳值。通过将数据点的时间与INS的时间戳数据匹配,用户软件可以将数据从传感器的坐标系转换为地面参考系。时间戳与GPS/INS提供的世界协调时间(UTC)相匹配。当传感器通电时,它就开始使用内部时间参考来计数微秒。(这里指的是激光雷达自身也可以记录时间,未接入时使用的就是machine time)然而,传感器可以将其数据与UTC时间同步,以便可以确定在任何特定的数据包中的每个激光器的确切发射时间。UTC同步需要一个用户提供的GPS/INS接收器产生一个每秒同步脉冲(1PPS)信号和一个NMEA 的GPRMC消息(MSG)。GPRMC消息在UTC中提供分钟和秒。同步后,传感器从GPRMC消息中读取分钟和秒,并使用这些信息将传感器的时间戳设置为每UTC中超过该小时的微秒数。(这里的原理与电脑等设备授时原理相同

8.工厂位

这里不过多介绍,就是回波形式和产品代码

 4.2packet的结构

数据包的结构

数据包长1248字节,并通过端口2368上的UDP包发送。该数据包由42个字节的协议报头(Header)、12个数据块(block,一个block正如上面所说有100bytes)、1个4字节的时间戳(timestamp)和2个工厂字节(factory bytes)组成。你可以自行计算一下数目是否正确。数据包有三种格式:

 单回波的结构:

 我们来用前面的知识来分析一下,这个表是什么意思:首先从头看,一个packet是1248位,这个上面说了,还有一个header和timestamp,去除这些,一共1200bytes,分成了12列(这里的列就是block),每个block上面提到了是100个字节,包含了点的信息(距离、反射强度一共三个字节对应着外面的channel number 3bytes per channel)、flag和方位角。再来看序号,0~127,共128个,每个firing sequence 在单回波模式下由4个block组成,一个packet中可以有3个sequence(单回波模式下)。

双回波模式:

 因为双回波,数据量扩大一倍,所以一个packet只能放下一个firing sequence,就不详细说明了。此外还有双回波+置信度数据结构(Confidence Data Structure )这里也不展开了。

说完了data packet,再来说说 position packet:

位置信息包(通常称为遥感包)的作用是提供最近的、支持的NMEA信息的副本(copy),从外部GPS/INS/IMU源以及每秒脉冲状态,加上表示位置包组装时的时间戳,以及可能的其他相关信息。如果没有附加GPS/INS/IMU或其被禁用,则位置数据包中的NMEA语句、PPS状态和相关字段将为空(即所有零)。

该位置包是在端口8308上接收到的一个554字节的UDP包(默认情况下)。协议标头(Header)占前42个字节有效负载长度为512字节。位置数据包的结构(除去42字节的协议报头)有:

GPRMC句子以CR/LF终止,并以空字节填充到有效负载的结束。 

注意:位置数据包中的时间戳偶尔会与数据包相失调。这是正常的,因为数据包的传递是传感器的最高优先级,而位置包可能会暂时延迟,从而有利于传输数据包。(也就是当不稳定出现时会优先保证data packet

前面提到的PPS 的状态一共有4中,代表和描述如下:

 来看一个实际的粒子来理解:

 其中:

蓝色的部分:代表着以太网+IP+UDP header (42个字节,上面提到过)

橙色部分:时间戳(4字节) 注意转换时需要 5D8E5FFD = 1569611773  (Little-endian)

 红色:PPS状态(1个字节) 此时为locked

绿色:GPRMC 语句

 4.3精准时间的计算

如果要计算每一个点的精确时间,可以根据发射的规律来推算每一个offset。每一个sequence (还记得一个sequence是什么意思么?就是128激光序列)需要53.333μs来发射所有128个激光器并为下一次发射充能(RP0和RP1)最后的周期(RP2)的范围可能从0μs到3.882μs。RP2的平均长度约为1.941μs。(在此之前,固件会像发条装置一样每53.3μs执行一次触发序列)。这种差异(每个RP2的充能时间不同)的目的是为了减轻不同激光雷达之间的干扰

一个数据包(packet)中的第一个发射序列(firing sequence)TOH 7μs处,该数据包的时间戳被确定。在此之前的发射组的时间偏移是负的,而对于之后的时间偏移是正的(直到下一个数据包)。TOH在同一个标记上被同步。对于每个发射序列,出现在序列的数据块中的方位角被固定在序列中7μs的相似点上(即周围)。

 这就是三种情况,一个平均一个最大一个最小。时间戳打在哪里呢?每个包的TOH7微秒处,从上图可以看出7微秒处唯一第一个sequence的第三个group上与上面的描述一致

 所以按照规则可以得到补偿(offset)表格(仅展示单回波模式):

 12列(block)好理解,一共三个firing sequence,那为什么该图给出了32个packet呢?有些同学会突然反映不上来——行表示的是order in packet (32*4=128),这下你可能恍然大悟。也就是给出了128 laser的偏移量

可能你还记得上面的激光器的pattern,那么根据这个就可以的到每个角度的偏移量精确值:

 值得注意的是与上面所说一致——方位角与时间戳都会在第一个firing sequence的第三个group产生,并且方位角在每个sequence的第三个group都会产生(而时间戳仅在第三group产生)

 实现这个的伪代码:

// Do this for every packet
// packet_m represents an index to a packet
// datablock_n represents an index to a data block, valid range is 0 to 11
// point_k represents an index to a data point in the nth data block, valid range is 0 to
31
// Adjust for an azimuth rollover from 359.99° to 0°
// Note that a firing sequence spans four data blocks
If (Azimuth[packet_m+1][datablock_0] < Azimuth[packet_m][datablock_0])
Then
Azimuth[packet_m+1][datablock_0] := Azimuth[packet_m+1][datablock_0] + 360;
Endif// Adjust for a timestamp rollover from 3,599,999,999 μs to 0 μs
If (Timestamp[packet_m+1] < Timestamp[packet_m])
Then
Timestamp[packet_m+1] := Timestamp[packet_m+1] + 3600000000;
Endif// Determine the azimuth rate
Azimuth_Gap := Azimuth[packet_m+1][datablock_0] - Azimuth[packet_m][datablock_0];
Time_Gap := Timestamp[packet_m+1] - Timestamp[packet_m]
Azimuth_Rate := Azimuth_Gap / Time_Gap;// Loop over data blocks
For (datablock_n = 0 to 11)// Loop over data pointsFor (point_k = 0 to 31)// Determine laser numberLaser_Number := (datablock_n MOD 4) * 32 + point_k;// Lasers are fired in groups of 8Firing_Group := Laser_Number DIV 8;// InterpolatePrecision_Azimuth[point_k] := Azimuth[packet_m][datablock_n] + Azimuth_Rate *
(2.665 μs * Firing_Group - 7 μs);// Add rotation during RP0If (Firing_Group > 7)ThenPrecision_Azimuth[point_k] := Precision_Azimuth[point_k] + Azimuth_Rate *
5.33 μs;Endif// Apply the azimuth offsetPrecision_Azimuth[point_k] := Precision_Azimuth[point_k] + azimuth_offset[Laser_
Number];// Adjust for any rollover72 Alpha Prime User ManualIf (Precision_Azimuth[point_k] >= 360)ThenPrecision_Azimuth[point_k] := Precision_Azimuth[point_k] – 360;EndifEnd For
End For

4.4 将PCAP 文件转换为 点云文件

PCAP是一种二进制文件,不论你是在Velo View中 Record还是在WireShark中抓包,获得的文件都(可以)是PCAP格式的,其优点为体积小,而解包后的点云文件(如pcd)则体积会大得多。所以在大规模录制时我们保存为PCAP这样数据流小而当可视化时我们需要转换成点云来处理。

言归正传,如何转换呢?

将veladar数据的包捕获(pcap)文件转换为LAS、LAZ、XYZ、PLY或其他点云文件格式可能是一个简单的过程。pcap文件中传感器提供的数据是相对于传感器的参考系进行测量的——传感器随传感器移动的内部三维坐标系。这与数据点被引用到单个坐标系的点云文件明显不同。该坐标系可能是一个地球坐标系(纬度、经度、高程)或另一个方便的参考坐标系。将原始的激光雷达数据处理成一个点云被称为地理参考。在地理参考中,用户会考虑每次测量的传感器位置(X/Y/Z)和方向(俯仰/滚动/偏航)。知道这六个值,用户可以执行适当的数学热旋转和平移,将激光雷达数据参考到一个单一的坐标系。激光雷达客户用于地理参考的两种流行技术是惯性参考和同步定位和映射(SLAM)。通过惯性参考,用惯性导航系统(INS)随时记录传感器时刻的位置和方向。INS将全球定位系统(GPS)接收器与惯性测量单元(IMU)相结合。来自INS和激光雷达传感器的数据与GPS卫星的参考时钟进行时同步,使用户能够将每个激光雷达数据点与INS中的相应位置和方向进行匹配。将激光雷达数据与INS数据匹配后,每个测量都被数学转化为一个单一的坐标系。SLAM是机器人用于分析和导航其环境的一种技术。SLAM软件可以自动识别激光雷达数据中的静止物体。然后,该算法利用静止物体的位置,从数学上回撤出激光雷达的运动,并将数据转换成一个单一的坐标系。

总而言之我们知道了其编码根据规则解码即可,相对的是传感器中心也就是最前面写的,当然忽会有用户自己写了转换的工具(可以查找Github等,目前国产的许多激光雷达已经支持更改输出格式使得record和解码更加方便)。

5.激光雷达的通信

之前只是简单得说明了这个界面,现在详细说明一下连接后的配置界面。

 简单的或说明过的这里不在赘述。

 这里选取几个说明:

 PPS Qualifier :正如其所说是一个调整如何协同到UTC时间的参数。前面我们说过时间有机器自己的时间以及接入GNSS的UTC时间,设置是否需要PPS接入,PPS是否需要锁定,PPS的延迟(可接收的验证时间,以秒为单位),点击SET 激活这些配置

GPS Qualifier:同理,设置验证,是否需要GPS信息;

Phase Lock:相位锁,当PPS上升沿时处于的相位。可以用于同步两个或多个传感器的发射。(并能控制起始记录的位置)

 关于Velo View等配置这里也不再说明,此外其还能通过浏览器的curl指令控制。再提下附录中的内容:

6.附录中需要注意的

6.1激光器

激光雷达中每个激光脉冲的源是半导体激光二极管。激光二极管是一系列堆叠的p-n结,在概念上,与下图中所示的结相似。当电流通过junction时,光子产生并通过一端形成紧密聚焦的激光束。

由传感器产生的激光发射可以用红外相机或无红外滤镜的智能手机相机来观看(发射红外光)。这部分的照片是用红外照相机拍摄的。 虽然激光“斑”(Spot)和“点”(dot)常用于描述激光脉冲击中目标时,但实际上传感器的激光“点”是一个由三个较小的棒或光波段组成的小矩形区域,如下图所示。矩形的长轴与激光扫描的路径重合。

6.2 时间同步

上面我们也详细说了在配置界面设置PPS和GPS信息。再回顾一下如下图:

 这两个新选项控制了传感器如何利用提供给传感器的GPS信息。第一个控制选项决定传感器如何利用PPS信号(PPS Qualifer)。第二个控制选项决定了传感器如何利用国家海洋电子协会(NMEA)句子(GPS  Qualifier)中提供的时间戳。

激光雷达维护一个计数器,表示自最高小时(top of hour,TOH)以来的微秒数TOH计数根据内部振荡器递增。当传感器显示一个有效的PPS信号时,在每个PPS的上升边缘上调整TOH计数,以使TOH与UTC时间对齐。TOH在数据和 位置(遥感)数据包中以四字节的时间戳形式发送。这点之前我们也提到过,TOH是激光雷达器件内部时间,由晶振控制,晶振会随时间温度等产生漂移,这就是为什么我们要完成时间同步。每个PPS的作用是重置作用。

可能我们对于TOH还是不太理解:TOH由两个独立的计数器组成。一个计数器保持自小时的顶部以来的分钟数和秒数,而另一个计数器保持亚秒计数

 两者的组合值表示自小时顶部以来的微秒数。它的范围从0到3599999999μs——一小时内有3.6×109μs。亚秒计数器的范围为0到999,999μs。(也就是分为两部分,一部分为秒,一部分为秒以下(亚秒)的数值,最终的结果是两者的和

该传感器连续监测PPS输入,以评估所呈现的任何脉冲的定时特性。此过程在Web界面和位置数据包中显示。当传感器检测到有效的、稳定的PPS信号时,Web界面显示“PPS:锁定”(Locked),偏移(offset) 0xF4位置包中的PPS状态字段设置为0x02

分钟和秒计数器(也就是第一个负责记录秒的计时器)可以调整到NMEA sequence中提供的时间值。如果没有提供NMEA句子,则分钟和秒计数器每秒递增。(意思是如果不接入诸如GPRMC的NMEA数据,仅接入PPS也是可以的,此时秒计时器每秒自增,而若接入了GPRMC,则会提取其中的时间信息来代替器件的自时间)。

使用PPS信号来调整亚秒计数器,可以使传感器与PPS源保持同步,即使该源有轻微的漂移。当GPS接收器指示无效时,并开始使用自己的内部时间驱动PPS引用时,就会发生这种情况(指的是比如进入隧道等GPS无信号了,没有GPRMC了,此时一段时间内将切换为传感器自己的时间,但是PPS依然保持,从而可以起到修正防止漂移

关于Delay:此参数表示允许用户延长传感器验证PPS所需的时间单位为整数秒。可接受的值范围为0到65535。默认值为5秒。传感器通过由延迟参数定义的滚动n秒窗口不断识别PPS信号。在第一个情况下,PPS信号被认为不稳定,传感器进入自由运行模式,其中亚秒计数器由内部振荡器驱动。在自由运行模式下,子秒计数器不再随PPS信号的上升边缘进行调整。此外,TOH的分钟和秒组件会根据自由运行的子秒计数器的滚动开始递增。(这一段如何理解呢,为何要设置这个Delay呢?因为PPS信号未必一直是稳定的,我们前面也说到了,当发生一些情况的时候时间戳的记录方式会发生改变,默认值为5意思就是若无法识别PPS5秒就会切换

时间的情况可以看下表:

6.3相位锁

当使用多个彼此靠近的传感器(例如,安装在车辆顶部)时,传感器数据中可能偶尔会出现干扰图案。通过控制数据收集的地方来最小化这种干扰。

这个我们之前也谈的比较多了:在配置界面设置offset即可。

 设置完毕后,随着PPS你可以看到 phase 的状态和你设置的值一直在跳变。

 避免干扰的应用:

左右安装时:两个的offset如图

前后安装时:

7.多太激光雷达接入的配置

如下图:

至此威力登(Velodyne)激光雷达就介绍到这,下面将类比几款常见的其他雷达。

(概念自测)

阅读了以上的部分我有几个问题想提问:

1. 在Velodyne激光雷达中有很多个名词概念,packet,group,firing sequence、data point、data block这几个是什么意思,结构上有何关系么?(重要

2. 单回波双回波有什么特性和应用场合,在packet中有什么不同表现么?

3. RPM是什么意思,有什么用,是否RPM越大角度精度越大呢?

4. 相位锁(Phase Lock)是什么原理,有什么用?

5.在这个版本的固件中其timestamp是如何定义的?

6.机械式激光雷达的俯仰角(elevation)是如何得到的?

7. 对于理想的每秒出点数你可以想到用什么方法计算呢?

8.激光雷达的时间机制是怎样呢?PPS、NMEA(例如GPRMC)有什么用,在授时中起到什么作用?

9.每一个group的 firing sequence充能时间一样么,有几次充能?

10.给你一个时间戳你是否会计算,时间戳是如何计算的,和UTC时间有关么?和linux时间相比有什么关联么?

欢迎在评论区回答~

 --------------------------------------------------------------------------------------------

8. 其他激光雷达对比

目前国产的雷达已经有了很多明星产品了,市场占有率也非常不错,有的产品甚至比Velodyne性能还要好,支持的协议和内置算法更优。有的则已经实现了量产车的装车,本部分将简要的分析这些雷达的手册,将介绍速腾和禾赛这两家国产的激光雷达。你也可以尝试用前面学到的知识内容来分析其他激光雷达。目前很多4D雷达等以太网的和这种数据格式也是十分类似的,具有很强的参考意义。

8.1速腾激光雷达

 速腾推出了许多激光雷达,本文将对其Ruby (128线)和MEMES装车的M1半固态激光雷达进行简要说明。

8.1.1 RS-Ruby

为什么要先说ruby这款激光雷达呢,因为他也是一款128线的高端产品。

第一步先去看产品的特性(datasheet):

 产品的主要特性都在上图,我圈出来三处,帧率是10Hz或20Hz每秒出点量230万(单回波模式)和Velodyne的差不多,在时间同步上支持很多种同步方式:经典的1PPS+GPRMC以及PTP(IEEE 1588)gPTP(IEEE 802.1)

接下来我们在手册中说几点:

1.反射率信息:我们知道在Velodyne手册中,将反射率用一个字节表示,标准化到0~255。在RS-RUBY中这么定义:

 漫反射物体强度在0~100;全反射物体反射率强度在101~255。255为理想全反射。

2.GPS的使用:这里只提一点,可能之前没提到,接入激光雷达的GPRMC需要设置波特率为9600。

3.packet结构:这部分是其最重要的内容,rs-rub发出UDP协议1248bytes的有效荷载(1248有没有很熟悉?)分为主流数据(MSOP)和设备信息(DIFOP),数据结构示意图:

 结构安排和Velodyne还是有所不同的,主要部分类似都是由三个block组成的结构(威力登分为12个block但是实质上每四个block代表一个firing sequence,这里它一个block就代表一个firing sequence)我们来看看这里的block是如何定义的:

 其中channel data与Velodyne相同,都是用3个字节来表示,两个表示距离一个表示标准化的反射率(0~255);这里给出的距离的单位是厘米(cm)。

4.垂直角度(elevation)

Velodyne的激光器的pattern大伙可能还记得,ruby的对印关系如下:

 ruby的时间戳给到的是第一个channel的激光点时间,从而根据此计算offset即可。

5.其他特性

在配置界面,有些之前没说过的新特性:

 这款激光雷达可以分开的控制三个Group(这里的group定义未给出,这里的group和Velodyne 8个为一个group概念不同,根据特性,我推测指的是一个包中有三个block而每个block中都含有完整的128channel,从而对应的是一个packet(MSOP)中不同的激发序列,因为其就是128channel也可以理解为一次firing,从而这里可以控制packet中不同的激光sequence的属性比如不同的触发和FOV等等使得一个MSOP中带有不同性质的回波数据

RS View的功能可以录制也可以播放(解PCAP包),并可以导出CSV格式文件等特性。

此外还有关于ROS的配置这里略;

8.1.2 RS-M1

 M1激光雷达可以说是一款明星产品了,是一款正式装车量产的车规级雷达,其原理同旋转式不同。某款MEMS激光雷达内部如图:

 成像原理是通过Diffuser将激光散射,然后通过receiver lens收到反射信息。

与上面相同先来看特性:

 首先这款激光雷达的水平FOV是120度,主要关注前向。出点数为75万(单回波模式),时间同步方式仅有gPTP,重量只有730g。

对于M1我只简单的提几个独特的点:

1. MSOP packet结构

 可以看出分为了25个block,每个data block中有5个channel,这里就是实质上M1中有五个激光头,最后通过拼接成像的。

2. 使用软件 little robo来配置激光雷达

3.给出了ROS包,且在config.yaml中给出了参数说明可以调整你录制的策略。

8.2 禾赛激光雷达

 禾赛激光雷达势力也非常强,如果说M1是之前的明星产品,那么今年的vcsel 激光雷达 AT128绝对是明星产品。装车了一众车型,例如最近发布的理想L9等等。由于我也没有AT128的雷达和手册,我们就只来看看其关键参数,然后再说说其优秀产品pandar 128。

8.2.1 AT128

 出点量153万点每秒,非常强悍,水平视场角120度。下图更是写到“无拼接”120度超广视场角”这不是直接剑指M1。这里其波长是1550nm的距离可见光更远对人眼伤害小一些可以将功率开大一些,从而探测距离更远。

8.2.2 pandar 128E3x

 参数:

 出点数345万(远大于一般的240万点)所以能获得更好的分辨率。时间来源可以是传统的GPS以及PTP。

数据格式:

其数据主体:

  点云的解析:

 这里说的就比较简洁了。感兴趣的同学可以自己去申请手册看看~

9. 总结

本文上下两期可以说是为数不多能找到的对于激光雷达的细致。通过阅读手册和对于器件原理的理解能够更好的帮助我们开发相关算法设计相关方案。

除了文中提到的激光雷达,还有许多其他类型的激光雷达非常的promising,例如Aeva的FMCW激光雷达(Lidar on chip)等等都是人们讨论的热点话题

 Aeva结构简图

 Aeva效果图

-------------------------------------------------------------------------

感谢大家的阅读,希望能帮助到大家!另外感谢文中的各个厂商,从他们的产品中学到了很多!

附录:激光雷达实物靓照:

最后放上几张激光雷达靓照:

 Velodyne的VLS128 (Alpha Prime)很有分量

 禾赛 Pandar 128

 速腾M1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/352464.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

GEO-SPARK 2000X PPS使用记录(三)

最近单位突然要使用GeoSpark电火花&#xff0c;至少有4年没有用过了。我一直没有独立操作过&#xff0c;只是看同事操作过&#xff0c;碰巧的是会使用这个设备的同事去大洋了&#xff0c;悲剧的是他们把所有的采集狗都拿走了&#xff0c;留下一个巨大的坑让我来填。 1、首先看看…

CMOS图像传感器——工作原理

一、像素阵列结构 一般像素阵列是由水平方向的行( Row ) 和垂直方向的列(Column)正交排列构成的。像素排列的最基本设计原则是:摄像器件像素排列的坐标,必须在显示的时候能够准确地还原在图像原来的相对位置上。在大多数情况下,每个像素中心线在行的方向和列的方向,即…

Kerberos从入门到精通以及案例实操系列(二)

5、安全集群使用说明 5.1、用户要求 具体要求以下使用说明均基于普通用户&#xff0c;安全集群对用户有以下要求&#xff1a; 集群中的每个节点都需要创建该用户该用户需要属于hadoop用户组需要创建该用户对应的Kerberos主体 实操&#xff0c;此处以atguigu用户为例&#x…

3.了解Spring Boot2自动配置原理

了解Spring Boot2自动配置原理 1、SpringBoot特点 1.1、依赖管理 1.父项目做依赖管理 依赖管理 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.4.RELEAS…

Docker搭建Elasticsearch方法及启动后服务自动关闭的问题

太长不看&#xff0c;一句话总结 内存太小&#xff0c;启动命令中添加参数修改虚拟机大小即可 docker run -e ES_JAVA_OPTS"-Xms256m -Xmx256m" -e "discovery.typesingle-node" -d -p 9200:9200 -p 9300:9300 --name elasticsearch elasticsearch:7.6.0配…

NTP自动退出问题排查

为什么80%的码农都做不了架构师?>>> 问题现象:ntp进程运行一段时间后自动退出 排查过程: 查看/var/log/message ntp异常信息如下 Feb 20 22:54:41 xnu_1 ntpd[2187]: 0.0.0.0 0617 07 panic_stop -28777 s; set clock manually within 1000 s. Feb 20 22:54:57 …

Docker部署Elasticsearch及安装后自动关闭的问题

Docker搭建Elasticsearch方法 前往dockerhub官网&#xff1a;dockerhub 可查看elasticsearch相应版本 拉取镜像 选取一个版本拉取镜像&#xff0c;如docker pull elasticsearch:7.9.2 不输入版本默认拉取最新版 启动容器 映射端口为9200和9300 docker pull elasticsearch:…

自动化基础笔记--元素操作

元素操作&#xff08;附带鼠标悬停&#xff09; 一些课程回顾&#xff0c;问题原因总结 函数只有在return的时候&#xff0c;才会返回一个数据。返回数据了才可以赋值的 报错&#xff1a; 等待时间不够返回的元素不是你想要的确实是你表达式写错了有句柄未切换或者有iframe未…

服务器设置了自动校时但是,同步时钟配置电脑自动校时

同步时钟配置电脑自动校时 一、同步时钟操作和指示灯说明。 同步时钟可接收全球定位系统GPS、北斗卫星信号。当GPS/北斗天线架设到屋顶时&#xff0c;天线的高度必须低于房屋顶避雷天线的高度&#xff0c;防止被雷击。 先关闭电源后再连接或者去掉天线。 电源指示灯&#xff1a…

计算机怎么关闭开机自启应用,如何关闭电脑开机自动启动的软件程序

如何关闭电脑开机自动启动的软件程序 我们在电脑中安装软件的时候,不小心设置了开机启动,该怎么取消呢?今天就跟大家介绍一下如何关闭电脑开机自动启动的软件程序的具体操作步骤。 1. 首先打开电脑,找到桌面上的【360安全卫士】软件,双击打开: 2. 进入主页面后,点击上方…

Latex使用algorithm2e包写伪代码

用Latex写伪代码我们需要用到一个包&#xff0c;Algorithm2e&#xff0c;这个工具包的使用手册下载地址为&#xff08;http://mlg.ulb.ac.be/files/algorithm2e.pdf&#xff09;CSDN的链接为&#xff08;&#xff09; 准备 导入该包 \usepackage[ruled,linesnumbered]{algor…

【复杂网络建模】——基于微博数据的影响力最大化算法(PageRank)

&#x1f935;‍♂️ 个人主页&#xff1a;Lingxw_w的个人主页 ✍&#x1f3fb;作者简介&#xff1a;计算机科学与技术研究生在读 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4a…

【Markdown小技巧】 整理小图标和表情符号

&#x1f40b;作者简介&#xff1a;博主是一位.Net开发者&#xff0c;同时也是RPA和低代码平台的践行者。 &#x1f42c;个人主页&#xff1a;会敲键盘的肘子 &#x1f436;座右铭&#xff1a;总有一天你所坚持的会反过来拥抱你。 &#x1f308;写在前面&#xff1a; 让博客变得…

工信部—高级软件开发工程师认证

工业和信息化部教育与考试中心是工业和信息化部直属事业单位&#xff0c;承担计算机技术与软件专业技术资格考试、通信专业技术人员职业水平考试、电子通信行业职业技能鉴定、全国信息技术人才培养工程、产业工人网络平台建设等人才培养选拔工作。 软件工程师(Software Enginee…

EasyCVR视频汇聚智能边缘网关在多平台级联及上下级对接中的应用说明

一、行业背景 近年来&#xff0c;在政务数据共享平台的建设上&#xff0c;对国家、省数据、市数据及区县对接上要求打破“信息孤岛”&#xff0c;拔掉“数据烟囱”&#xff0c;全面打通数据“脉络”的主通道。省市平台“级联对接”工作&#xff0c;由国家数据共享平台、省级数据…

水球图的使用

水球图的使用 注意&#xff1a; echarts-liquidfill3 版本匹配 echarts5 版本&#xff0c;echarts-liquidfill2 版本匹配 echarts4 版本 npm install echarts-liquidfill2.0.2 --savevue代码演示&#xff1a; <template> <div class"com-container">…

python制作水球图

水球图是一种适合于展现单个百分比数据的图表类型&#xff0c;pyecharts模块能够非常方便画出水球图&#xff0c;进而实现酷炫的数据展示效果。 下面给大家介绍一下常见水球图的实现方法&#xff1a; 一、基本水球图 from pyecharts import options as opts from pyecharts.cha…

vue3实现水球图

水球图实现的方式有很多种&#xff0c;譬如&#xff1a; a.通过canvas 的sin 绘制水波实现 b.通过canvas的贝塞尔曲线实现水波 c.通过echarts的echarts-liquidfill水球图插件实现 canvas手写水球图确实也不难&#xff0c;只不过效果没有使用echarts-liquidfill插件的好&…

动态水球效果

&#xff08;1&#xff09;首先画出两条虚线之间的弧&#xff0c;以左上的那个点为原点 <div class"wave"></div> .wave { height: 100px; background-color: rgb(125, 242, 142); margin-top…

echart-水球图

Echarts学习之——水球图(echarts-liquidfill) ​ 水球图(Liquid Fill Chart)是填充仪表盘的一种,适合于展现单个百分比数据的图表类型。一般用以于显示利润,回款等财务指标。 安装 npm i echarts npm i echarts-liquidfill注意&#xff1a;echarts-liquidfill3版本匹配echar…