参考链接:
https://blog.csdn.net/HuangChen666/article/details/128754106
https://www.yuque.com/xtdrone/manual_cn/basic_config_13

安装mavros
MAVROS是ROS(机器人操作系统)下的开源功能包,核心作用是搭建ROS与MAVLink协议设备(如PX4飞控)之间的通信桥梁,适配ROS1与ROS2版本(含MAVROS2)。
它可实现ROS话题、服务与飞控指令、状态数据的双向互通,既能向PX4飞控下发起飞、悬停、返航等控制指令,也能实时订阅GPS位置、飞行姿态、电池状态等遥测数据。
作为无人机智能化开发的核心工具,MAVROS广泛应用于避障算法、目标追踪、路径规划等场景,也是Offboard模式调试的关键支撑,常与PX4飞控配合使用,构成无人机开发的标准架构。
1 | sudo apt install ros-noetic-mavros ros-noetic-mavros-extras # for ros-noetic |
安装PX4
编译安装
Github下载
1 | git clone https://github.com/PX4/PX4-Autopilot.git |
可下载上述安装包
1 | cd PX4_Firmware |
编译完成后,会弹出Gazebo界面,将其关闭即可。
修改 ~/.bashrc,加入以下代码,注意路径匹配,前两个source顺序不能颠倒。
我用的是zsh
所以添加这些到~/.zshrc
1 | # PX4 Gazebo simulation environment |
改变飞机模型
搭载不同传感器
1 | Tools/sitl_gazebo/models/ |

修改launch文件的sdf属性
``
1 | echo "commander takeoff" | python3 Tools/mavlink_shell.py 127.0.0.1:14550 |

1 | roslaunch px4 outdoor1.launch |

需要下再好gazebo的模型不然运行时会加载不出来,保存到~/.gazebo/models目录下
安装XTDrone
XTDrone是一款基于ROS、Gazebo与PX4开发的开源通用无人机仿真平台,可看作无人机开发的“虚拟沙盒”,核心用于无人机算法调试、功能验证与开发练习,无需真机即可完成各类测试,安全且高效。
它支持多旋翼、固定翼、VTOL等多种机型,还可适配无人车、无人船、机械臂等多种无人系统,能实现多机编队、自主导航、SLAM、目标追踪等多种场景的仿真。其核心优势是模块化设计,可灵活修改仿真模型与参数,且在平台上验证通过的算法,能方便地部署到真实无人机上。
XTDrone与PX4飞控配合紧密,可通过相关通信工具实现ROS与PX4飞控的通信,构建起“仿真环境-飞控”的完整开发架构,是无人机智能化开发与调试的重要工具。
安装QGC
QGroundControl (QGC) 是一款开源、跨平台、专业级的无人机 / 无人系统地面控制站(GCS),基于 MAVLink 协议,为 PX4、ArduPilot 等主流飞控提供全链路控制、任务规划与数据分析能力。
完全适配 PX4 仿真。
官网: https://qgroundcontrol.com/

On the command prompt enter:
1
2
3
4
5sudo usermod -a -G dialout $USER
sudo apt-get remove modemmanager -y
sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y
sudo apt install libfuse2 -y
sudo apt install libxcb-xinerama0 libxkbcommon-x11-0 libxcb-cursor-dev -yLogout and login again to enable the change to user permissions.
To install QGroundControl:
Download QGroundControl-x86_64.AppImage.
Install (and run) using the terminal commands:
1
2chmod +x ./QGroundControl-x86_64.AppImage
./QGroundControl-x86_64.AppImage (or double click)
安装版本为v3.5.5版本,参考github链接 : https://github.com/mavlink/qgroundcontrol/releases
安装过程用Claude code解决
在设置中可打开虚拟按钮操控

左摇杆为升降高度,右摇杆为前后左右
安装Lightning-LM
Lightning-Speed Lidar Localization and Mapping
Lightning-LM 是一个完整的激光建图+定位模块。
Lightning-LM特性:
- [done] 完整的3D Lidar SLAM,快速的LIO前端(AA-FasterLIO),标配
- [done] 3D至2D地图转换(g2p5),选配,选上的话会输出实时的2D栅格,可以保存
- [done] 实时回环检测,标配,选上的话会进行后端回环检测并闭环
- [done] 流畅的高精3D Lidar 定位,标配
- [done] 地图分区动态加载方案,适用大场景
- [done] 动静态图层分离定位,适配动态场景,可选择动态图层的策略,选配,选上的话会保存动态图层的地图内容,有三种策略可以选(短期、中期、永久),默认永久
- [done] 高频率IMU平滑输出,标配,100Hz
- GPS地理信息关联,选配 (TODO)
- 车辆里程计输入,选配 (TODO)
- [done] 轻量优化库miao以及增量式优化(来自g2o,但更轻更快,支持增量优化,不需要重新构建优化模型),标配,在回环、定位中均有用到
- [done] 离线与在线两种验证方案。离线可以断点调试,一致性强。在线可以多线程并发,处理速度快,可以设置动态跳帧,占用低。
- [done] 基于外推器和平滑器的高频率输出,平滑因子可调
- [done] 高性能计算:以上这些特性在纯CPU端不到一个核心就可以运行(在线定位0.8个核,建图1.2个核,32线雷达,无UI情况)
1 | git clone https://github.com/gaoxiang12/lightning-lm.git |
因为此算法适配的是ROS2,需要改为ROS1 noteic
此步骤采用CC来辅助实现
采用NCLT数据集测试
离线建图指令为
1 | rosrun lightning run_slam_offline --config /home/ychooo/ROS_WS/Lightning_ws/src/lightning-lm/config/default_nclt.yaml --input_bag /media/ychooo/KINGIDISK/Datasets/nclt/20130110.bag |
已成功运行

结束后会自动保存至data/new_map目录下
原作者提供了三种msg类型: PointCloud, PointCloud2 和 CustomMsg,因此可以兼容A-LOAM,Fast-LIO和R3live等slam算法。
结论:错误原因是 Gazebo 仿真数据中 Livox 点云的有效数据不足
根据我的分析:
- 你使用的是 Gazebo 仿真,/scan topic 是 livox_ros_driver/CustomMsg 格式
- AviaHandler 过滤条件太严格 — Gazebo 模拟器产生的 Livox 消息中 tag 和 line 字段可能不符合 Livox
官方驱动设置的有效值(tag: 0x00 或 0x10,line: < 6) 这导致每帧点云几乎为空 → EKF 状态估计失败 → 后续处理崩溃
建议修改 src/faster-lio/src/pointcloud_preprocess.cc 中的 AviaHandler 函数,放宽对 tag 和 line
的过滤条件,或者改用适配仿真数据的 launch 配置。你想让我帮你:
修改 AviaHandler 使其兼容 Gazebo 仿真数据?
- 还是改用 Velodyne 配置(如果 Gazebo 发布的是标准格式)?