SLAM Drone — Offboard Takeoff + 0.50m Forward
自主起飞 + 前进测试 · livox_offboard_forward · FAST-LIO · PX4
自主起飞
↗ 0.50m 前进
FAST-LIO
PX4 Offboard
通过 实机验证
概述
本流程使用 livox_offboard_forward 控制器执行以下任务:
• 等待你解锁并选择 Offboard
• 爬升约 0.50 米
• 确认飞行器已稳定
• 保持 5 秒
• 以 0.10 m/s 前进 0.50 米
• 无限期保持最终位置
• 爬升约 0.50 米
• 确认飞行器已稳定
• 保持 5 秒
• 以 0.10 m/s 前进 0.50 米
• 无限期保持最终位置
控制器不会解锁 PX4、选择 Offboard、避障或自动降落。
⏱ 预期任务时间线
| 阶段 | 计算 | 时间 |
|---|---|---|
| 爬升 | 0.50 m ÷ 0.20 m/s | ≈ 2.5 秒 |
| 稳定检查 | settle_confirm_time_s | ≥ 2 秒 |
| 起飞后保持 | post_takeoff_hold_s | 5 秒 |
| 前进运动 | 0.50 m ÷ 0.10 m/s | 5 秒 |
前进运动不会在切换到 Offboard 后立即开始。预计需要约 10 秒或更长时间,具体取决于飞行器稳定速度。
控制器参数
| 参数 | 值 | 说明 |
|---|---|---|
takeoff_height_m | 0.50 | 起飞高度(米) |
climb_rate_mps | 0.20 | 爬升率(米/秒) |
arm_settle_time_s | 1.00 | 解锁稳定时间(秒) |
forward_distance_m | 0.50 | 前进距离(米) |
forward_speed_mps | 0.10 | 前进速度(米/秒) |
post_takeoff_hold_s | 5.00 | 起飞后保持时间(秒) |
settle_position_tolerance_m | 0.15 | 稳定位置容差(米) |
settle_vertical_speed_mps | 0.15 | 稳定垂直速度容差(米/秒) |
settle_confirm_time_s | 2.00 | 稳定确认时间(秒) |
takeoff_settle_timeout_s | 20.00 | 起飞稳定超时(秒) |
setpoint_rate_hz | 20.0 | 设定点频率(Hz) |
odom_timeout_s | 0.50 | 里程计超时(秒) |
max_odom_jump_m | 0.75 | 最大里程计跳变(米) |
警告 启动前准备
安全要求:
• 无人机机头朝向预定前进方向
• 前方至少 1.5 米 净空
• 两侧至少 1 米 净空
• 移除轨迹上的人员、门、线缆、家具和其他障碍物
• 本控制器 无避障功能
• 无人机机头朝向预定前进方向
• 前方至少 1.5 米 净空
• 两侧至少 1 米 净空
• 移除轨迹上的人员、门、线缆、家具和其他障碍物
• 本控制器 无避障功能
仅使用一个控制器。停止
slam_position_hold 和 livox_offboard_takeoff。
EKF2_EV_CTRL = 1
EKF2_GPS_CTRL = 0
EKF2_HGT_REF = 0
终端 1 — 启动堆栈和 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
保持终端 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_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
保持此终端可见。其消息指示当前任务阶段。
终端 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 --field pose.pose.position
预期:
/Odometry: 约 10 Hz
/mavros/odometry/out: 约 10 Hz
/mavros/setpoint_position/local: 约 20 Hz
发布者: livox_offboard_forward
connected: true · armed: false · mode: POSCTL · landed_state: 1
/Odometry: 约 10 Hz
/mavros/odometry/out: 约 10 Hz
/mavros/setpoint_position/local: 约 20 Hz
发布者: livox_offboard_forward
connected: true · armed: false · mode: POSCTL · landed_state: 1
如果另一个控制器也在发布,请勿解锁。位置必须稳定。
无桨测试限制
无桨测试可以验证:设定点流 · Position→Offboard 模式切换 · 电机响应 · 控制器和 MAVROS 通信
无法完成前进任务,因为无人机无法爬升或满足起飞稳定条件。
无法完成前进任务,因为无人机无法爬升或满足起飞稳定条件。
无桨测试流程:
1. 在 Position 模式下解锁
2. 居中油门
3. 等待 1-2 秒
4. 切换至 Offboard
5. 仅观察 3-5 秒
6. 切换回 Position 模式
7. 降低油门并上锁
1. 在 Position 模式下解锁
2. 居中油门
3. 等待 1-2 秒
4. 切换至 Offboard
5. 仅观察 3-5 秒
6. 切换回 Position 模式
7. 降低油门并上锁
警告 无桨时不要等待 20 秒起飞稳定超时。
实际飞行流程
1. FAST-LIO 初始化期间保持无人机静止。
2. 验证所有话题频率和 MAVROS 状态。
3. 确认无人机前方区域完全畅通。
4. 机头朝向预定前进方向。
5. 选择 Position 模式。
6. 保持低油门解锁。
7. 将油门移至中位(仍在 Position 模式下)。
8. 等待约 1-2 秒。
9. 保持所有 RC 摇杆居中。
10. 切换至 Offboard。
2. 验证所有话题频率和 MAVROS 状态。
3. 确认无人机前方区域完全畅通。
4. 机头朝向预定前进方向。
5. 选择 Position 模式。
6. 保持低油门解锁。
7. 将油门移至中位(仍在 Position 模式下)。
8. 等待约 1-2 秒。
9. 保持所有 RC 摇杆居中。
10. 切换至 Offboard。
任务阶段
阶段 1 — 自动起飞
无人机以 0.20 m/s 爬升约 0.50 米,同时保持初始 X/Y 位置和偏航角。
阶段 2 — 稳定
控制器等待无人机在目标 0.15 米以内且垂直速度低于 0.15 m/s 至少 2 秒。
阶段 3 — 起飞后保持
无人机保持起飞位置 5 秒。
警告 前几秒没有前进运动不代表有问题。
阶段 4 — 前进运动
无人机沿任务开始时机头方向前进约 0.50 米。
速度:0.10 m/s · 持续时间:约 5 秒
速度:0.10 m/s · 持续时间:约 5 秒
阶段 5 — 最终保持
到达前进目标后,无人机停止并保持最终 XYZ 位置和偏航角,直到你切换模式。
观察要点
起飞期间:
通过 缓慢、受控爬升
通过 无明显水平漂移
通过 偏航稳定
通过 无快速电机波动
通过 缓慢、受控爬升
通过 无明显水平漂移
通过 偏航稳定
通过 无快速电机波动
前进运动期间:
通过 沿机头方向运动
通过 约步行速度
通过 无意外横向运动
通过 高度大致恒定
通过 在 0.50 米附近减速停止
通过 沿机头方向运动
通过 约步行速度
通过 无意外横向运动
通过 高度大致恒定
通过 在 0.50 米附近减速停止
立即停止测试,如果:
• 无人机方向错误
• 侧向移动而非前进
• 在达到稳定悬停前开始移动
• 前进时高度明显变化
• FAST-LIO 位置跳变
• 控制器报告陈旧里程计或超时
• 飞行路径不再畅通
• 无人机方向错误
• 侧向移动而非前进
• 在达到稳定悬停前开始移动
• 前进时高度明显变化
• FAST-LIO 位置跳变
• 控制器报告陈旧里程计或超时
• 飞行路径不再畅通
正常降落
1. 保持油门居中。
2. 从 Offboard 切换回 Position 模式。
3. 确认手动控制已恢复。
4. 逐渐将油门移到底部以下。
5. 下降并着陆。
6. 将油门完全拉低。
7. 如必要切换至 Stabilized 模式。
8. 上锁。
2. 从 Offboard 切换回 Position 模式。
3. 确认手动控制已恢复。
4. 逐渐将油门移到底部以下。
5. 下降并着陆。
6. 将油门完全拉低。
7. 如必要切换至 Stabilized 模式。
8. 上锁。
控制器不会自动返航或降落。
紧急恢复
如果任何异常:
1. 立即切换至 Position 模式。
2. 初始保持油门接近中位。
3. 允许无人机停止前进运动。
4. 必要时手动重新定位。
5. 逐渐下降并着陆。
6. 模式切换时无人机可能有前进惯性,预留额外停车空间。
2. 初始保持油门接近中位。
3. 允许无人机停止前进运动。
4. 必要时手动重新定位。
5. 逐渐下降并着陆。
6. 模式切换时无人机可能有前进惯性,预留额外停车空间。
如果 Position 模式不可用或不稳定:切换至 Stabilized 模式 · 手动控制 · 降落并上锁
停止并保存 rosbag
# 着陆并上锁后:
# 终端 2:停止控制器
Ctrl-C
# 返回终端 1 并分离 tmux:
Ctrl-b
# 释放按键,然后按:
d
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 应包含
/mavros/setpoint_position/local 以及里程计和状态话题。pgrep -af \
'livox_ros_driver2_node|fastlio_mapping|fastlio_to_mavros|mavros_node|rosbag2_recorder' \
|| echo "PASS: no stack processes remain"
备注
这是此前成功完成 0.50 米前进飞行 的控制器。对于 MID-360S 测试,保留相同的保守距离和速度。
平台:Jetson · ROS2 Humble · Livox Mid360 · FAST-LIO · PX4 · livox_offboard_forward
(c) 卓博泰科技 · Offboard Takeoff + Forward 测试流程
(c) 卓博泰科技 · Offboard Takeoff + Forward 测试流程