Drobotics logo DROBOTICSTechnical Library

SLAM Guide

SLAM 无人机 — 自主 Offboard 起飞流程 | livox_offboard_takeoff

All SLAM
SLAM Drone — Automatic Offboard Takeoff | 自主 Offboard 起飞流程

SLAM Drone — Automatic Offboard Takeoff

自主 Offboard 起飞流程 · livox_offboard_takeoff · FAST-LIO · PX4

自主起飞 FAST-LIO PX4 Offboard livox_offboard_takeoff 通过 实机验证
概述

本流程使用 livox_offboard_takeoff 控制器。它不会解锁 PX4,也不会自动选择 Offboard 模式。它会预流当前的 XYZ 位置和偏航角。解锁并选择 Offboard 后,控制器会命令相对爬升 0.50 米,然后保持起飞位置。不会自动降落。

控制器参数
参数默认值说明
takeoff_height_m0.50起飞高度(米)
climb_rate_mps0.20爬升率(米/秒)
arm_settle_time_s1.00解锁稳定时间(秒)
setpoint_rate_hz20.0设定点频率(Hz)
odom_timeout_s0.50里程计超时(秒)
max_odom_jump_m0.75最大里程计跳变(米)
takeoff_height_m:=0.50 表示在捕获的起始局部位置上方约 0.50 米,不是 LiDAR 距地面的高度。
终端 1 — 启动堆栈和 rosbag
# 仅在无人机已上锁且无需保留 bag 时杀死旧 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 录制
保持终端 1 连接到 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 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.
控制器必须在整个测试期间保持运行。
终端 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 # 检查 PX4 状态 ros2 topic echo /mavros/state --once ros2 topic echo /mavros/extended_state --once ros2 topic echo /mavros/local_position/odom --once
预期:
/Odometry: 约 10 Hz
/mavros/odometry/out: 约 10 Hz
/mavros/setpoint_position/local: 约 20 Hz
发布者: livox_offboard_takeoff
connected: true · armed: false · mode: POSCTL · landed_state: 1
如果另一个控制器也在发布,请勿继续。
PX4 配置
EKF2_EV_CTRL = 1 # FAST-LIO 水平位置融合 EKF2_GPS_CTRL = 0 # GPS 融合禁用 EKF2_HGT_REF = 0 # 气压计高度参考
警告 不要使用 EKF2_EV_CTRL=3,垂直外部视觉融合在该车辆上不稳定。
无桨台架测试
硬件或软件更改后,在安装螺旋桨前执行此测试:
1. 启动堆栈和控制器
2. 验证 10 Hz 里程计和 20 Hz 设定点
3. 选择 Position 模式
4. 保持低油门解锁
5. 将油门移至中位
6. 等待 1-2 秒
7. 切换至 Offboard
8. 仅观察电机约 3-5 秒
9. 切换回 Position 模式
10. 将油门完全拉低并上锁
警告 电机转速可能会增加,因为 PX4 命令爬升但无桨车辆无法上升。不要在 Offboard 状态下长时间保持解锁。
实际自动起飞流程
1. 将无人机放在水平地面上,FAST-LIO 初始化期间保持静止。

2. 验证里程计、桥接、设定点、MAVROS 和 rosbag 状态。

3. 在 RC 上选择 Position 模式。

4. 确保油门处于低位。

5. 在 Position 模式下解锁。

6. 将油门摇杆移至中位(仍在 Position 模式下)。

7. 等待约 1-2 秒。

8. 保持横滚、俯仰、偏航和油门居中。

9. 从 Position 模式切换至 Offboard 模式。
控制器将:
• 检测解锁状态和 Offboard 模式
• 完成 1 秒解锁稳定时间
• 保持原始 X/Y 位置和偏航角
• 以约 0.20 m/s 提升高度设定点
• 在起始位置上方约 0.50 米处停止爬升
• 保持该位置
设定点爬升时间: 0.50 m ÷ 0.20 m/s = 2.5 秒
实际飞行器可能需要稍长时间稳定。
在 Offboard 模式下保持油门居中。虽然控制器指挥飞行,但居中的油门有助于更平滑地返回 Position 模式。
预期空中行为
通过 QGC 显示 OFFBOARD
通过 飞行器缓慢上升(非跳跃式)
通过 水平位置保持固定
通过 偏航保持固定
通过 爬升在约 0.50 米处停止
通过 控制器继续保持起飞点
通过 不会向前移动
通过 不会自动降落
警告 首次装桨测试时,到达目标高度后仅保持数秒。
正常降落
控制器不会执行降落。手动结束飞行:
1. 保持油门居中。
2. 从 Offboard 切换回 Position 模式。
3. 确认手动位置控制已恢复。
4. 逐渐将油门移到底部以下。
5. 缓慢下降。
6. 着陆。
7. 将油门完全拉低。
8. 如果这是既定的上锁流程,切换至 Stabilized 模式。
9. 上锁。
警告 不要在空中上锁。
紧急恢复
如果飞行器爬升过快、下降、振荡、漂移或产生里程计警告:
1. 立即从 Offboard 切换回 Position 模式。
2. 初始保持油门接近中位。
3. 手动控制。
4. 逐渐下降并着陆。
5. 在空中时不要突然将油门完全拉低。
6. 如果 Position 模式不可用或不稳定(外部里程计已失效):
   • 切换至 Stabilized 模式
   • 手动控制姿态和油门
   • 降落并上锁
停止并保存 bag
# 仅着陆并上锁后: # 终端 2:停止控制器 Ctrl-C # 返回终端 1 并分离 tmux: Ctrl-b # 释放按键,然后按: d
警告 不要在主动飞行录制时使用 tmux kill-session 停止。
检查保存的 rosbag
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"
有效 bag 应包含:
/Odometry · /mavros/odometry/out · /mavros/odometry/in · /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"
通过 关键确认
通过 在 Position 模式下解锁 → 居中油门 → 等待 → 切换 Offboard
这是此自动起飞控制器已验证的正确工作流程。

平台:Jetson · ROS2 Humble · Livox Mid360 · FAST-LIO · PX4 · livox_offboard_takeoff
(c) 卓博泰科技 · Automatic Offboard Takeoff 测试流程