N10 激光雷达 ROS2 功能包使用
Hint
操作环境及软硬件配置如下:
- 雷达型号:镭神 N10 激光雷达
- 操作系统:Ubuntu 22.04
- ROS2 版本:Humble
- ROS2 功能包:
lslidar_driver+lslidar_msgs - 本文档只说明 N10
功能包/资料包下载链接:(可参考套件资料/资料链接下载)
场景说明
本文档用于说明如何在 ROS2 中启动 N10 激光雷达,并查看 /scan、lslidar_point_cloud 等雷达数据。N10 启动后主要发布二维激光扫描数据,可用于机器人避障、SLAM、Nav2 导航等功能。
N10 相关文件如下:
| 用途 | 文件 |
|---|---|
| N10 串口版参数 | lslidar_driver/config/lslidar_n10_uart.yaml |
| N10 网口版参数 | lslidar_driver/config/lslidar_n10_net.yaml |
| N10 串口版启动 | lslidar_driver/launch/lsn10_launch.py |
| N10 网口版启动 | lslidar_driver/launch/lsn10_net_launch.py |
| 自定义消息/服务 | lslidar_msgs |
一、功能包准备
第一步:创建工作空间
第二步:解压功能包
将资料包中的以下两个压缩包解压到 src 目录:
解压后目录结构建议如下:
如果还需要使用串口别名,可以把 wheeltec_udev.sh 一并放在工作空间中,或直接从资料包原目录执行。
第三步:安装依赖
安装 ROS2 编译工具:
安装驱动所需依赖:
sudo apt install -y \
ros-$ROS_DISTRO-pcl-conversions \
ros-$ROS_DISTRO-builtin-interfaces \
ros-$ROS_DISTRO-rosidl-default-generators \
libpcl-dev \
libpcap-dev \
libyaml-cpp-dev
如果编译时提示缺少 diagnostic_updater,可以补充安装:
第四步:编译功能包
回到工作空间根目录:
如果只想重新编译雷达驱动包,可以执行:
Attation
修改 config/*.yaml 参数后,建议重新编译并重新 source 环境,避免启动时仍读取旧安装目录中的参数文件。
二、N10 串口版启动
第一步:确认串口参数
打开 N10 串口版配置文件:
重点确认:
x10:
lslidar_driver_node:
ros__parameters:
lidar_type: "X10"
lidar_model: "N10"
serial_port: "/dev/wheeltec_lidar"
frame_id: "laser"
pointcloud_topic: "lslidar_point_cloud"
laserscan_topic: "/scan"
publish_scan: true
如果不使用固定别名,而实际串口为 /dev/ttyUSB0,则修改为:
第二步:启动 N10 串口版雷达
启动成功后,驱动节点会读取 lslidar_n10_uart.yaml 参数,并开始发布雷达数据。
三、查看 ROS2 话题
启动 N10 后,打开新终端并 source 工作空间:
正常情况下,应能看到类似话题:
其中:
| 话题 | 类型 | 说明 |
|---|---|---|
/scan |
sensor_msgs/msg/LaserScan |
二维激光扫描数据,导航和避障常用 |
lslidar_point_cloud |
sensor_msgs/msg/PointCloud2 |
点云数据,可用于 RViz 显示 |
查看 /scan 数据:
查看发布频率:
查看点云数据频率:
四、RViz2 可视化显示
第一步:启动 RViz2
如果使用功能包自带 RViz 配置,可以执行:
第二步:设置 Fixed Frame
在 RViz2 左侧 Global Options 中,将 Fixed Frame 设置为:
该值对应 N10 参数文件中的:
第三步:添加 LaserScan 显示
点击 Add,选择:
如果 /scan 正常发布,RViz2 中应能看到一圈二维激光点。
第四步:添加 PointCloud2 显示
点击 Add,选择:
如果点云话题正常发布,RViz2 中可以看到雷达点云。
五、N10 常用参数说明
N10 参数主要在以下两个文件中修改:
1. 基本参数
| 参数 | 默认值 | 说明 |
|---|---|---|
lidar_type |
X10 |
N10 所属驱动类型,不建议修改 |
lidar_model |
N10 |
雷达型号,本文档只使用 N10 |
serial_port |
/dev/wheeltec_lidar 或空 |
串口版填写串口,网口版保持空 |
device_ip |
192.168.1.200 |
网口版雷达 IP |
msop_port |
2368 |
雷达数据端口 |
difop_port |
2369 |
雷达设备端口 |
frame_id |
laser |
雷达坐标系名称 |
laserscan_topic |
/scan |
LaserScan 话题名 |
pointcloud_topic |
lslidar_point_cloud |
点云话题名 |
2. 数据发布参数
| 参数 | 默认值 | 说明 |
|---|---|---|
publish_scan |
true |
是否发布 /scan |
use_high_precision |
false |
LaserScan 高精度模式,N10 可按需求开启 |
min_range |
0.15 |
最小有效距离,单位 m |
max_range |
50.0 |
最大有效距离,单位 m |
如果需要更高角度精度,可以尝试:
Attation
高精度模式会增加 LaserScan 数据量。如果上位机或机器人算力较弱,建议先保持默认值,确认数据稳定后再开启。
3. 角度屏蔽参数
默认不屏蔽角度:
如果需要屏蔽 0° 到 90°:
如果需要屏蔽两个区域,例如 0° 到 90°、180° 到 270°:
角度单位为 0.01°,因此 9000 表示 90°。
4. 坐标变换参数
如果只需要普通 /scan 数据,一般不需要修改以下参数:
如果要对点云进行平移或旋转,可开启:
然后根据雷达安装位置修改 x_offset、y_offset、yaw 等参数。
七、Nav2 使用
如果 N10 用于 Nav2 避障或建图,通常使用 /scan 作为激光输入。
Nav2 或 SLAM 配置中常见设置如下:
同时需要保证 TF 中存在从机器人底盘坐标系到雷达坐标系的变换,例如:
如果没有雷达 TF,可以临时发布静态 TF:
其中 0 0 0.15 需要根据雷达实际安装高度和位置修改。
