十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

速腾RS-LiDAR-16激光雷达ROS环境搭建与Rviz点云可视化实战指南

速腾RS-LiDAR-16激光雷达ROS环境搭建与Rviz点云可视化实战指南 1. 为什么值得折腾速腾RS-LiDAR-16这套组合速腾RS-LiDAR-16是一台16线机械旋转式激光雷达水平视场角360度垂直视场角30度测距范围最远150米出点频率单回波约30万点每秒。这个规格放在今天不算顶配但它是很多人接触真实激光雷达数据的第一台设备——价格相对可控ROS驱动成熟社区资料多出了问题能搜到答案。把它跑通等于把激光雷达ROS点云可视化这条链路完整走了一遍后面换32线、64线甚至固态雷达思路是通用的。我这次要分享的就是把这台雷达从开箱到在Rviz里看到稳定点云的全过程。核心关键词是速腾RS-LiDAR-16、ROS、点云可视化和Rviz。适合谁看刚拿到雷达不知道怎么下手的同学、ROS装好了但雷达连不上的同学、点云能出来但一卡一卡或者全是噪点的同学。我会把每一步为什么这么做讲清楚包括网络配置的坑、驱动的编译细节、Rviz里那些参数到底在调什么以及我实际踩过的几个典型问题。先说结论性的判断这套环境搭建的难点不在雷达本身而在三个地方——网络连通性、时间同步、以及Rviz的显示配置。很多人卡在第一步就放弃了其实只要把IP和防火墙理清楚后面都是顺水推舟。下面按我实际操作的顺序展开。2. 环境搭建前的整体设计与选型考量2.1 操作系统与ROS版本怎么选速腾官方驱动对ROS1的支持最成熟我建议用Ubuntu 20.04加ROS Noetic这套组合。原因很直接Noetic是ROS1的最后一个长期支持版本Python3原生支持官方驱动的编译脚本和依赖包都是按这个环境测过的。如果你手上是Ubuntu 18.04用Melodic也能跑但有些依赖包版本偏老编译时容易报错。有人会问要不要直接上ROS2。我的建议是第一次搭雷达别碰ROS2。ROS2的驱动生态虽然在快速完善但速腾RS-LiDAR-16的ROS2驱动资料相对少遇到问题排查成本高。先把ROS1跑通理解点云数据从雷达到Rviz的完整链路再迁移到ROS2会轻松很多。ROS2 Humble确实香但不是现在。硬件方面一台带独立网口的x86机器最省心。我用的是Intel NUCi5处理器16G内存跑雷达加Rviz毫无压力。如果你用笔记本确认有RJ45网口很多轻薄本只有Type-C需要转接转接芯片选RTL8153或者AX88179这类兼容性好。内存方面单纯跑雷达和Rviz8G够用但如果后面要接SLAM建图建议16G起步。2.2 网络连接方式的选择逻辑雷达和电脑之间有两种连接方式直连和经过交换机。直连就是用一根网线把雷达直接插到电脑网口配置简单干扰少我推荐这种方式做初次调试。经过交换机适合多设备场景但会引入额外的网络变量排查问题时多一层不确定性。速腾RS-LiDAR-16出厂默认IP是192.168.1.200MSOP数据端口6699DIFOP信息端口7788。电脑这边需要配一个同网段的静态IP比如192.168.1.102子网掩码255.255.255.0。这里有个关键点电脑的网口必须设置为静态IP不能用DHCP因为雷达不会给你分配地址。很多人插上网线发现ping不通九成是这里没配对。注意配置静态IP时如果电脑同时连着WiFi可能会出现路由冲突。建议调试雷达时先断开WiFi或者把WiFi的默认网关优先级调低确保去往192.168.1.x的流量走有线网口。2.3 驱动方案的选择速腾官方提供了rslidar_sdk这个驱动包支持ROS1和ROS2也支持源码编译和直接运行。我选择源码编译进ROS工作空间原因是方便改参数、看源码、加自己的处理节点。官方也提供了预编译的库但灵活性差一些。驱动的工作流程是这样的雷达通过UDP把MSOP数据包发到电脑的6699端口驱动接收后解析成点云再以ROS话题的形式发布出去。默认发布的话题是/rslidar_points消息类型是sensor_msgs/PointCloud2。Rviz订阅这个话题就能显示。理解这个链路很重要后面点云出不来你就知道该在哪一环查。3. 核心细节解析与实操要点3.1 网络配置的完整操作与验证先确认雷达的物理连接。网线插好后用ip addr看网口名字通常是enp3s0或者eth0这类。然后编辑网络配置Ubuntu 20.04用netplan配置文件在/etc/netplan/目录下。我直接给一个可用的配置模板network: version: 2 renderer: networkd ethernets: enp3s0: dhcp4: no addresses: - 192.168.1.102/24 gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8]改完执行sudo netplan apply。然后验证连通性ping 192.168.1.200能通说明物理链路和IP配置没问题。如果ping不通按这个顺序查网口灯亮不亮、网线是不是好的、IP是不是配到了正确的网口、防火墙是不是拦了。防火墙这块Ubuntu默认的ufw如果开着会拦UDP包。执行sudo ufw status看一下如果是active要么关掉sudo ufw disable要么放行6699和7788端口。我调试阶段直接关掉省事。3.2 驱动编译的依赖与步骤编译rslidar_sdk之前先装依赖。ROS Noetic的基础环境假设你已经有了没有的话先装ROS。然后装这几个包sudo apt-get install -y libyaml-cpp-dev libpcap-devlibpcap-dev是必须的驱动底层抓包用得到。libyaml-cpp-dev用于解析配置文件。缺了这两个编译到一半会报错。然后建工作空间拉代码编译mkdir -p ~/rslidar_ws/src cd ~/rslidar_ws/src git clone https://github.com/RoboSense-LiDAR/rslidar_sdk.git cd rslidar_sdk git submodule init git submodule update这里有个坑rslidar_sdk依赖rslidar_msg这个子模块必须执行submodule update否则编译时找不到消息定义。我见过有人直接clone下来就编译报一堆找不到头文件的错就是漏了这一步。编译cd ~/rslidar_ws catkin_make source devel/setup.bash编译过程大概两三分钟看到100%且没有error就成功了。3.3 配置文件的参数含义驱动编译好后配置文件在src/rslidar_sdk/config/config.yaml。这个文件决定了驱动怎么工作几个关键参数必须理解common: msg_source: 1 send_packet_ros: false send_point_cloud_ros: true lidar: - driver: lidar_type: RS16 msop_port: 6699 difop_port: 7788 host_address: 192.168.1.102 lidar_address: 192.168.1.200 ros: ros_frame_id: rslidar ros_send_point_cloud_topic: /rslidar_pointsmsg_source设为1表示从在线雷达读数据设为2是从PCAP包读调试时如果雷达不在手边可以用PCAP回放。lidar_type必须写RS16写错了解析出来的点云是乱的。host_address填你电脑的IPlidar_address填雷达的IP这两个填反了收不到数据。ros_frame_id是坐标系名字后面Rviz里要对应上。提示如果你改了雷达的IP记得同步改lidar_address。雷达IP可以通过官方的上位机软件改也可以发DIFOP包改初次使用建议保持默认。4. 实操过程与核心环节实现4.1 启动驱动并确认数据流配置改好后启动驱动cd ~/rslidar_ws source devel/setup.bash roslaunch rslidar_sdk start.launch正常的话终端会打印雷达型号、固件版本、每秒接收的包数。看到类似MSOP packet rate: 1500这样的输出说明数据在进来了。如果一直没输出或者报timeout回到网络那一步查。另开一个终端用rostopic看话题rostopic list rostopic hz /rslidar_pointsrostopic hz会显示点云的发布频率RS-LiDAR-16正常是10Hz。如果频率是0或者很低说明数据流有问题。再用rostopic echo /rslidar_points --noarr看一眼消息头确认frame_id是rslidar时间戳在更新。这一步是整个链路的关键验证点。话题有了、频率对了、时间戳在走说明从雷达到驱动的链路完全通了剩下的就是显示问题。4.2 Rviz的配置与点云显示启动RvizrvizRviz打开后左侧Displays面板把Fixed Frame改成rslidar和配置文件里的ros_frame_id一致。不一致的话点云显示不出来或者报frame does not exist。然后Add一个PointCloud2Topic选/rslidar_points。这时候应该能看到点云了。如果看不到检查这几项Fixed Frame对不对、Topic选没选对、点云的Size调大一点默认0.01可能太小、Color Transformer选Intensity或者AxisColor。我习惯把Size设成0.02到0.05太小了看不清太大了糊成一片。Color Transformer用Intensity能直观看出反射强度差异路面标线、车牌这些高反射物体在点云里会明显亮一些。点云显示出来后用鼠标中键旋转视角滚轮缩放左键平移。Rviz的视角操作和大多数3D软件不太一样多试几次就熟了。4.3 点云数据的初步观察与理解RS-LiDAR-16的16线在垂直方向上是均匀分布的角度范围是-15度到15度每线间隔2度。水平方向分辨率是0.1度到0.4度可调取决于旋转速度。10Hz时水平分辨率约0.2度20Hz时约0.4度。在Rviz里观察点云你会看到一圈一圈的线那是16条激光线扫出来的。近处的点密远处的点稀这是正常的因为激光的发散角和距离成正比。地面上的点会形成一个平面墙面上的点会形成一条线这些几何特征后面做SLAM和检测时都会用到。如果点云里出现明显的噪点、拖尾或者空洞可能是这几个原因雷达前面有玻璃或者反光物体、雷达没水平放置、或者时间同步没做好导致点云错位。时间同步这块RS-LiDAR-16支持PPS和GPS同步单机调试时用雷达内部时钟就行多雷达或者和相机融合时才需要严格同步。5. 常见问题与排查技巧实录5.1 网络类问题速查现象可能原因排查方法ping不通雷达IP不在同网段检查电脑IP是否为192.168.1.xping不通雷达网口选错ip addr确认IP配到了哪个网口ping通但收不到数据防火墙拦截sudo ufw disable临时关闭收包频率低网线质量差换Cat6以上网线收包频率低网卡性能不足换千兆网卡禁用节能模式网卡节能模式这个坑我踩过。有些笔记本的网卡默认开启节能会导致UDP丢包点云一卡一卡的。用ethtool关掉sudo ethtool -s enp3s0 wol d sudo ethtool --set-eee enp3s0 eee off5.2 驱动编译类问题编译报Could not find rslidar_msg是子模块没更新执行git submodule update --init --recursive。报libpcap not found装libpcap-dev。报yaml-cpp not found装libyaml-cpp-dev。这些依赖问题占了编译失败的绝大多数。还有一种情况是catkin_make报Python版本冲突Noetic默认Python3如果你系统里混了Python2的包可能会出问题。用virtualenv隔离或者直接重装ROS环境。5.3 Rviz显示类问题Rviz打不开先看是不是显卡驱动问题。虚拟机里跑Rviz经常出问题建议物理机。如果报GLX相关错误装mesa-utils和libgl1-mesa-dri。点云显示但全是白色是Color Transformer没设对。点云显示但只有一帧是驱动挂了或者话题断了rostopic hz确认一下。点云显示但位置不对是Fixed Frame和frame_id不一致。实操心得Rviz的配置可以保存成.rviz文件下次直接rviz -d xxx.rviz加载省得每次重新配。我习惯把常用的显示配置存下来换机器时直接拷过去。5.4 点云质量类问题点云里有明显的同心圆噪点通常是雷达窗口有灰尘或者水渍用镜头布擦一下。点云在某个方向缺失检查那个方向是不是有遮挡物。点云整体偏移检查雷达安装是否水平或者IMU数据是否准确。如果点云看起来飘也就是同一物体在不同帧里位置在变大概率是时间戳问题。检查驱动发布的时间戳是雷达时间还是系统时间两者不一致会导致Rviz里点云错位。配置文件里有个use_lidar_clock参数设为true用雷达时钟false用系统时钟单机调试建议用系统时钟。6. 从可视化到实际应用的延伸思路点云能在Rviz里稳定显示之后这套环境就可以作为很多应用的基础了。最直接的是接SLAM建图比如用Cartographer或者LIO-SAM把/rslidar_points喂进去配合IMU数据就能建出环境地图。RS-LiDAR-16的16线数据做室内建图够用室外大场景会稀疏一些但也能跑。另一个方向是目标检测。点云做聚类分割提取出障碍物再配合相机做融合。速腾的驱动发布的是原始点云没有做任何滤波你可以自己加passthrough、voxel_grid这些滤波节点把数据预处理一下再送进检测算法。还有人会问能不能用ROS2。可以速腾官方有ROS2的驱动分支编译方式和ROS1类似话题名和消息类型对应改一下就行。但ROS2的Rviz2对点云的显示性能不如Rviz1大点云会卡这点要有心理准备。最后说一个实际经验雷达的安装位置很关键。装在机器人顶部视野最好但要注意线缆的走线和固定震动会导致点云抖动。装在侧面或者前面会有盲区需要根据应用场景权衡。我试过几种安装方式顶部居中加防震垫是最稳的。这套环境搭下来从开箱到看到点云顺利的话半天不顺利的话两天。卡住的地方无非就是网络、编译、显示这三关。把这三关过了后面就是玩数据的事了。
返回列表