工作里接触激光雷达的同行,估计都听过PandarView这个工具。它是禾赛官方推出的点云可视化软件,专门用来查看Pandar系列雷达的实时点云、录制采集数据包,也能回放离线的pcap文件。很多做自动驾驶、机器人、测绘的朋友,第一步验证雷达有没有正常出点,用的就是它。这篇博文,我就从实际使用的角度,把PandarView从安装到实时数据采集的完整流程拆开讲讲,包括我踩过的坑和一些经验性的建议,希望对刚接触点云这块的读者有所帮助。
无论你是刚拿到一台雷达想快速看效果,还是准备出门采集数据做算法开发,这套流程都能直接参考。我把整个过程分成五个阶段:先搞清楚这个工具到底能干什么,再完成安装部署,接着熟悉界面操作,然后进入实时采集和pcap录制的正题,最后整理一些常见问题和排查思路。按这个顺序走下来,基本就能掌握PandarView的核心用法了。
1. PandarView是什么,为什么点云可视化和实时采集都绕不开它
1.1 点云可视化这件事,到底难在哪
先说点云是什么。激光雷达发射激光束,打到物体表面反射回来,根据光的飞行时间就能算出目标点的距离,再结合扫描角度得到这个点的三维坐标。成千上万个这样的点集合在一起,就形成了点云。点云里的每个点都带着xyz坐标,有的还带反射强度、时间戳等信息。可视化就是把这些散乱的点渲染到屏幕上,让工程师能直观看到雷达视野里的场景。
听起来不复杂,但真正想在电脑上看实时点云,有三个绕不开的门槛。
第一是协议解析。激光雷达通过UDP把数据包发到主机,每个数据包里包含一帧扫描的部分点、时间戳、转速信息等。要把它解析出来,需要完全了解雷达的通信协议。Pandar系列雷达的UDP数据包结构里,包含多少个block、每个block有多少个channel、数据是几字节对齐,这些细节直接决定了解析的正确性。自己写协议解析不是不行,但开发和调试周期很长。
第二是渲染显示。几万到上百万个点要在界面上流畅旋转、缩放,这对渲染引擎是有要求的。自己做比较费时间,而且效果不一定好。
第三是数据采集。实时数据流看着好好的,怎么录下来?录下来的数据怎么回放?回放时怎么逐帧分析突发状况?这些功能自己开发一套,工作量不小。
PandarView解决的就是这三件事。它把协议解析、点云渲染、数据采集回放都封装好了,拿到雷达打开软件就能看到实时点云,点一下录制就能存pcap数据包,配合Wireshark还能做底层网络分析。
1.2 PandarView的核心能力边界
我实际用下来的感受是,PandarView这工具的设计目标很明确,就是"快速验证雷达状态+数据采集",它不是一个用来做算法开发调试的平台。它的核心能力集中在下面几个方面:
一是雷达型号覆盖比较全。Pandar128、Pandar64、Pandar40P等主流型号都能自动识别,你选好型号连上IP,它就能以正确协议解析数据,不需要手动配置包格式。
二是实时显示与状态监控。界面上的3D视图能流畅显示百万级点云,同时能看到雷达的转速、温度、点云帧率这些状态信息。这几点对判断雷达是否正常工作很有用,比如温度异常升高,就要留意散热了。
三是一键录制pcap。采集数据是它的强项。点一下Capture,它就把UDP数据包原样存成pcap文件。这个pcap是后续离线调试的原材料,配合回放功能可以反复分析。
四是pcap回放。采集完成后,可以随时加载pcap文件回放当时的场景。回放时能看到时间戳、帧信息,也可以暂停、单帧步进,方便仔细看某个瞬间的点云。
不过也要说清楚,PandarView在点云后处理方面比较弱。像滤波、去噪、地面分割、目标聚类这些算法层面的操作,它不是拿来干这个的。它的定位更像是"雷达的取景器和录像机",拿它确认数据质量、采集数据,一级棒;拿它做点云数据处理,那就超出它的能力范围了。
1.3 谁适合看这篇文章
如果你是以下人群,这篇文章对你会有直接的帮助:
- 刚拿到Pandar系列激光雷达,想快速确认雷达能不能正常出点、点云效果如何的工程师
- 准备外场采集数据,需要用PandarView录制pcap文件作为数据集素材的算法或者测试工程师
- 开始做激光雷达相关项目,想系统了解点云数据是怎么从硬件到电脑再到画面的开发人员
- 使用CloudCompare、Halcon等工具做点云后处理,但不太清楚数据源头怎么采集和导出的朋友
我下面讲的每一步,都是基于我在实际项目中反复操作、踩过不少坑之后总结出来的。你照着做,可以少走很多弯路。
2. 安装部署:从下载到跑起来,需要注意的几个关键点
2.1 环境准备:Windows和Linux各有各的坑
PandarView支持Windows和Linux两个平台。官网下载页会根据你的系统给出对应版本。Windows的安装包里包含了运行所需的大部分依赖库,Ubuntu下则需要自己装一些依赖。
Windows比较简单,基本是双击安装包,一路下一步就装好了。不过安装路径尽量不要选带空格的目录,原因后面会说,某些脚本和第三方工具对带空格的路径处理有概率出问题。
Linux推荐使用Ubuntu 18.04或者20.04,这两个版本对激光雷达生态的兼容性比较好。官网一般提供的是.tar.gz压缩包,解压后运行里面的可执行文件即可。
依赖上需要注意,PandarView依赖OpenGL、Qt和GLUT这些图形库。特别是GLUT库,点云渲染的时候要用到。Ubuntu下没有GLUT的话,启动会报错找不到符号。
2.2 安装步骤与验证
我这里以Ubuntu系统为例,说一下典型的安装流程。
第一步,确保基础依赖已安装:
sudo apt-get update sudo apt-get install -y build-essential cmake libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev libqt5core5a libqt5gui5 libqt5widgets5 libpcap-devbuild-essential不用多解释,编译工具链。libgl和libglu是OpenGL的基础库。freeglut3-dev是OpenGL的实用工具库,没有它渲染窗口起不来。libpcap-dev是pcap读写相关的库,录制和回放都依赖它。这些一键装好之后,基本就解决依赖问题了。
第二步,解压PandarView软件包:
tar -zxvf PandarView.tar.gz cd PandarView chmod +x PandarView第三步,运行:
./PandarView如果一切正常,会弹出PandarView主窗口。在左侧选择雷达型号,填上雷达IP,就能看到点云了。如果打不开,先检查GLUT相关报错信息。
Windows安装结束后,桌面上会有快捷方式。启动后如果提示缺少DLL文件,通常是VC++运行库没装,去装一下对应的Visual C++ Redistributable即可。
2.3 关于网络配置的一个建议
因为PandarView是通过UDP接收雷达数据的,所以电脑和雷达之间必须网络可达。Pandar系列雷达默认IP一般是192.168.1.201,主机需要设置成同一网段的静态IP,比如192.168.1.102。
这里有一个常见的误区:很多人直接把电脑IP设为自动获取(DHCP),然后连不上雷达,就开始怀疑雷达坏了。实际上雷达出厂默认是静态IP,电脑必须手动设置成同网段的IP才能和它通信。
我的建议是,用网线直连雷达和电脑,把电脑的有线网卡IP设置为192.168.1.x,子网掩码255.255.255.0,网关不用填,然后先用ping测试一下通不通:
ping 192.168.1.201如果ping通了,说明物理链路和数据链路都正常,接下来PandarView的连接就不太可能碰到网络问题了。这一步建议一定做,能够把问题范围缩小很多。
提示:如果用的是笔记本,记得在系统设置里检查网卡防火墙。Windows和有些Linux发行版默认打开防火墙,UDP数据包容易被拦截,导致PandarView收不到数据。建议把防火墙对UDP端口(雷达数据端口大范围)放行,或者直接关闭防火墙进行测试。
3. 界面与核心功能拆解:不光会看图,还要懂数据状态的含义
3.1 主界面布局:四个区域看一眼就能上手
PandarView打开之后,界面比较简洁,主要分为四个区域。
顶部是菜单栏,包含File、View、Tools等菜单项。一些不常用的高级功能比如打开适配器配置、切换一些显示选项,都在这里面。左侧是控制面板,用来选择雷达型号、填入雷达IP、点击连接/断开,同时下方还有一些显示模式相关的参数。通过它你可以配置一些显示相关的选项,比如显示点云的着色模式、是否显示网格等。中间最大的一块是3D视图区,实时渲染的点云就在这里显示,鼠标左键拖拽可以旋转视角,右键拖拽可以平移,滚轮负责缩放。底部是状态栏,显示当前连接状态、点云点数、帧率、时间戳等实时信息。
这四个区域的配合逻辑非常直观:左边管连接,中间管显示,底部管状态,顶部的菜单在做回放和高级设置时会用到。整体学习成本很低,半小时就能上手。
3.2 3D视图区的操作习惯,建议先练熟
3D视图区的鼠标操作看起来简单,但实际外场采集时,如果你没提前熟悉,很容易在关键时刻手忙脚乱。
- 左键拖拽:旋转视角。雷达点云默认是360度环绕的,你站在某个角度看,会有一半的点云在视野之外。旋转视角时注意观察不同方向的点云稠密程度,这能快速发现雷达是否有遮挡或盲区。
- 右键拖拽:平移视图。当你要仔细看某个局部区域的点云细节时,先用右键把视角挪到目标位置,再配合缩放。
- 滚轮:缩放。滚轮缩放到最小,可以看到雷达周围的完整点云轮廓;缩放到最大,可以看清楚几米外物体的点云细节。
还有一个细节值得注意:按F键可以重置视角到默认位置。这个快捷键在操作过程中非常实用,有时候视角转乱了,按一下F就回到初始视角,比手动转回来快得多。不少人在外场采集时视角转乱了又不记得这个快捷键,只能退出重进软件,浪费时间。
3.3 底部状态栏的数据含义
底部状态栏不是摆设,它告诉你雷达正在以什么状态工作。
- 连接状态:显示当前是Connected(已连接)还是Disconnected(未连接)。
- 点云点数:实时显示当前帧包含多少个点。不同型号的雷达点数差异很大,Pandar128有128线,一帧几百万点;40线的就少很多。如果你发现点数突然骤降,大概率是目标遮挡或者雷达受到干扰。
- 帧率:雷达的扫描帧率,通常在10Hz左右,取决于你设置的转速。Pandar系列支持300到1200转每分钟,对应5Hz到20Hz的帧率。帧率异常低,说明网络传输有拥塞或丢包,需要检查链路质量。
- 时间戳:显示当前帧的时间戳。时间戳对于同步非常重要,尤其是在做多传感器融合时,每个点云帧的时间戳要和相机图像、其他传感器的数据对齐。
建议在采集之前先对着静态场景观察几分钟,熟悉正常状态下点数和帧率的波动范围。这样采集过程中一旦出现异常,你能第一时间察觉。
3.4 着色模式的选择与观察技巧
PandarView提供几种着色模式,默认一般是按距离着色,点云颜色从近到远呈现从蓝到红的变化。这对判断场景深度很直观,近处的点偏暖色,远处的点偏冷色。
另一种常用的是按反射强度着色。反射强度能反映物体的材质特性,路面、树木、金属护栏、行人服装的强度值差异很大。调成强度着色后,用鼠标点击某个点,状态栏会显示这个点的强度值。这个功能在数据分析阶段很有用,比如你想探测路面标线的反射特征,用强度着色看会非常清楚。
实际使用中,我建议观察点云时按距离着色,分析目标物特征时按强度着色,两种模式切换着看,能获取的信息比单一模式多很多。
3.5 双回波模式的理解
Pandar系列雷达支持单回波和双回波模式。在控制面板上可以选择模式,双回波模式下每个激光脉冲会返回两个距离值。
这个特性怎么理解呢?一束激光打到玻璃上,一部分光被玻璃表面反射,另一部分穿透玻璃打到后面的物体上,最后会有两个回波。双回波模式就能同时记录这两个距离值,对应的就是两个点的不同坐标。
实际工程中,处理雨雾天或者玻璃幕墙场景,双回波模式能有效区分真假目标。PandarView里切换双回波后,点云数量会明显增加,这对验证雷达的抗干扰能力很有帮助。需要注意的是,双回波模式下数据量翻倍,对网络带宽和存储空间的需求也更大,采集时要注意磁盘空间。
4. 实时数据采集实战:从连接雷达跑到拿到完整的pcap文件
4.1 连接雷达:按下连接键之前,先确认这几个参数
连接雷达看起来是点一下按钮的事,但我在实际项目中碰到过很多连接不上的情况,大部分都是因为参数没提前确认好。在按下Connect按钮前,我建议你按顺序确认以下内容。
第一步,确认雷达型号。在控制面板的下拉菜单里,选择对应的雷达型号。选错了,协议就不对,即使网络通了也会报错或者显示乱点。如果你用的是Pandar128,却在软件里选了Pandar40P,那能解析出点云才是见了鬼。
第二步,确认雷达IP。默认是192.168.1.201。如果你在之前的项目中改过雷达的静态IP,要确保填对。这个IP信息可以通过雷达的控制软件或者配置文件去查询,不要想当然。
第三步,确认主机IP在同一网段。这个问题前面提过,这里再强调一次。雷达IP是192.168.1.201,电脑IP必须是192.168.1.x,子网掩码255.255.255.0。有时候你会遇到很奇怪的组合,比如雷达IP是10.0.0.1,那就需要把电脑IP改成10.0.0.x。
第四步,确认没有其他程序占用UDP端口。PandarView默认监听雷达数据端口。如果你同时开了多个点云工具,或者上次运行的程序没有正常退出,端口被占用会导致PandarView收不到数据,现象就是连上去了但看不到点云。
这些参数都确认无误后,点击Connect。正常情况下,一两秒内底部状态栏就会变成Connected,3D视图区开始刷出点云。
4.2 实时点云出现以后,先做这四件事
连接成功后,先别急着录数据。我建议按下面的顺序做一轮快速检查。
第一,检查点云帧率和点数是否正常。看底部状态栏,正常情况下帧率应该稳定在雷达设置的目标值,比如10Hz。点数应该饱满,没有大片空洞。
第二,检查盲区范围。站在雷达旁边,或者拿一块遮挡物靠近雷达,观察点云是否能正确形成物体的轮廓。这个动作能验证雷达的测距精度和最小探测距离是否正常。
第三,检查不同距离的点云清晰度。找个固定的结构物或者墙,看看不同距离点的密集程度是否合理,有没有跳变或者重影。跳变通常是指某个点在相邻帧之间距离变化异常,可能是物体在动,也可能是测距噪声。
第四,检查设备温度。PandarView能显示雷达的工作温度。温度过高时激光器容易出问题,点云就会有异常。正常状态下雷达温度会随着工作时间的增加逐渐升高,然后稳定在一个范围内。如果温度持续上升且异常高,建议立即停止测试,检查散热。
这套动作看起来简单,但坚持做的人不多。很多人在外场录了一堆数据回来,回放时才发现点云质量不行,浪费了大量时间。实时阶段花五分钟做检查,比回来花一整天清理数据要划算得多。
4.3 录制pcap包:外场采集的重要操作
确认实时点云正常后,就可以开始录制了。
在PandarView的菜单里找到Capture或者Record选项,选择一个保存路径,点击录制按钮,程序就会把当前收到的UDP数据包原样写入pcap文件。
录制时有几个经验值得分享。
第一,录制时长按需控制。Pandar128的数据量很大,录制的pcap文件增长速度非常快。以一个完整的10Hz扫描来说,每分钟的数据量能达到数百MB甚至上GB。所以在开始录制前,先看一眼磁盘剩余空间,预估一下最多能录多久。
第二,pcap文件建议用短时长分段保存,比如每5分钟或者每10分钟存一个新文件。这样做有两个好处:一是单文件小了,后续打开和分析更快;二是如果某个时段的数据有问题,不用整体重新采集,只丢掉那一段就行。现场的调试效率能提升不少。
第三,录制时保持场景丰富度符合采集目标。如果你要训练目标检测算法,录的场景就要包含不同距离、不同角度的目标物;如果你要测试定位算法,场景里应该有一些稳定的高反射特征物,比如路灯杆、交通标志。录制内容的质量直接决定后续算法的效果。
第四,录制时要记录现场日志。我会随手记一下时间点、场景描述、雷达参数、天气状况(如果是外场)。比如"14:35-14:45,十字路口,Pandar128,10Hz,晴",待后续数据分析时,这些日志就是重要的参考依据,能省很多排查时间。养成这个习惯后,整理数据集会轻松很多。
注意:有些情况下,雷达数据是加密的或者采用了私有协议格式,录制的pcap文件在别的软件里无法直接解析。这是正常的,PandarView的回放功能可以在本软件里打开pcap,但如果要拿到别的平台用,需要关注数据的格式和权限问题。
4.4 pcap回放:采集回来之后怎么做离线分析
录制完数据,在外场就可以直接打开pcap回放。把pcap文件拖进PandarView或者从回放菜单加载,就能看到当时的点云场景。
回放界面上有几个常用控制:播放/暂停、上一帧/下一帧、播放速度调节。播放速度非常实用,正常情况下用原始速度播放,观察目标运动;想仔细看某个瞬间,减速到0.5倍;想快速浏览整个场景,加速到2倍或4倍都可以。
还有一个很有用的功能是单帧步进。暂停之后逐帧前进,能看到目标物每一帧的位置变化。这对分析运动物体的轨迹,或者查看某一瞬间的点云畸变,都很有价值。我在做雷达和相机时间戳同步的时候,经常用单帧步进的方式逐帧检查时间戳和点云形状的关系,这比盲调代码效率高得多。
回放过程中,界面右侧或者菜单里可以看到当前帧的详细信息,包括时间戳、点数、帧ID等。帧ID是雷达每一帧扫描的序号,如果发现两帧之间的序号不连续,说明中间有丢包,对应的点云数据缺失会比较严重,在分析时要注意。
4.5 从pcap到其他工具的数据桥梁
PandarView录制的pcap文件,最直接的用途就是在PandarView里回放。不过在实际项目中,pcap文件还需要提供给更多工具使用。
比如把点云数据导入CloudCompare做配准、测量,或者把深度数据转换成点云格式做进一步处理,都需要先把pcap解析成pcd、ply、las等通用点云格式。禾赛的SDK(如HesaiLidar_GeneralSDK)里就提供了从pcap解析点云的示例程序,可以用它把点云导出成pcd文件。
这块内容超出了PandarView本身的功能范围,但和点云数据采集链路是一体的。我的建议是,用PandarView完成采集和初检,用SDK做格式转换,然后用CloudCompare、PCL等工具做深入分析。这条链路是我目前用下来最顺的。
5. 常见问题与排查技巧实录
5.1 常见问题速查表
下面这个表格是根据实际使用中遇到的高频问题整理的,可以直接作为排查手册使用。
| 现象 | 可能原因 | 排查方法 |
|---|---|---|
| 连接不上雷达,状态一直是Disconnected | 主机IP和雷达IP不在同一网段 | ping雷达IP,不通则改主机IP |
| 连接成功但看不到点云 | 防火墙拦截UDP数据包 | 关闭防火墙,或放行雷达数据端口 |
| 点云中间有条明显的缝隙 | 雷达局部死角或者遮挡 | 检查雷达安装位置和周围环境 |
| 点云闪烁或跳动剧烈 | 网络丢包严重或UDP缓存溢出 | 检查网线、网卡速率,必要时使用千兆网卡 |
| 录音pcap时文件增长极快 | 雷点云数据量大,属正常现象 | 规划好硬盘空间,分段录制 |
| 回放时卡顿 | 点云数量大,电脑性能不足 | 降低显示分辨率或用低速播放 |
| 软件启动即崩溃 | 缺少图形库依赖(Linux下常见) | 安装libgl、libglu、freeglut等依赖 |
5.2 排查思路的三板斧
遇到问题先别慌,我的经验就是按三步走。
第一步,确认网络通不通。ping雷达IP,通或者不通,问题范围立刻缩小一半。不通就查网线、IP配置、网卡状态;通了就进入第二步。
第二步,确认端口通不通。雷达数据是UDP协议,如果防火墙拦截,会出现ping通但PandarView连接不上的现象。在电脑上抓包看一下,或者临时关闭防火墙测试,能很快确认是否是拦截问题。
第三步,确认软件配置和雷达型号。检查PandarView里选的型号和实际雷达型号是否一致,数据端口是否匹配。型号选错会导致解析错误,表现出来就是连接上了但点云乱飞甚至完全空白。
这个排查逻辑简单直接,90%的PandarView连接问题能通过这三步定位出来。剩下的10%,多半是硬件故障或者线缆问题,那就需要联系设备供应商了。
5.3 外场采集中容易忽视的几个细节
外场采集和室内测试比,不可控因素多很多。我吃过亏,所以给几个建议。
一是散热问题。外场太阳直射下,雷达长时间工作温度会快速上升。温度和点云质量强相关,温度过高时测距精度会下降。条件允许的话,给雷达准备一个遮阳伞或者通风支架。
二是网线问题。外场经常需要长距离连线,普通的五类线在长距离或者高带宽下容易丢包。建议使用质量好的屏蔽六类网线,而且外场环境有电磁干扰,屏蔽层的存在很有作用。我经历过一次点云突然变成"雪花"状的问题,排查了半天,最后发现是网线接头处接触不良。
三是供电稳定性。雷达和外场采集电脑尽量使用同一个电源排插,避免电压不稳。电压波动会引起雷达工作状态异常,同时雷暴天气下外场设备要提前做好防雷措施。
四是车架振动。如果雷达装在车顶支架上,行驶过程中的振动会直接影响点云质量。点云的畸变和振动有着直接的关系。采集之前务必紧固好支架螺丝。
5.4 pcap数据分析的一个实用技巧:用Wireshark辅助检查
除了在PandarView里看现象,我还会用Wireshark辅助做一点底层分析。方法也比较简单:采集时同时打开Wireshark抓包,统计一下UDP数据包的顺序、间隔和数量。正常工作时,雷达以固定频率向外发送UDP包,间隔时间非常均匀。如果发现包到达间隔忽大忽小,或者某些包的序号出现跳变,就说明网络链路中发生了拥塞或者丢包,这时候PandarView里的点云大概率表现异常。
用Wireshark抓包是个常规操作,不要搞得像是在做底层逆向一样,它只是把链路问题从现象层面提升到了理论层面。很多时候在外场,视觉上看起来正常的点云,回放时才发现丢包严重,就是因为没有做链路层面的检查。这个步骤加上之后,出问题时的定位速度能提升好几倍。
5.5 关于PandarView的版本更新
工具在使用过程中,版本更新也是一个值得留意的事情。新版本常常会在显示性能、协议稳定性、对新型号雷达的支持上有改进。遇到连接不上的问题,如果上面的排查步骤都试过了还是不行,可以试试升级到最新版本。
不过升级之前要确认一点:你手头激光雷达的型号在新版本里是否还支持。某些雷达的老型号在新版本里属于兼容模式,个别功能可能不正常。稳妥的做法是,生产用的电脑和测试用的电脑各装一个稳定版,确认新版本没问题再在生产环境切换。
写在最后
PandarView这类工具,看起来简单,真正用好还是需要花点时间的。我在实际使用中最深的体会就是,连接雷达之前的网络参数检查绝对不能跳过,录数据前对点云质量做一轮快速检查也绝不能省。这两步做好了,后面能省掉大量的返工。
最后再分享一个小技巧:录制pcap的时候,同时用手机拍一段现场视频,记录当时的场景布局、目标物位置、天气光照等信息。后面分析点云数据的时候,把视频和点云回放对照着看,能发现很多单独看点云难以发现的规律和问题。这个习惯我从一开始采集数据就坚持,后来做算法迭代,这些现场记录成了非常宝贵的参考资料。
希望这篇基于实际操作的分享,能帮你在PandarView和点云数据采集这条路上少踩些坑。如果有用到过程中碰到其他有意思的问题,也欢迎交流,说不定下次我还能再写一篇实战记录。