
1、产品介绍1.1 产品结构Airy 结构图如图所示M3螺钉航空插头弧形防护罩注意事项1)本机接地方式本雷达采用机壳与内部电路板共地设计。2)安装环境建议当安装环境中的设备外壳为浮地状态时为确保设备正常工作并防止潜在干扰建议通过非金属绝缘件或其他方式使雷达外壳与设备外壳之间实现电气隔离。1.2 FOV 分布Airy 的 FOV 在水平方向的角度范围是 0 ~ 360°,在垂直方向的角度范围是 0~ 90°角度间隔为约为 0.947°分布。96 路通道与真实的垂直角度对应关系如图Airy 因其设计架构及扫描时序限制每秒约有 9 ms 时间无法接收点云也就是每 10 帧点云中有 1 帧点云出现约 32°的点云缺口。该缺口的起始角度在量产固件上可配置用户可根据实际需求配置在影响较小的位置处。实际工程中可以考虑通过判别点数量将残缺帧剔除防止影响后面算法处理1.3 参数规格1.3.1 数据验算转速与点频完美匹配转速 600结合帧率 10 Hz这里的单位显然是 600 rpm转/分钟即每秒转 10 圈600/60 10 rps与帧率严格对应。点频验算上一轮得知水平角分辨率 0.4°即每圈 900 个水平点线数 96。理论单圈点云900 × 96 86,400 点。理论每秒点数86,400 × 10 Hz 864,000 pts/s。参数规格中给出的实际值是 856,320 pts/s两者高度吻合1.3.2 亮点分析这几个参数暴露了它并非普通商用雷达而是为严苛环境和复杂系统集成设计的防护等级 IP67 / IP6K9K这是极其硬核的指标。IP67 代表完全防尘且可短时浸水IP6K9K 代表能承受 80°C 高温、100 bar 高压水蒸气喷射常用于洗车房或越野泥泞场景。这意味着它是车规级耐候性产品。时间同步GPSPTP gPTP支持 gPTP广义精确时间协议 是汽车以太网Automotive Ethernet的标准说明它原生适配 自动驾驶域控制器能实现微秒级的多传感器时钟同步绝非普通工控雷达可比。体积重量φ60mm × 63mm重量仅 230g。在 96 线雷达里属于极轻量级显然是给无人机UAV或轻量化机器人设计的吊舱式结构。1.3.3 功率问题产品功率 58 W ——这是最需要注意的“电老虎”参数一台 128 线的旗舰车载雷达如禾赛 AT128功耗通常在 20W~30W 左右。这款 96 线雷达功耗高达 58W几乎是同行的两倍。供电压力车载 12V 系统需要提供近 5A 的持续电流线束和电源模块必须单独加强。散热噩梦仅有 60mm 直径的紧凑全金属外壳内部发热量高达 58W表面温升会非常明显。如果你的应用场景是无人机58W 的功耗会大幅缩短续航时间锂电池供电时这相当于又挂载了一台小型无人机电机。猜测原因极有可能是为了达到 260m 测距尤其 10% 低反物体 30m采用了高功率的激光发射器以“功耗换探测能力”。1.3.4 通讯与带宽问题以太网传输速率 100 Base-TX这是百兆以太网100 Mbps。数据量计算856,320 pts/s。假设每个点包含距离2字节 强度1字节 时间戳4字节 额外标志位保守估计单点占 10~12 字节数据流约 8.5~10 MB/s约 80 Mbps。风险提示100 Base-TX 的理论有效载荷极限约 90 Mbps。带宽余量非常小仅有 10%~20%。实际使用中若网络中有广播风暴或重传极易导致数据丢包。强烈建议直连工控机避免经过普通网络交换机。1.4 接口说明真实结构如下Airy 网络参数可配置出厂默认采用固定 IP 和端口号模式把 电脑的 IP 设置为与产品同一网段上例如192.168.1.x(x 的取值范围为 1 ~ 254)子网掩码为 255.255.255.0。未知产品网络配置信息请连接产品并使用 Wireshark 抓取产品输出包进行分析。1.5 产品坐标系产品的坐标及旋转方向如图所示关于激光雷达坐标原点数值以及 IMU的外参可以通过 SDK 或者 DIFOP 的对应字段获取。其它详细的协议内容参考产品手册中的内容1.6 Web端连接连接激光雷达的电脑浏览器访问产品 IP 地址这个改成192.168.1.202默认 Device IP : 192.168.1.200进入激光雷达 Web 首页可以对雷达进行设置1.7 配套软件和开发包1.7.1 配套软件在 Airy 的数据检测上可使用 Wireshark 和 tcp-dump 等免费工具获取原始数据而 RSView 可帮助用户更为便捷的实现对原始数据的可视化。RSView 提供将 Airy 数据进行实时可视化的功能。RSView 也能回放保存为“.pcap”文件格式的数据但是目前还不支持“.pcapng”格式的文件。RSView 将 Airy 得到距离测量值显示为一个点。它能够支持多种自定义颜色来显示数据例如反射强度、时间、距离、水平角度和激光线束序号。所显示的数据能够导出保存为“.csv”格式RSView 3.1.3 以后的版本支持导出“.las”格式的数据。RSView 支持在 Windows 64 位、Ubuntu 18.04 以上操作系统上运行。可从Robosense 的官网http://www.robosense.cn/resources下载最新版本 RSView 软件压缩包。下载后软件的解压路径请勿出现中文字符软件无需安装解压后运行可执行文件即可正常使用。1.7.2 配套开发包rslidar_sdk 是 ROS 平台下的驱动 SDK请通过 github 上的 RoboSense 主页下载或联系 RoboSense 获取。rslidar_sdk 依赖 rs_driver后者是 RoboSense 的基本驱动。rs_driver 请从 github 平台下载如使用环境为 ROS2rslidar_sdk 还依赖 rslidar_msg这是 msg 定义文件。msg 文件请从 github 平台下载驱动 SDK 下载包内含丰富的使用指引请在使用驱动 SDK 前详细阅读文件内的 README 文件及 doc 文件夹下的文档。提示SDK 获取地址https://github.com/RoboSense-LiDAR/rsLiDAR_sdkrs_driver 获取地址https://github.com/RoboSense-LiDAR/rs_drivermsg 获取地址https://github.com/RoboSense-LiDAR/rslidar_msg上面3个工程角色如下目录类比干的活rs_driver摄像头驱动把雷达吐出来的乱码翻译成点云——也就是一堆带 XYZ坐标的点告诉你前方 5 米有堵墙。这一步是硬核技术活。rslidar_sdk看图软件光有点云没用你还得能看它、用它。rslidar_sdk把点云包装成 ROS 节点发布成话题能用 rviz可视化、能录成 bag 回放。面向用户的好用工具。rslidar_msg图片格式JPEG/PNG 标准大家得约定点云数据长什么样才能互相听懂。这个包就是定义数据格式的字典ROS2 编译时必须带着它否则不认识这种数据。只想看点云、做 ROS 开发 → 三个都要ROS2或前两个ROS1不用 ROS自己写 C 程序 → 只要 rs_driver 就够了2、雷达数据采集雷达数据采集在这里使用速腾的rsLiDAR_sdk开发包此开发包运行在ROS2环境下这里我打算在docker中构建ros2环境并在docker中运行雷达数据采集程序。2.1 docker 工程构建dockerfile内容如下FROM registry.cn-hangzhou.aliyuncs.com/lx/ubuntu24_jazzy:v0.0.1# 设置环境变量避免交互式配置ENV DEBIAN_FRONTENDnoninteractive ENV TZAsia/Shanghai# 更新软件源RUN rm-f/etc/apt/sources.list.d/ros2-latest.list||true RUN echodeb [trustedyes] http://mirrors.aliyun.com/ros2/ubuntu/ $(lsb_release -cs) main/etc/apt/sources.list.d/ros2-aliyun.listRUN apt updateapt install-y \ tzdata\ ntp\ net-tools \ vim \ openssh-server \ sudo \ build-essential \ graphviz \ graphviz-dev \ libpcl-dev \ python3-colcon-common-extensions \ python3-argcomplete \ python3-vcstool \ python3-venv \ python3-pip \apt clean \rm-rf/var/lib/apt/lists/*WORKDIR/root/code# 在虚拟环境中安装open3d# 创建虚拟环境lx 并安装open3dRUN python3-m venv/root/lx ENV VIRTUAL_ENV/root/lx ENV PATH$VIRTUAL_ENV/bin:$PATHRUN pip install-i https://mirrors.aliyun.com/pypi/simple catkin-pkg empy lark numpy opencv-python open3d# ssh服务配置RUN mkdir/var/run/sshd ARG USERNAMEroot RUN echo$USERNAME ALL(ALL) NOPASSWD:ALL/etc/sudoers#USER $USERNAMERUN echosource /opt/ros/jazzy/setup.bash~/.bashrc RUN echosource /root/bolight/bin/activate~/.bashrc RUN echoexport ROS_LOCALHOST_ONLY1~/.bashrcdocker compose中配置如下services:calib_lidar_server:container_name:calib_lidar_deployer build:context:.image:alg_base:v0.0.1restart:always volumes:-/etc/localtime:/etc/localtime:ro-/tmp/.X11-unix:/tmp/.X11-unix:rw-./code:/root/code-/etc/hosts:/etc/hosts-/sys/class/net:/sys/class/net:ro-/sys:/sys:ro# command: sh -c /root/code/script_run.sh tail -f /dev/nullcommand:sh-ctail -f /dev/nullenvironment:-DISPLAY-TZAsia/Shanghai-CONTAINER_TIMEZONEAsia/Shanghai-NVIDIA_VISIBLE_DEVICESalltty:true network_mode:hostipc:host devices:-/dev/dri:/dev/dri# runtime: nvidiabuild.sh内容如下#/bin/bash#允许任何客户端连接到当前用户的 X 服务器图形显示服务xhostecho检查镜像是否存在。cd alg_base./build_image.sh cd..docker compose up-dbuild_image.sh内容如下#!/bin/bash# 定义镜像名称和标签IMAGE_NAMEalg_baseIMAGE_TAGv0.0.1DockerID$(docker images-q $IMAGE_NAME:$IMAGE_TAG)echoQuery Image ID:$DockerID IDcount${#DockerID}# 使用docker images命令查找镜像并检查返回结果if[$IDcount-gt0];then echo镜像 $IMAGE_NAME:$IMAGE_TAG 存在。elseecho镜像 $IMAGE_NAME:$IMAGE_TAG 不存在,准备构建镜像。docker build--no-cache-t $IMAGE_NAME:$IMAGE_TAG.echo镜像 $IMAGE_NAME:$IMAGE_TAG 构建完成。fi执行build.sh构建镜像2.2 工程配置在code共享目录下执行下面命令git clone https://github.com/RoboSense-LiDAR/rslidar_sdk.git cd rslidar_sdk git submodule update--init--recursive cd..# 只需要rslidar_msg不需要rslidar_driver已经内置在sdk中git clone https://github.com/RoboSense-LiDAR/rslidar_msg2.2.1 IP设置在Web界面雷达参数如下雷达IP是192.168.1.202本机IP是192.168.1.2002.2.2 IMU设置在CMakeLists.txt里把ENABLE_IMU_DATA_PARSE从OFF改成ONIMU端口号设置在config.yaml中设置imu_port设置为66822.2.3 连接单个雷达时操作步骤雷达发送的imu和点云数据话题如图所示imu对应的topic是/rslidar_imu_data雷达点云数据对应的topic是/rslidar_points在容器外(宿主机)构建容器执行命令./build.sh在容器内编译运行命令如下sudo apt-get install-y libpcap-dev# 1. 进入 workspacecd/root/code# 2. source ROS2source/opt/ros/jazzy/setup.bash# 3. 编译(两个包一起,自动按依赖顺序)colcon build--cmake-args-DENABLE_IMU_DATA_PARSEON# 4. source 新环境source install/setup.bash# 5. 启动雷达节点 rvizros2 launch rslidar_sdk start.py 新开终端验证:source/opt/ros/jazzy/setup.bash source/root/code/install/setup.bash ros2 topiclist# 查看话题ros2 topic hz/rslidar_points# 点云频率ros2 topic hz/rslidar_imu_data# IMU 频率执行完ros2 launch rslidar_sdk start.py弹出下面提示框勾选上Show unvisualizable topics后可以看到/rslidar_imu_data是灰色的无法可视化。查看这类数据的方法如下实时打印ros2 topic echo/rslidar_imu_data# 上面指令会显示所有数据不利于观察可以用下面指令放慢速度# 限制输出速率(最简单)ros2 topic echo/rslidar_imu_data--no-arr21|watch-n0.5cat# 或者用 head 只看前几条:ros2 topic echo/rslidar_imu_data|head-n100# 只看一次ros2 topic echo--once/rslidar_imu_data# 抽样显示每 10 条显示 1 条ros2 topic echo/rslidar_imu_data|awkNR%701 || /^---$/# (IMU 一条消息约 7 行,70 行 ≈ 10 条,等于每 10 条显示一条) # 只关注某个字段ros2 topic echo/rslidar_sdk/rslidar_imu_data/linear_acceleration--once2.3 数据格式2.3.1 IMU数据解析用ros2 topic echo --once /rslidar_imu_data采集一帧IMU数据数据包内容如下header:stamp:sec:103330nanosec:133410000frame_id:rslidar orientation:x:0.0y:0.0z:0.0w:1.0orientation_covariance:-0.0-0.0-0.0-0.0-0.0-0.0-0.0-0.0-0.0angular_velocity:x:-0.007190534844994545y:0.003195793367922306z:0.000532632227987051angular_velocity_covariance:-0.0-0.0-0.0-0.0-0.0-0.0-0.0-0.0-0.0linear_acceleration:x:-0.0045166015625y:-0.0592041015625z:-0.9903564453125linear_acceleration_covariance:-0.0-0.0-0.0-0.0-0.0-0.0-0.0-0.0-0.0字段逐项解释header(标准消息头)stamp:时间戳,sec 是秒,nanosec 是纳秒部分frame_id: rslidar:坐标系名称,表示数据相对于雷达坐标系orientation(姿态四元数)表示 IMU 在 frame_id 坐标系下的朝向。你这帧 w1.0 其他0,说明驱动没真正输出姿态,只是填了个单位四元数(默认值)。RoboSense 这类雷达内置的是低精度IMU,不做姿态解算,所以 orientation 永远是默认值。orientation_covariance、angular_velocity_covariance、linear_acceleration_covariance(协方差矩阵)3×9 27 个数,描述对应数据的测量不确定度。全是 0 表示雷达不提供协方差信息(REP-145 约定0代表未知)。这点在做严格卡尔曼滤波融合时需要自己补值。angular_velocity(角速度,rad/s)绕三轴的旋转速度。你这帧:x: -0.0072,y: 0.0032,z: 0.0005三个值都接近 0 → 雷达处于静止状态(任何轻微晃动都会有 ±0.1 以上数值)linear_acceleration(线加速度,m/s²)三轴加速度。注意 z 轴:x: -0.0045,y: -0.059,z: -0.990静止状态下,z 方向应该感受到 重力 ≈ ±9.81 m/s²这里的加速度是-0.990,几乎正好-1。这说明RoboSense这颗IMU实际输出的加速度单位是g(重力加速度),不是m/s²,驱动直接把原始值塞进去了。ROS标准规定是m/s²,所以严格意义上这违反了规范,但RoboSense不是唯一这么做的,使用时要注意:真实加速度 (m/s²) 数值× 9.81例如这帧 z 实际是-0.990 × 9.81 ≈ -9.71m/s²(向上方向感受到-1g,符合静止状态)。IMU数据用途用途怎么用激光雷达点云去畸变用角速度把运动中的点云校正回同一时刻,显著提升高速移动场景下的建图精度IMU激光雷达融合SLAM如 LIO-SAM、FAST-LIO2、point-lio 等机器人姿态估计配合 EKF/UKF(如robot_localization)做里程计融合运动检测检测雷达是否在动、有没有异常震动注意事项使用前务必把加速度乘 9.81 转成 m/s²,否则下游滤波器/SLAM会跑飞。2.3.2 IMU测试调整雷达的摆放位置linear_acceleration向量会根据重力方向和各个轴的夹角计算各个方向的分量静止状态下侧放雷达结果如下调整雷达摆放姿态时,重力加速度在传感器三个轴上的投影会发 生变化,所以静止状态下 linear_acceleration三个分量会随姿态改变。注意:RoboSense 这颗 IMU 输出的加速度单位是g(重力加速度倍数),不是 ROS 标准的 m/s²。静止侧放(Y 轴朝下,与垂直方向夹角约 36°)合力 ≈ 1.00 g 静止只受重力angular_velocity:x:0.012250540778040886y:-0.011717909015715122z:-0.019174760207533836linear_acceleration:x:-0.1204833984375y:-0.81298828125z:0.583740234375拿着雷达晃动angular_velocity:x:0.9182579517364502y:-0.1691107302904129z:1.0506170988082886linear_acceleration:x:0.049560546875y:-0.087646484375z:1.396728515625关键发现将雷达定义的坐标系的X轴方向对准地面得到下面结果linear_acceleration:x:0.0667724609375y:1.0052490234375z:-0.066162109375从结果上可以看出重力加速度都投影到了Y轴上面说明IMU的坐标系与雷达定义的坐标系并不匹配可能差了90度。3、多激光雷达接入前面搞定了单个雷达ROS2发布点云和IMU数据但是实际工作中有时需要多个雷达协同工作这节主要记录接入2个雷达的操作步骤绘制图像如下图所示3.1 修改配置接入多个激光雷达只需要修改config/config.yaml这一个文件内容如下common:msg_source:1# 0: not use Lidar# 1: packet message comes from online Lidar# 2: packet message comes from ROS or ROS2# 3: packet message comes from Pcap filesend_packet_ros:false# true: Send packets through ROS or ROS2(Used to record packet)send_point_cloud_ros:true# true: Send point cloud through ROS or ROS2lidar:-driver:lidar_type:RSAIRY# LiDAR type - RS16, RS32, RSBP, RSAIRY, RSAIRYLITE_ETH, RSFAIRY, RSHELIOS, RSHELIOS_16P, RS128, RS80, RS48, RSP128, RSP80, RSP48,# RSM1, RSM1_JUMBO, RSM2, RSM3, RSE1, RSMX, RSEMX.msop_port:6692# Msop port of lidardifop_port:7782# Difop port of lidar (Note that: For RSEMX, use the port num of DIFOP2 if both DIFOP1 DIFOP2 exist. Default 7766.)imu_port:6682# IMU port of lidar(only for RSAIRY, RSAIRYLITE_ETH, RSFAIRY, RSE1), 0 means no imu.# If you want to use IMU, please first set ENABLE_IMU_DATA_PARSE to ON in CMakeLists.txtuser_layer_bytes:0# Bytes of user layer. thers is no user layer if it is 0tail_layer_bytes:0# Bytes of tail layer. thers is no tail layer if it is 0min_distance:0.2# Minimum distance of point cloudmax_distance:200# Maximum distance of point cloud (Note that: 200 normally, 300 for RSEMX)use_lidar_clock:true# true--Use the lidar clock as the message timestamp# false-- Use the system clock as the timestampdense_points:false# true: discard NAN points; false: reserve NAN pointsts_first_point:true# true: time-stamp point cloud with the first point; false: with the last point;# these parameters are used from mechanical lidarstart_angle:0# Start angle of point cloudend_angle:360# End angle of point cloud# When msg_source is 3, the following parameters will be usedpcap_repeat:true# true: The pcap bag will repeat playpcap_rate:1.0# Rate to read the pcap filepcap_path:/home/robosense/lidar.pcap#The path of pcap fileros:ros_frame_id:rslidar_202#Frame id of packet message and point cloud messageros_recv_packet_topic:/rslidar_packets_202#Topic used to receive lidar packets from ROSros_send_packet_topic:/rslidar_packets_202#Topic used to send lidar packets through ROSros_send_imu_data_topic:/rslidar_imu_data_202#Topic used to send imu data through ROSros_send_point_cloud_topic:/rslidar_points_202#Topic used to send point cloud through ROSros_queue_length:100#Topic QoS history depth-driver:lidar_type:RSAIRY msop_port:6695difop_port:7785imu_port:6685user_layer_bytes:0tail_layer_bytes:0min_distance:0.2max_distance:200use_lidar_clock:true dense_points:false ts_first_point:true start_angle:0end_angle:360pcap_repeat:true pcap_rate:1.0pcap_path:/home/robosense/lidar.pcap ros:ros_frame_id:rslidar_205 ros_recv_packet_topic:/rslidar_packets_205 ros_send_packet_topic:/rslidar_packets_205 ros_send_imu_data_topic:/rslidar_imu_data_205 ros_send_point_cloud_topic:/rslidar_points_205 ros_queue_length:100改完yaml后必须重新编译一次,因为launch加载的是install/目录里的config副本:cd/root/code colcon build--cmake-args-DENABLE_IMU_DATA_PARSEON source install/setup.bash ros2 launch rslidar_sdk start.py启动后日志里应该能看到两组Msop Port: 6692和Msop Port: 6695。验证新终端:ros2 topiclist|grep rslidar ros2 topic hz/rslidar_points_202 ros2 topic hz/rslidar_points_205每路都该有约10Hz点云、100Hz IMU。3.2 异常处理3.2.1 显示权限问题在上一步执行ros2 launch rslidar_sdk start.py命令的时候报错了主要原因是docker中是root用户宿主机的X server默认只接受宿主机普通用户的连接在宿主机注意不是docker中执行下面命令可以解决xhostSI:localuser:root3.2.2 Rviz显示点云问题将/rslidar_points_202添加到界面点云没有显示出来解决方法将Fixed Frame中的rslidar改成rslidar_202就可以了。3.2.3 同时显示两路点云时冲突此时有多个解决方法常用的有下面两种方案 1:发布静态 TF(推荐,标准做法)发布一个 TF 关系把两个坐标系关联起来,这样 Fixed Frame 选哪个都能同时显示两路点云。最规范的结构:建一个父坐标系(如 base_link),两个雷达挂在下面:base_link → rslidar_202 的外参(x y z yaw pitch roll),按实际安装位置填 ros2 run tf2_ros static_transform_publisher \000000base_link rslidar_202 ros2 run tf2_ros static_transform_publisher \000000base_link rslidar_205(上面x/y/z/yaw/pitch/roll全填 0 是占位,实际值要根据两个雷达的物理安装位置测出来)然后在 rviz 里:Fixed Frame 选 base_link(公共父坐标系)添加两个 PointCloud2,Topic 分别选 /rslidar_points_202 和 /rslidar_points_205两路点云都能显示方案 2:统一两路 frame_id(最简单,不区分位置)如果只是想同时看到两路点云,不关心它们的空间关系(比如分别测试),把 config.yaml 里两路的 ros_frame_id 改成同一个值:第一路 ros_frame_id:rslidar 第二路 ros_frame_id:rslidar# 改成相同然后 rviz Fixed Frame 选 rslidar,两路点云会叠加显示在同一坐标系。但因为两路 frame_id 一样,点云会叠在一起,无法区分谁是谁。这里采用第一种方法操作步骤在launch/start.py里加静态TF把整个文件改成下面这样关键改动导入ExecuteProcess加两条static_transform_publisher命令。fromlaunchimportLaunchDescriptionfromlaunch.actionsimportExecuteProcessfromlaunch_ros.actionsimportNodefromament_index_python.packagesimportget_package_share_directorydefgenerate_launch_description():rviz_configget_package_share_directory(rslidar_sdk)/rviz/rviz2.rvizconfig_file# your config file pathreturnLaunchDescription([# 雷达驱动节点Node(namespacerslidar_sdk,packagerslidar_sdk,executablerslidar_sdk_node,outputscreen,parameters[{config_path:config_file}]),# rviz2Node(namespacerviz2,packagerviz2,executablerviz2,arguments[-d,rviz_config]),# 新增:静态 TF # base_link - rslidar_202 (雷达1 放在原点)ExecuteProcess(cmd[ros2,run,tf2_ros,static_transform_publisher,--x,0,--y,0,--z,0,--yaw,0,--pitch,0,--roll,0,--frame-id,base_link,--child-frame-id,rslidar_202],outputscreen),# base_link - rslidar_205 (雷达2 相对雷达1 的位置,这里填占位值,按实际测量改)# 示例:雷达2 在雷达1 前方 0.5m、左方 0.3m、同高度、yaw 偏 30 度(0.52 弧度)ExecuteProcess(cmd[ros2,run,tf2_ros,static_transform_publisher,--x,0.5,--y,0.3,--z,0,--yaw,0.52,--pitch,0,--roll,0,--frame-id,base_link,--child-frame-id,rslidar_205],outputscreen),])验证步骤# 1. 重新编译(只编 rslidar_sdk 即可,很快)cd/root/code colcon build--packages-select rslidar_sdk# 2. source 新环境source install/setup.bash# 3. 验证 install 里的 launch 已更新cat/root/code/install/rslidar_sdk/share/rslidar_sdk/launch/start.py# 4. 启动:ros2 launch rslidar_sdk start.py# 5. 新终端查 TF:ros2 run tf2_tools view_frames# 6. 会生成一个 frames.pdf,打开看 base_link 下面挂了 rslidar_202 和 rslidar_205 两个子坐标系。# 7. rviz 里:-Fixed Frame 改成 base_link-添加两个 PointCloud2,Topic 选/rslidar_points_202 和/rslidar_points_205-两路点云同时显示显示效果如下