Drobotics logo DROBOTICSTechnical Library

SLAM Guide

Livox FAST-LIO + PX4 Offboard 运行手册 | 无人机自主飞行操作指南

All SLAM
Livox FAST-LIO + PX4 Offboard Operations Guide | 无人机自主飞行运行手册

Livox FAST-LIO + PX4 Offboard Operations Guide

无人机自主飞行运行手册 · ROS2 Humble · FAST-LIO · MAVROS · Offboard 控制

FAST-LIO PX4 Offboard Livox MID-360 ROS2 Humble 通过 运行手册
简介

本运行手册涵盖经过测试的 F450 室内飞行堆栈:

  • PX4 v1.17.0 on Pixhawk 6C
  • ROS 2 Humble
  • FAST-LIO 里程计
  • MAVROS 外部里程计桥接
  • Livox MID-360 或 MID-360S
  • 位置设定点 Offboard 控制器
  • ROS 2 bag 录制
MID-360 和 MID-360S 使用不同的启动脚本,但保留相同的 ROS 话题和控制器接口。
目录
1. 已验证的 PX4 室内配置
2. 安全规则
3. 推荐 tmux 启动方式
4. 飞行前检查
5. 控制器选择
6. 手动起飞 + Offboard 位置保持
7. 自动 Offboard 起飞
8. 自动起飞 + 前进运动
9. 干净关闭与 bag 验证
10. FAST-LIO 台架验证
11. 频率、延迟与数据检查
12. 手动组件启动(故障排查)
13. MAVLink 遥测转发
14. PX4 NSH 估计器检查
15. 仅台架执行器诊断
16. 可选 Jetson 性能模式
17. 恢复层级
1. 已验证的 PX4 室内配置
EKF2_EV_CTRL = 1 # 融合外部视觉水平位置 EKF2_GPS_CTRL = 0 # 室内禁用 GPS 融合 EKF2_HGT_REF = 0 # 使用气压计作为高度参考
警告 不要在此飞行器上使用 EKF2_EV_CTRL=3。此前测试中外部视觉垂直融合不稳定。
使用 EKF2_EV_CTRL=1 时,FAST-LIO 辅助水平位置,PX4 继续使用 IMU 和气压计进行垂直估计和控制。
警告 2. 安全规则
强制安全规则:
  • 1. 一次只运行一个 Offboard 控制器
  • 2. 绝不同时运行 MID-360 和 MID-360S 启动器
  • 3. 解锁前验证里程计和设定点频率
  • 4. 准备好 RC Position 和 Stabilized 模式开关
  • 5. 飞行中进入或离开 Offboard 时保持油门居中
  • 6. 不要在空中上锁
  • 7. 返回手动模式、着陆并上锁后才停止控制器
  • 8. 使用 Ctrl-b 然后按 d 正确关闭 rosbag
  • 9. 不要用 tmux kill-session 停止主动飞行或录制
  • 10. 附录中的台架诊断命令绝不能在安装螺旋桨时使用
3. 推荐启动:tmux 堆栈和 bag
tmux kill-session -t slam 2>/dev/null || true
选择恰好一个传感器启动器:
# MID-360S ~/start_slam_takeoff_test_mid360s.sh # 原有 MID-360 ~/start_slam_takeoff_test.sh
启动器启动:
• Livox 驱动
• FAST-LIO
• MAVROS
• FAST-LIO-to-MAVROS 里程计桥接
• ROS2 bag 录制器
启动器不启动飞行控制器。打开第二个 SSH 终端用于所选控制器,第三个 SSH 终端用于监控。
4. 飞行前检查
source /opt/ros/humble/setup.bash source ~/slam_ws/install/setup.bash source ~/super_ws/install/setup.bash
FAST-LIO 和桥接频率
timeout 10 ros2 topic hz /Odometry timeout 10 ros2 topic hz /mavros/odometry/out
/Odometry: 约 10 Hz
/mavros/odometry/out: 约 10 Hz
PX4 状态
ros2 topic echo /mavros/state --once ros2 topic echo /mavros/extended_state --once ros2 topic echo /mavros/local_position/odom --once
connected: true
armed: false
mode: POSCTL
landed_state: 1
绝对局部位置不必为零,但必须持续更新且合理稳定。
Rosbag 状态
BAG_PANE=$(cat ~/rosbags/.slam_bag_pane) tmux capture-pane -pt "$BAG_PANE" -S -50
5. 选择恰好一个控制器
控制器起飞起飞后运动降落
slam_position_holdPosition 模式手动保持捕获的 XYZ 和偏航手动
livox_offboard_takeoff自动 0.50m 爬升保持起飞点手动
livox_offboard_forward自动 0.50m 爬升前进 0.50m 后保持手动
所有三个都发布 /mavros/setpoint_position/local。绝不同时运行多个。
6. 流程 A:手动起飞 + Offboard 位置保持
终端 2:控制器
source /opt/ros/humble/setup.bash source ~/slam_ws/install/setup.bash source ~/super_ws/install/setup.bash ros2 run drobotics_super_bridge slam_position_hold \ --ros-args \ -p setpoint_rate_hz:=20.0 \ -p odom_timeout_s:=0.50 \ -p max_odom_jump_m:=0.75
终端 3:验证控制器输出
timeout 6 ros2 topic hz /mavros/setpoint_position/local ros2 topic info /mavros/setpoint_position/local --verbose
预期:约 20 Hz · 唯一控制器发布者 · 发布者节点 slam_position_hold_controller
飞行流程
1. 等待 FAST-LIO 里程计稳定和设定点预流
2. 选择 Position 模式
3. 低油门解锁
4. 在 Position 模式下手动起飞
5. 建立稳定的低空悬停
6. 油门回中,其他摇杆回中
7. 切换至 Offboard
8. 在 QGC 中确认 OFFBOARD
9. 首次测试观察位置保持 5-10 秒
10. 保持模式开关准备就绪以便立即恢复
控制器保持进入 Offboard 时捕获的位姿。不会启动起飞、平移、返航或降落。
结束飞行
1. 保持油门居中
2. 切换至 Position 模式
3. 确认手动控制已恢复
4. 逐渐降低油门并手动降落
5. 触地后将油门完全拉低
6. 如必要切换至 Stabilized 模式
7. 上锁
7. 流程 B:自动 Offboard 起飞
source /opt/ros/humble/setup.bash source ~/slam_ws/install/setup.bash source ~/super_ws/install/setup.bash ros2 run drobotics_super_bridge livox_offboard_takeoff \ --ros-args \ -p takeoff_height_m:=0.50 \ -p climb_rate_mps:=0.20 \ -p arm_settle_time_s:=1.00 \ -p setpoint_rate_hz:=20.0 \ -p odom_timeout_s:=0.50 \ -p max_odom_jump_m:=0.75
预期初始输出:
Waiting for MAVROS state, extended state, and local odometry.
This node will not arm PX4 or change flight mode.
Prestreaming current XYZ and yaw at 20.0 Hz.
飞行流程
1. 等待稳定的里程计和 20 Hz 设定点预流
2. 选择 Position 模式
3. 保持低油门解锁
4. 在 Position 模式下将油门移至中位
5. 所有摇杆居中等待 1-2 秒
6. 切换至 Offboard
7. 在 QGC 中确认 OFFBOARD
8. 控制器以 0.20 m/s 爬升约 0.50 米
9. 然后保持起飞 XYZ 位置和偏航角
警告 takeoff_height_m 是相对于捕获的局部起始位置的爬升,不是 LiDAR 距地面的物理高度。
控制器永不解锁、改变模式或自动降落。
结束飞行
1. 保持油门居中
2. 切换至 Position 模式
3. 逐渐降低油门并手动降落
4. 触地后完全拉低油门
5. 如必要切换至 Stabilized 模式
6. 上锁
↗ 8. 流程 C:自动起飞 + 0.50m 前进
警告 本控制器无避障功能。机头朝向预定方向,前方至少提供 1.5 米净空,两侧和垂直方向也需净空。
source /opt/ros/humble/setup.bash source ~/slam_ws/install/setup.bash source ~/super_ws/install/setup.bash ros2 run drobotics_super_bridge livox_offboard_forward \ --ros-args \ -p takeoff_height_m:=0.50 \ -p climb_rate_mps:=0.20 \ -p arm_settle_time_s:=1.00 \ -p forward_distance_m:=0.50 \ -p forward_speed_mps:=0.10 \ -p post_takeoff_hold_s:=5.00 \ -p settle_position_tolerance_m:=0.15 \ -p settle_vertical_speed_mps:=0.15 \ -p settle_confirm_time_s:=2.00 \ -p takeoff_settle_timeout_s:=20.00 \ -p setpoint_rate_hz:=20.0 \ -p odom_timeout_s:=0.50 \ -p max_odom_jump_m:=0.75
任务流程
1. 等待稳定的里程计和设定点预流
2. 机头朝向畅通的前进方向
3. 选择 Position 模式
4. 保持低油门解锁
5. 油门移至中位
6. 等待 1-2 秒
7. 所有摇杆居中切换至 Offboard
8. 控制器以 0.20 m/s 爬升 0.50 米
9. 等待高度估计在目标 0.15 米内且垂直速度低于 0.15 m/s 持续 2 秒
10. 保持起飞点 5 秒
11. 以 0.10 m/s 在捕获的机头方向前进 0.50 米
12. 无限期保持最终位置
标称时间:
爬升斜坡:2.5 秒
稳定确认:至少 2 秒
起飞后保持:5 秒
前进运动:5 秒
前进运动不会在进入 Offboard 后立即开始。
中止条件
如果出现以下情况,立即切换至 Position 模式:
  • 方向错误
  • 横向移动而非前进
  • 平移时高度明显变化
  • FAST-LIO 位置跳变或停止
  • 控制器报告陈旧里程计或起飞稳定超时
  • 路径不再畅通
9. 干净关闭与 bag 验证
1. 在终端 2 中用 Ctrl-C 停止控制器
2. 返回 tmux 终端
3. 按 Ctrl-b,释放,然后按 d
4. 等待启动器停止 bag、建图、桥接和 MAVROS
source /opt/ros/humble/setup.bash LATEST_BAG=$(cat ~/rosbags/.latest_indoor_hover) echo "$LATEST_BAG" ls -lah "$LATEST_BAG" ros2 bag info "$LATEST_BAG"
预期话题:
/Odometry · /mavros/odometry/in · /mavros/odometry/out · /mavros/local_position/odom · /mavros/state · /mavros/extended_state · /mavros/imu/data · /mavros/setpoint_position/local · /tf · /tf_static · /diagnostics
pgrep -af \ 'livox_ros_driver2_node|fastlio_mapping|fastlio_to_mavros|mavros_node|rosbag2_recorder' \ || echo "PASS: no stack processes remain"
10-16. 诊断与高级操作
FAST-LIO 台架验证 · 频率/延迟检查 · 手动组件启动 · MAVLink 遥测转发 · PX4 NSH 检查 · Jetson 性能模式
详细命令请参考完整运行手册。关键诊断命令包括:

timeout 15 ros2 topic delay /Odometry
timeout 15 ros2 topic delay /super/livox/lidar
ros2 launch mavros px4.launch fcu_url:=/dev/serial/by-id/...:115200
sudo jetson_clocks(可选性能模式)
警告 台架执行器诊断命令绝不能在安装螺旋桨时使用。
17. 恢复层级
1. 保持油门接近中位
2. 立即切换至 Position 模式
3. 确认手动控制并制止非预期运动
4. 逐渐下降并降落
5. 如果 Position 模式不可用或不稳定,切换至 Stabilized 模式并手动降落
6. 触地后才上锁
7. 停止控制器并分离 tmux 以保存 bag

平台:Pixhawk 6C · PX4 1.17 · ROS2 Humble · Livox MID-360 · FAST-LIO · MAVROS
(c) 卓博泰科技 · Livox FAST-LIO + PX4 Offboard 运行手册