Drobotics logo DROBOTICSTechnical Library

SLAM Guide

SLAM 无人机 — Livox 位置保持测试流程:手动起飞 + Offboard 悬停保持

All SLAM
SLAM Drone — Livox Position Hold | Manual Takeoff + Offboard Hold

SLAM Drone — Livox Position Hold

Manual Takeoff + Offboard Hold · FAST-LIO · PX4 · slam_position_hold

Position Hold FAST-LIO PX4 Offboard slam_position_hold 通过 实机验证
概述

本流程使用 slam_position_hold 控制器。它不会自动起飞,也不会向前移动。你需要在 Position 模式 下手动起飞,然后切换至 Offboard 模式,控制器会保持捕获的 XYZ 位置和偏航角。

当前 PX4 室内配置
EKF2_EV_CTRL = 1 # FAST-LIO 水平位置融合 EKF2_GPS_CTRL = 0 # GPS 融合禁用 EKF2_HGT_REF = 0 # 气压计高度参考
FAST-LIO 稳定水平位置,PX4 使用气压计和 IMU 控制高度。
警告 启动前准备
关键安全规则:
• 只使用一个控制器。不要同时运行 livox_offboard_takeofflivox_offboard_forward
• 确认 RC Position、Offboard 和 Stabilized 模式开关。
• 首次飞行保持在之前测试过的低空高度。
• 确保飞行区域无障碍物。
• 不要在测试前立即更改 PX4 参数。
• 硬件或软件更改后,先进行无桨切换测试。
终端 1 — 启动建图、MAVROS、桥接和 rosbag
# 仅在车辆已上锁且确认不需要录制时移除旧 tmux 会话 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 录制
保持此终端连接到 tmux。
终端 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
预期行为:
• 控制器等待 MAVROS 和本地里程计
• 以约 20 Hz 预流位置设定点
• 不会解锁 PX4
• 不会更改飞行模式
• 不会启动起飞
• 选择 Offboard 时,保持捕获的位置和偏航角
保持此控制器运行。
终端 3 — 解锁前验证系统
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 # 检查控制器设定点频率 timeout 6 ros2 topic hz /mavros/setpoint_position/local # 验证只有一个设定点发布者 ros2 topic info /mavros/setpoint_position/local --verbose # 检查 MAVROS 状态 ros2 topic echo /mavros/state --once
预期频率:
/Odometry: 约 10 Hz
/mavros/odometry/out: 约 10 Hz
/mavros/setpoint_position/local: 约 20 Hz
满足以下条件时不要解锁:
• /Odometry 缺失或反复停止
• 桥接输出缺失
• 设定点未以约 20 Hz 发布
• 多个飞控发布设定点
• MAVROS 断开连接
• FAST-LIO 位置在无人机静止时快速漂移
飞行流程
1. 将无人机放在水平地面,在 FAST-LIO 初始化期间保持静止。

2. 等待里程计和设定点频率稳定。

3. 在 RC 上选择 Position 模式。

4. 在 Position 模式下,低油门解锁无人机。

5. 手动增加油门,在 Position 模式下起飞。

6. 仅爬升到之前测试过的低空高度。

7. 稳定悬停约 5-10 秒。

8. 将油门摇杆回到中位。横滚、俯仰和偏航摇杆也回中。

9. 保持油门居中,从 Position 模式切换到 Offboard 模式。

10. 确认 QGC 显示 OFFBOARD

11. 首次测试仅观察 5-10 秒:
   • 水平位置应大致固定
   • 偏航应固定
   • 无人机不应主动向前移动
   • 轻微高度变化是正常的(高度基于气压计)

12. 如果一切平稳,可短暂继续测试。整个测试期间手放在模式开关上。
正常恢复与降落
结束测试:
1. 保持油门居中。
2. 从 Offboard 切换回 Position 模式。
3. 确认无人机保持可控。
4. 将油门逐渐移到底部以下开始下降。
5. 平稳降落。
6. 触地后将油门完全拉低。
7. 如果这是你的正常上锁流程,切换至 Stabilized 模式。
8. 上锁。
警告 不要在空中上锁。
紧急恢复
如果无人机漂移、振荡、意外改变高度,或控制器报告陈旧里程计:
1. 立即从 Offboard 切换回 Position 模式。
2. 初始保持油门接近中位——不要突然拉低。
3. 手动控制并执行受控降落。
4. 如果 Position 模式也不稳定或外部里程计已失效:
   • 切换至 Stabilized 模式
   • 手动控制姿态和油门
   • 降落并上锁
停止控制器并保存 bag
# 降落并上锁后,停止终端 2: Ctrl-C # 返回 tmux 终端并干净分离: Ctrl-b # 释放按键,然后按: d
启动器应报告:
Stopping ROS bag...
Stopping mapping...
Stopping odometry bridge...
Stopping MAVROS...
Checking: /home/drobotics/rosbags/...
警告 不要在主动录制时使用 tmux kill-session 停止。
# 最后确认无残留进程 pgrep -af \ 'livox_ros_driver2_node|fastlio_mapping|fastlio_to_mavros|mavros_node|rosbag2_recorder' \ || echo "PASS: no stack processes remain"
通过 测试成功标准
通过 稳定的水平位置保持
通过 立即 RC 恢复至 Position 模式
通过 干净着陆
通过 有效的 rosbag
通过 无残留堆栈进程

平台:Jetson · ROS2 Humble · Livox Mid360 · FAST-LIO · PX4 · slam_position_hold
(c) 卓博泰科技 · SLAM Position Hold 测试流程