You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Gazebo+SITL环境下无GPS稳定模式平稳起飞四旋翼无人机?

无GPS环境下无人机平稳起飞与控制解决方案

问题根源分析

你的代码在稳定模式下仅通过rc_channels_override发送油门指令,但忽略了几个核心问题:

  • 稳定模式(STABILIZE)依赖飞控维持姿态平衡,但默认PID参数未必适配室内SITL环境,微小扰动就可能引发翻滚
  • 每次调用set_rc_channel_pwm时,未指定的通道被设为65535(即放弃控制),无遥控器输入时飞控无法维持姿态中立
  • 无GPS时未启用光流/视觉定位、测距传感器等室内必备的辅助感知模块,飞控缺乏高度与位置参考

具体修复步骤

1. 切换适配室内无GPS的飞行模式

稳定模式需要手动干预姿态,无GPS环境下优先选用ALT_HOLD(定高模式),它能自动维持高度与基础姿态,大幅降低控制难度:

mod_change(the_connection , 'ALT_HOLD')  # 替换原STABILIZE模式

2. 修正RC通道覆盖逻辑

原函数仅修改单个通道,其他通道丢空导致姿态失控。需保持横滚、俯仰、偏航通道在中立位(1500),仅调整油门:

def set_rc_channel_pwm(master, channel_values):
    # channel_values为8元素列表,对应8个RC通道,未调整项设为1500(中立位)
    master.mav.rc_channels_override_send(
        master.target_system,
        master.target_component,
        *channel_values
    )

# 起飞姿态模板:中立姿态+初始油门
takeoff_channels = [1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500]

3. 启用室内SITL感知模块

在Gazebo与飞控参数中配置必备传感器,让飞控在无GPS下获取位置/高度数据:

  • 飞控参数设置:
    • EK2_GPS_TYPE = 0(禁用GPS)
    • EK2_RNG_USE_HGT = 1(启用测距仪作为高度参考)
    • FLOW_ENABLE = 1(启用光流相机)
  • 确保Gazebo模型加载了光流相机、激光测距仪插件

4. 执行姿态轴自动调参

注释掉的autotune_axis()是关键——无GPS环境下必须完成横滚、俯仰、偏航轴的自动调参,让飞控适配室内SITL的动力学特性:

# 解锁后启动自动调参
arming_motors()
time.sleep(2)
autotune_axis()

# 等待调参完成(监听MAVLink状态消息)
while True:
    msg = the_connection.recv_match(type='AUTOTUNE_STATUS', blocking=True)
    if msg.progress == 100:
        print("自动调参完成")
        break
    time.sleep(1)

5. 优化起飞油门控制

避免突然给油,需缓慢提升油门至起飞阈值(通常1550左右,依机型调整),并持续发送姿态指令:

bas_time = time.time()
current_throttle = 1500  # 初始中立油门
while True:
    code_time = time.time()
    if code_time - bas_time <= 5.0:
        # 5秒内缓慢提升油门到起飞阈值
        current_throttle = min(1550, current_throttle + 5)
        takeoff_channels[2] = current_throttle  # 油门对应第3个通道(索引2)
        set_rc_channel_pwm(the_connection, takeoff_channels)
    else:
        # 维持定高油门
        takeoff_channels[2] = 1500
        set_rc_channel_pwm(the_connection, takeoff_channels)
    time.sleep(0.02)  # 以50Hz频率发送指令,匹配飞控更新节奏

关键注意事项

  • RC指令发送频率需≥20Hz,否则飞控会判定遥控器信号丢失,触发失控保护
  • 若使用LOITER定点模式,需确保光流相机安装位置、焦距参数配置正确
  • 可通过MAVLink日志查看姿态、高度数据,进一步微调PID参数

内容的提问来源于stack exchange,提问作者Arif Erol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 22:12:20