news 2026/10/8 9:28:36

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AT128激光雷达Ubuntu 20.04点云可视化:从网卡配置到RViz保姆级教程

很多第一次接触工业激光雷达的人和我当初的心态一样:以为只要把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 if=ubuntu-20.04.6-desktop-amd64.iso of=/dev/sdX bs=4M status=progress

安装过程中有几个选择值得多说一句。首先是硬盘分区,如果你这台机器后面要用来存点云数据集,建议单独划分一个大容量的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驱动的组合已经够用了。我把三种入口的区别整理成一张表:

方案适合场景上手难度是否依赖ROS
PandarView 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 ldconfig

ldconfig运行后,再用ldd命令检查可执行文件是否还有缺失:

ldd ./PandarView | grep "not found"

如果这一行没有输出,说明所有依赖库都已经找到了,可以正常启动。

4.3 首次启动:权限、网卡和界面参数

启动PandarView 2的时候,我发现直接双击图形图标可能没反应,终端里运行反而能看清日志:

./PandarView

如果有权限问题导致网卡扫描失败,就加上sudo:

sudo ./PandarView

这里有一个很多人吐槽过的点:PandarView 2在读取网卡列表和绑定端口时,对权限要求比较严格,非root用户可能看不到任何网卡。如果你的界面里Sensor列表是空的,先用sudo切到管理员权限运行,基本就能解决。

进入主界面后,按下面几个步骤配置:

  1. 在传感器列表中选AT128型号,确认固件版本兼容。
  2. 设置本机IP为192.168.1.x网段,例如192.168.1.102。
  3. 设置雷达目标IP为默认的192.168.1.201。
  4. 通信方式选择UDP,端口保持默认值。
  5. 点连接(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-networkd

5. 点云上屏:PandarView 2 与 RViz 两条路线都走通

5.1 PandarView 2 上屏后的验证标准

点到云,不代表链路就完全合格。我建议在上屏以后做一个快速验证:把视角调整到侧面,确认128线的结构清晰,地面是连续的水平面,近处的物体轮廓没有明显断层;然后把渲染模式切到强度图,看反光物体的颜色是否突出。

如果点云出现了大量“拖尾”或者边缘撕裂,先不要怀疑雷达,优先检查网线接口是否松动、交换机是否有丢包统计。AT128的数据量在10Hz下非常可观,千兆网口必须有线连接,不要用USB转网卡。

5.2 RViz 实时显示:接上 ROS Noetic 驱动

PandarView 2验证通过后,就可以把数据接进ROS了。先安装ROS Noetic:

sudo 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

看到日志输出点云话题发布成功后,新开一个终端启动RViz:

rosrun 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%的“收不到点云”问题:

  1. 用ip addr确认网卡配置了192.168.1.x地址,掩码是255.255.255.0。
  2. 用ping 192.168.1.201确认和雷达二层可达。如果ping不通,检查网线、网卡是否up。
  3. 看雷达尾部的网口指示灯状态。两个灯的闪烁规律不一致通常意味着物理链路异常。
  4. 执行sudo ufw status检查防火墙。
  5. 用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的能力要真正发挥出来,还需要在具体场景里慢慢打磨。希望这篇文章能让你少走几条弯路,把时间留给更值得折腾的问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/8 9:28:09

华为OptiX OSN 1800城域光传送设备:选型配置与运维实战

简介:面向光网络规划、传输维护和软件开发人员的华为OptiX OSN1800产品特性整理文档,系统梳理城域波分设备在多业务承载中的核心机理与板卡配置要点。文档以四种线路速率方案为主线:四十波十吉比特每秒和四十波二点五吉比特每秒的密集波分传输…

作者头像 李华
网站建设 2026/10/8 9:25:25

用Go实现带宏系统的Lisp解释器:AST宏展开实战

先想清楚:你要做的是哪一种宏系统如果你写过代码生成器,或者用过C语言的宏,一定对“宏”这个词不陌生。但如果你打算用Go自己写一个带宏系统的解释器,事情就会变得比想象中更微妙。最近我花了两个周末,用Go实现了一个支…

作者头像 李华
网站建设 2026/10/8 9:25:21

模板元编程性能分析:编译期与运行时的全面优化

模板元编程(Template Metaprogramming,简称TMP)在C圈子里一直是个"又爱又恨"的话题。爱它的人看中的是它在编译期完成计算、把运行时开销压到极致的能力;恨它的人大概率是被编译报错劝退,或者被动辄以秒计的…

作者头像 李华
网站建设 2026/10/8 9:25:04

无模型自适应控制(MFAC)仿真:六套程序与核心算法详解

聊到MFAC,很多做控制的朋友第一反应是“这玩意儿到底能不能避开建模?”我的答案是可以,但你得先把伪偏导数估计、动态线性化这些基础概念嚼碎了。MFAC全称Model-Free Adaptive Control,中文通常叫无模型自适应控制,它不…

作者头像 李华
网站建设 2026/10/8 9:22:20

Context-Mode:AI应用上下文管理的三段式设计与实践

1. 为什么需要Context-Mode:一个高频踩坑后的自问自答先说说我自己的经历。做AI应用开发这几年,我见过太多产品“死于”上下文管理不当——不是模型能力不够,而是对话一长、任务一多,整个应用就开始“失忆”。用户说“刚才那个问题…

作者头像 李华
网站建设 2026/10/8 9:21:51

HarmonyOS API 22 NDK多线程创建实战:从环境配置到性能压测

1. 新特性到底新在哪:API 22之前,Native层写多线程有多别扭 先说结论:HarmonyOS 6 的 API 22 对 NDK 多线程创建的增强,不是简单的“能用 pthread 了”,而是把整个 Native 层的并发编程体验拉到了现代 C 该有的水准。做…

作者头像 李华