Livox MID-70 + ROS2 + fast-lio 测试记录

最近在拿mid70和外接imu跑fast-lio ros2版本,踩了不少坑,记录一下

首先mid70在ros2上的驱动是livox-ros2-driver,而不是livox-ros-driver2。发布的点云格式为livox_interfaces/msg/custommsg。具体安装方法见:https://github.com/Livox-SDK/livox_ros2_driver

 找了一圈发现这个版本的fast-lio对于以上的数据格式是支持的,因此下载并编译这个包:

https://github.com/rohrschacht/FAST_LIO_SLAM_ros2

注意git clone --recursive,然后文件夹的名字要改成FAST_LIO.

然后修改config/mid360.yaml,主要把imu topic改成你自己的imu topic名,lidar type改成1,scan line改成6 ,blind没有深入研究起什么作用,我改成了4.0。其他的根据自己的设备修改,和原生fastlio一致。

运行起来之后,可能会报qos不匹配的错,进入lasermapping.cpp,把两个订阅改成sub_pcl_livox_ = this->create_subscription...(lid_topic, rclcpp::SensorDataQoS()

### Fat-lio 使用教程:Livox Mid-360 3D 雷达数据处理 Fat-lio 是一种基于激光雷达的 SLAM 系统,能够高效地处理来自不同类型的 LiDAR 数据。对于 Livox Mid-360 这种 3D 雷达设备的数据处理,以下是关于其配置和使用的详细介绍。 #### 1. 安装依赖项 为了运行 fat-lio 并适配 Livox Mid-360 的硬件特性,需安装必要的 ROS 和驱动程序支持。具体来说,需要确保以下软件包已正确安装并编译完成: - `livox_ros_driver`:用于接收和解析 Livox 设备发送的原始点云数据[^1]。 - `rosbag` 或其他记录工具:如果计划离线测试,则可以先录制一段雷达数据以便后续验证算法性能。 #### 2. 参数调整与配置文件修改 在实际部署前,通常需要针对特定传感器型号定制化参数设置。打开 fat-lio 提供的标准 launch 文件路径下的 YAML 配置文档(一般位于 `/config/fat_lio_params.yaml`),重点检查以下几个方面: - **扫描频率** 设置合适的帧率来匹配 Livox Mid-360 输出速率,默认可能为 10Hz 左右。这一步可通过编辑字段如 `scan_rate` 实现同步控制。 - **坐标系转换矩阵** 考虑到 IMU 和 Lidar 可能存在物理位置偏差,在融合过程中引入外参校准至关重要。利用标定板或者手眼法获取精确变换关系后填入对应条目下,比如 `extrinsic_tf{}` 中定义旋转和平移向量。 #### 3. 启动流程概述 启动整个系统涉及多个节点协同工作,主要包括但不限于以下几部分: - 发布话题订阅者实例监听目标设备传来的消息流; - 初始化滤波器模块执行姿态估计任务; - 将最终优化后的轨迹保存至磁盘便于后期分析评估效果优劣程度。 下面给出一个简单的启动脚本例子作为参考模板: ```bash roslaunch livox_fat_lio start_with_mid360.launch ``` 此命令会自动加载预设好的环境变量以及关联服务端口映射规则等信息。 #### 4. 结果可视化调试技巧 借助 RViz 插件实时观察地图构建进展状况非常有助于发现问题所在之处。推荐开启如下选项卡以增强交互体验感: - PointCloud2 显示层展示当前时刻采集得到的所有散点集合图像; - Path 绘制历史位姿变化趋势曲线图; - Grid 添加辅助网格背景方便判断比例尺大小是否合理。 --- ### 示例代码片段 这里提供一小段 Python 脚本来演示如何读取存储于本地硬盘上的 bagfile 文件内容,并提取其中感兴趣的时间戳序列号列表出来供进一步筛选过滤操作之用。 ```python import rosbag from std_msgs.msg import Header def extract_timestamps(bag_path): timestamps = [] with rosbag.Bag(bag_path, 'r') as bag: for topic, msg, t in bag.read_messages(topics=['/livox/lidar']): header: Header = msg.header sec = header.stamp.secs nsec = header.stamp.nsecs timestamp = float(f"{sec}.{nsec}") timestamps.append(timestamp) return timestamps timestamps = extract_timestamps('path_to_your_bag_file.bag') print(timestamps[:10]) # 打印前十条时间戳样本查看结果正确性 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值