首页 / 资讯中心 / 文章详情

AT128激光雷达Ubuntu 20.04点云可视化:从网卡配置到RViz保姆级教程

AT128激光雷达Ubuntu 20.04点云可视化:从网卡配置到RViz保姆级教程 ★ FEATURED ARTICLE
很多第一次接触工业激光雷达的人和我当初的心态一样以为只要把AT128接上电、插上网线、打开官方软件点云就会自动铺满屏幕。实际情况是我见过太多人卡在同一个地方——软件打开了雷达的绿灯也亮了但可视化窗口里只有灰底和坐标轴一团点云都没有。这不是雷达坏了而是链路里某一层没对。AT128是混合固态激光雷达它的内部已经完成了测距和角度解算通过以太网UDP包发出来的就是结构化点云。理论上从物理连接到看到点云只需要三样东西能互相通信的网络、能解析UDP包的工具、能渲染点云的显示端。听起来很简单但恰恰是“能互相通信”这四个字卡掉了至少一半的人。这篇文章要解决的问题很直接在Ubuntu 20.04上从一块干净的网卡开始把AT128雷达的实时点云跑进PandarView 2再把同一路数据接入ROS Noetic加RViz做可视化。内容偏向保姆级命令和配置都会给出来适合第一次接触工业LiDAR、不太熟悉网络配置、对驱动版本没概念的人。已经折腾过一版SDK但对链路全貌还不够清晰的朋友也能从这里找到排查思路。1. 先理清数据链路AT128 的点云从哪里来要送到哪里去1.1 一台雷达就是一台“点云服务器”先说一个容易被忽略的事实AT128并不需要我们去做点云解算。它内部有128个激光收发通道通过一块高速扫描振镜把光束在水平方向展开每个激光点用飞行时间法测出距离再结合发射角度换算出三维坐标最终在雷达内部组帧、打包以UDP包的形式从网口发出来。这意味着软件侧的工作量被大幅压缩了我们不需要像处理老式UDP裸数据那样自己写时间校准、距离修正、角度换算的算法。驱动要做的事情本质上是“订阅”雷达这个点云服务器发出来的数据流然后重组为可视化工具能识别的点云结构。AT128的主要参数大致是这样水平视场角120度、垂直视场角25.4度、128线最远量程标称200米输出频率常见配置是10Hz。这个参数组合让它非常适合作前向感知或者路侧感知的主雷达。装满128线的数据包每秒大约有几百万个点对主机网卡和CPU解包还是有一定压力的所以不要拿一台太老的电脑来跑。1.2 分层理解物理层、解析层、消费层我把整个实时点云链路拆成三层排查问题的时候一层一层过效率会高很多层级对应组件主要职责物理层网卡、网线、IP配置让雷达UDP数据包能进入主机解析层PandarView 2 / hesai驱动 / SDK把字节流还原成带坐标和强度的点云消费层可视化界面 / PCL / ROS话题显示点云、存储数据、跑算法大多数新手出问题都出在物理层也就是网络配置不对。雷达默认IP是192.168.1.201之类的固定地址主机网卡却还停留在DHCP自动获取状态两边不在同一个网段数据自然过不来。还有一部分问题出在解析层的版本兼容上比如PandarView 2缺少动态库、驱动版本和固件不匹配。我建议第一次接触AT128的朋友先不要一上来就搞ROS而是先用PandarView 2把物理层和解析层验证通。原因很简单PandarView 2是官方打包好的图形工具如果你能在里面看到点云说明网线、IP、网卡、UDP链路全部正常这时候再去接ROS驱动剩下的事情就只有配置参数而已。2. 系统与硬件准备Ubuntu 20.04 的安装细节和显卡驱动到底要不要装2.1 装系统时的几个选择直接影响后面省不省心虽然Ubuntu 20.04已经发布了很长时间但我还是建议用20.04.6这个最终维护版本而不是早期的小版本。镜像可以从清华镜像站下载速度快而且完整。制作启动盘用dd命令就能解决不需要额外工具sudo dd ifubuntu-20.04.6-desktop-amd64.iso of/dev/sdX bs4M statusprogress安装过程中有几个选择值得多说一句。首先是硬盘分区如果你这台机器后面要用来存点云数据集建议单独划分一个大容量的home分区或者数据盘因为一段几十分钟的AT128点云录制文件就能轻松占掉好几个GB。其次是用户名不要用中文用户名后面编译ROS、配置驱动环境的时候路径里带中文会引发各种莫名奇妙的库路径问题这个坑我踩过完全不值得再试。装完系统以后第一件事是更新apt源。Ubuntu默认源在国外速度不稳定换成清华源或者阿里源sudo sed -i s/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g /etc/apt/sources.list sudo apt update sudo apt upgrade -y到这里系统层面就准备好了还没到和雷达驱动相关的部分。2.2 显卡驱动分清楚“必需”和“可选”很多人搜索“Ubuntu 20.04 点云可视化”的时候会看到一个高权重相关的词nvidia 520 linux 64-bit ubuntu 20.04进而误以为先装NVIDIA驱动才能跑点云。这里必须说清楚PandarView 2和RViz渲染点云用的是OpenGL和CPU不依赖CUDA所以如果目的只是“让点云显示出来”显卡驱动完全可以不装。那什么情况下必须要装如果你后面要跑基于深度学习的3D目标检测比如PointPillars或者VoxelNet或者要用CUDA加速点云配准、语义分割那NVIDIA驱动就是刚需。我这次实测的机器是一张NVIDIA显卡顺手装了驱动版本就是520系列。安装方式我推荐用Ubuntu自带的“软件和更新”图形界面搜索“Additional Drivers”选中对应驱动后应用重启即可。这种方法比手动下载runfile安全得多不会出现因为内核头文件不匹配导致的编译失败。用命令行也一样sudo apt install ubuntu-drivers-common sudo ubuntu-drivers autoinstall sudo reboot装完后用nvidia-smi验证驱动是否生效。注意驱动装完和PandarView 2能跑之间没有任何因果关系如果你按照某些教程先去折腾驱动、装CUDA、配置cuDNN再回头接雷达方向就反了。正确顺序是先跑通点云再考虑CUDA。3. Hesai 官方驱动的三种入口先弄明白再动手3.1 PandarView 2验证链路最省事的图形工具PandarView 2是Hesai官方提供的跨平台点云可视化工具支持AT128等主流型号也支持离线pcap回放和雷达参数配置。它最大的价值在于“开箱即用”——不需要编译源码不需要关心ROS环境只要能把UDP数据收到界面就能把点云画出来。所以我的建议非常明确第一次接触AT128先下载PandarView 2跑通实时点云。这一步是后面所有操作的信任锚点。如果PandarView都看不到点云那问题一定出在网络配置或雷达硬件上不要急着去怀疑ROS驱动。3.2 hesai_ros_driver接入ROS Noetic体系的正路如果项目需要把点云话题发布出来给下游算法使用就要走hesai_ros_driver。Ubuntu 20.04对应的ROS版本是Noetic生态稳定是目前很多移动机器人项目的主力版本。这个驱动在ROS 1和ROS 2下都有支持我这次用的是ROS 1 Noetic。它内部依赖hesai_lidar SDK编译过程不复杂但有一些参数需要手动配置比如本机IP、雷达IP、雷达型号。后面第5节会给到完整的编译和运行过程。3.3 hesai_lidar SDK纯C二次开发时才需要换如果你不需要ROS而是想在自有软件框架里直接消费点云那就用hesai_lidar SDK。它以C库的形式提供内部封装了网络接收、UDP解析、点云结构转换。使用方式是在代码里创建SDK对象、设置参数、注册点云回调然后在回调函数里处理每一帧点云。对于绝大多数机器人项目PandarView 2加ROS驱动的组合已经够用了。我把三种入口的区别整理成一张表方案适合场景上手难度是否依赖ROSPandarView 2验证硬件链路、离线回放、快速出图低否hesai_ros_driver机器人/SLAM/感知系统集成中是hesai_lidar SDK自研软件、非ROS架构中高否4. PandarView 2 安装避坑全记录4.1 下载与解压注意路径不能有中文PandarView 2安装包从Hesai官网下载下载后得到一个压缩包。解压到任意目录但强烈建议放在/opt或者~/tools这样的纯英文路径下不要放在桌面这种带特殊路径的地方更不要放到中文目录。解压后进入文件夹你会看到可执行文件和一些库目录mkdir -p ~/tools cd ~/tools tar -zxvf PandarView_2.x.x.tar.gz cd PandarView_2.x.x ls -l正常能看到PandarView可执行文件、lib目录、doc目录、config目录等。有些版本还会自带driver文件夹里面有底层网络库。4.2 动态库缺失是第一个拦路虎直接运行./PandarView大概率会看到一个报错格式类似error while loading shared libraries: libQVTKWidget.so.5: cannot open shared object file: No such file or directory这个问题的本质是PandarView 2是基于Qt和VTK/PCL构建的图形应用它在打包时没有把所有的Qt库一起带上运行时需要从系统里找对应版本的动态库。Ubuntu 20.04默认装了部分Qt5库但是可视化相关的组件比如Qt5MultimediaWidgets、Qt5OpenGL默认没有装全。解决办法有两步。第一步是安装基础依赖sudo apt update sudo apt install libqt5multimediawidgets5 libqt5opengl5 libqt5printsupport5 \ libqt5svg5-dev libvtk7-qt-dev libpcl-dev装完依赖后如果还报缺库就要看程序自带的lib目录里有没有对应的库文件。很多情况下PandarView 2安装包自带了一个lib目录里面打包了它自己编译时依赖的库版本。这时候需要把这个目录加入到动态库搜索路径sudo sh -c echo $(pwd)/lib /etc/ld.so.conf.d/pandarview2.conf sudo ldconfigldconfig运行后再用ldd命令检查可执行文件是否还有缺失ldd ./PandarView | grep not found如果这一行没有输出说明所有依赖库都已经找到了可以正常启动。4.3 首次启动权限、网卡和界面参数启动PandarView 2的时候我发现直接双击图形图标可能没反应终端里运行反而能看清日志./PandarView如果有权限问题导致网卡扫描失败就加上sudosudo ./PandarView这里有一个很多人吐槽过的点PandarView 2在读取网卡列表和绑定端口时对权限要求比较严格非root用户可能看不到任何网卡。如果你的界面里Sensor列表是空的先用sudo切到管理员权限运行基本就能解决。进入主界面后按下面几个步骤配置在传感器列表中选AT128型号确认固件版本兼容。设置本机IP为192.168.1.x网段例如192.168.1.102。设置雷达目标IP为默认的192.168.1.201。通信方式选择UDP端口保持默认值。点连接Connect按钮等待几秒钟。如果一切正常界面上会开始以10Hz的速率刷新点云可以用鼠标拖拽旋转视角切换Range/Intensity/Reflectivity等渲染模式。4.4 我实测踩过的三个坑每一个都很隐蔽第一个坑是防火墙。Ubuntu自带的ufw默认没有开启但有些人在装完系统后手动开过防火墙雷达UDP包会被直接丢弃。表现是PandarView界面一直显示“No Data”但网卡指示灯正常、雷达也亮起。排查方法sudo ufw status如果状态是active把雷达所在网段的入站UDP放行或者干脆先临时关闭防火墙验证sudo ufw disable确认是防火墙问题后再细化规则。第二个坑是虚拟机和云主机。我见过有人想当然地把雷达接到一台VMware虚拟机里希望通过USB网卡透传实现点云显示。结果就是虚拟机里的网卡驱动和UDP性能完全扛不住几百万点的数据流就算能收到包也会严重丢包点云呈现“破碎”的状态。实测下来AT128实时数据必须用物理机的物理网卡接收虚拟网卡的性能和中断处理都不够看。第三个坑是APR缓存。重新配置本机IP后有时候ping雷达能通但PandarView还是收不到数据。这是因为网络地址解析缓存还保留了旧记录重启网络服务即可sudo ip addr flush dev eth0 sudo systemctl restart systemd-networkd5. 点云上屏PandarView 2 与 RViz 两条路线都走通5.1 PandarView 2 上屏后的验证标准点到云不代表链路就完全合格。我建议在上屏以后做一个快速验证把视角调整到侧面确认128线的结构清晰地面是连续的水平面近处的物体轮廓没有明显断层然后把渲染模式切到强度图看反光物体的颜色是否突出。如果点云出现了大量“拖尾”或者边缘撕裂先不要怀疑雷达优先检查网线接口是否松动、交换机是否有丢包统计。AT128的数据量在10Hz下非常可观千兆网口必须有线连接不要用USB转网卡。5.2 RViz 实时显示接上 ROS Noetic 驱动PandarView 2验证通过后就可以把数据接进ROS了。先安装ROS Noeticsudo apt install ros-noetic-desktop-full sudo apt install ros-noetic-pcl-ros ros-noetic-rviz初始化环境echo source /opt/ros/noetic/setup.bash ~/.bashrc source ~/.bashrc创建工作空间并克隆驱动源码mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone https://github.com/HesaiTechnology/hesai_ros_driver.git cd ~/catkin_ws catkin_make source devel/setup.bash编译结束后在驱动launch文件里配置关键参数。找到hesai_lidar.launch需要重点确认这几个字段laser_type设置为AT128。server_ip当前主机IP比如192.168.1.102。sensor_ip雷达IP默认192.168.1.201。pcap_file留空表示实时模式。frame_id建议设为laser_link方便后面做坐标变换。启动驱动roslaunch hesai_lidar hesai_lidar.launch看到日志输出点云话题发布成功后新开一个终端启动RVizrosrun rviz rviz在RViz左侧Display面板里点击“Add”选择“By topic”标签页找到点云话题通常是/hesai/pandar添加PointCloud2显示组件然后在Global Options里将Fixed Frame设为laser_link。点云就会出现在RViz窗口里。5.3 用 rostopic 验证数据帧率和时间戳显示正常还不够我用两个命令确认数据质量。第一个是话题频率rostopic hz /hesai/pandar正常情况下应该稳定输出10Hz左右。如果频率低于8Hz说明存在丢包需要检查网络负载。第二个是查看时间戳rostopic echo /hesai/pandar/header确认时间戳是连续递增的没有出现跳变。如果时间戳每隔几帧就跳一次很可能是雷达的时间同步模式没有配置好这会影响后续点云与相机、惯导的融合精度。6. 掉坑清单与排查思路复盘6.1 网络不通先按这个顺序查这里整理一份我从多次实操中总结的排查顺序几乎覆盖90%的“收不到点云”问题用ip addr确认网卡配置了192.168.1.x地址掩码是255.255.255.0。用ping 192.168.1.201确认和雷达二层可达。如果ping不通检查网线、网卡是否up。看雷达尾部的网口指示灯状态。两个灯的闪烁规律不一致通常意味着物理链路异常。执行sudo ufw status检查防火墙。用tcpdump确认UDP数据是否到达主机sudo tcpdump -i eth0 udp -c 100如果能看到持续刷新的UDP包物理链路就没问题问题转移到PandarView或驱动配置。6.2 时间同步对实时点云的影响很多人在第一次跑AT128时完全忽略时间同步因为实时可视化确实不需要准确时间戳。但后续只要做多传感器融合时间戳乱跳会让你怀疑人生。AT128支持PTP精确时间同步。在PandarView 2的设置里可以切换时间源为PTP、GPS或者NMEA。如果使用PTP需要在主机上安装并配置PTP客户端sudo apt install linuxptp sudo ptp4l -i eth0 -m注意PTP依赖硬件时间戳功能不是所有网卡都支持。如果不支持可以先用GPS秒脉冲做粗同步或者至少在ROS驱动里保证主机系统时间通过NTP校准。6.3 最后再补充两个小建议第一个建议是雷达上电后不要立刻连接给它10到15秒的自检和启动时间指示灯变成稳定常亮以后再开始收数据。很多人一上电就狂点连接提示连接失败后就开始重装驱动白白浪费时间。第二个建议是驱动版本尽量保持稳定。AT128的固件和驱动配套关系比较明确如果PandarView 2能看到点云而ROS驱动看不到优先检查驱动版本和固件是否匹配不要一上来就改代码。如果你按这篇内容走下来的话我猜你已经完成了从“网口插上”到“RViz里面满屏点云”的整个过程。接下来可以做的事就很多了试着录一段pcap包做离线回放或者接个IMU开始做点云畸变校正。AT128的能力要真正发挥出来还需要在具体场景里慢慢打磨。希望这篇文章能让你少走几条弯路把时间留给更值得折腾的问题。
阅读完成 · 觉得有帮助?
咨询建站