PX4无人机|MID360+FAST_LIO实战:从零搭建室内自主定位与悬停系统

张开发
2026/4/15 1:43:32 15 分钟阅读

分享文章

PX4无人机|MID360+FAST_LIO实战:从零搭建室内自主定位与悬停系统
1. 硬件准备与环境搭建想要用PX4无人机搭配MID360激光雷达实现室内自主飞行首先得把硬件凑齐。我用的是一台搭载微空科技MicoAir743V2飞控的450轴距无人机机载电脑选用了12代i5处理器的迷你PC跑的是Ubuntu 20.04系统。这里有个细节要注意MID360的安装方向要和飞机坐标系对齐通常把雷达接口朝向机尾安装最省事。激光雷达和机载电脑的连接很简单用Type-C线直连就行。但飞控和机载电脑的连接就有讲究了建议用高质量的USB线我刚开始用杂牌线经常出现通信中断换成带磁环的工业级线缆后稳如老狗。地面站推荐QGC 4.4.5版本和PX4 1.15.4固件搭配最稳定。Ubuntu环境配置有几个坑得提前避开首先必须禁用USB自动挂载否则雷达数据会断断续续。在终端输入sudo systemctl stop udisks2 sudo systemctl disable udisks2然后记得把用户加入dialout组不然没权限操作串口sudo usermod -a -G dialout $USER2. PX4飞控关键参数配置飞控参数设置是整套系统的核心这里我踩过最深的坑就是坐标系转换问题。在QGC的参数列表中找到EKF2_EV_CTRL参数把视觉位置估计(Vision position)和视觉偏航估计(Vision yaw)都打开。EKF2_HGT_REF要设为Vision告诉飞控用激光雷达数据作为高度参考。有个特别容易忽略的参数是EKF2_EV_DELAY这个值要设成实际数据传输的延迟时间。我实测MID360FAST_LIO的延迟大约在0.05秒左右设大了会导致控制滞后设小了容易震荡。室内环境下建议先用0.05飞行时再微调。关闭罗盘是必须的因为激光SLAM本身就提供偏航角估计。在参数列表搜索CAL_MAG开头的所有参数全部设为0禁用。这时候你会发现无人机上电时机头指向会变这是正常现象——原来的磁力计数据被视觉定位替代了。3. FAST_LIO算法部署与调优FAST_LIO的安装其实比VINS简单多了先装好ROS Noetic和Livox SDK后直接克隆官方仓库git clone https://github.com/hku-mars/FAST_LIO.gitMID360需要特别的launch文件配置在livox_ros_driver2包里找到msg_MID360.launch我建议把scan_mode改成双回波模式point_num设为3000这样既能保证点云密度又不会太吃算力。频率调到30Hz后12代i5的CPU占用率大概在40%左右。mapping_mid360.launch里有几个关键参数要改param namemap_resolution value0.1/ param namemax_radius value10.0/ param namemax_theta value45.0/室内环境建议地图分辨率设0.1米最大半径根据房间大小调整。我测试时发现超过10米后定位精度会下降所以一般设8-10米比较稳妥。4. 数据流对接与坐标转换整个系统最复杂的部分就是坐标系转换。FAST_LIO输出的Odometry数据需要转换成/mavros/vision_pose/pose话题这里涉及到三个坐标系转换激光雷达坐标系→机体坐标系→ENU世界坐标系。我写的转换节点主要做三件事首先是滑动窗口滤波处理偏航角解决激光SLAM的yaw噪声问题其次是坐标系对齐用初始时刻的偏航角作为基准最后是发布频率控制实测30Hz的发布频率会导致PX4的EKF过载降到15-20Hz刚刚好。关键代码段是这个四元数转换rot_matrix tf.transformations.quaternion_matrix(self.init_q)[:3, :3] p_enu np.dot(rot_matrix, self.p_lidar_body)这个转换保证了无论无人机初始朝向如何转换后的坐标都以起飞点为原点X向前Y向左Z向上。5. 系统联调与悬停测试所有组件准备好后启动顺序很重要先启动雷达驱动再开FAST_LIO建图接着启动MAVROS最后运行坐标转换节点。建议写个bash脚本自动化这个过程#!/bin/bash roslaunch livox_ros_driver2 msg_MID360.launch sleep 3 roslaunch fast_lio mapping_mid360.launch sleep 5 roslaunch mavros px4.launch sleep 2 roslaunch fastlio_to_mavros vision.launch第一次飞行建议先用手持测试抱着无人机在房间里走动观察QGC上的位置估计是否准确。重点看三个指标位置漂移要小于5cm/s、高度波动要小于3cm、偏航角抖动要小于1度。我发现在瓷砖地面上效果最好毛毯地面容易产生高度估计抖动。悬停测试时先让飞机离地1米左右观察位置保持情况。如果出现高频震荡需要调小EKF2_EV_DELAY如果是低频漂移可能需要调整FAST_LIO的定位权重参数。记得在QGC里把起飞高度设得比实际悬停高度低0.2米这样能避免起飞时过于激进的动作。

更多文章