一键起飞条件分析

一键起飞条件分析

根据代码分析,一键起飞功能涉及前端检查后端校验用户确认三个层面的条件约束:


一、前端条件检查

1. 电量限制

文件droneCommon.ts(file:///d:/java/Dji/dji-cloud-main/wvp-ui/src/views/auth/system/air/components/droneCommon.ts#L45-49)

typescript 复制代码
export const TAKEOFF_MIN_BATTERY_PERCENT = 30

export function isTakeoffBlockedByBattery (osd: any): boolean {
const battery = osd?.battery?.capacityPercent
return Number(battery) <= TAKEOFF_MIN_BATTERY_PERCENT
}

条件 :电池电量 ≤ 30% 时禁止起飞


2. 信号质量检查

文件droneCommon.ts(file:///d:/java/Dji/dji-cloud-main/wvp-ui/src/views/auth/system/air/components/droneCommon.ts#L52-71)

检查项 阈值 处理方式
电量警告 30% < 电量 < 60% 警告提示
搜星质量 RTK/GPS 数量 < 10 警告提示

3. 多机高度冲突检测

文件droneCommon.ts(file:///d:/java/Dji/dji-cloud-main/wvp-ui/src/views/auth/system/air/components/droneCommon.ts#L80-100)

条件 :多架次无人机之间的安全起飞高度返航高度 需间隔 10米,否则冲突检测失败。


二、后端核心校验

1. 起飞条件校验(核心)

文件ControlServiceImpl.java(file:///d:/java/Dji/dji-cloud-main/dji-cloud/wvp-server/src/main/java/com/gbcom/wvp/dji/control/service/impl/ControlServiceImpl.java#L162-173)

java 复制代码
private void checkTakeoffCondition(String dockSn) {
Optional<DeviceDTO> dockOpt = deviceRedisService.getDeviceOnline(dockSn);

// 条件1:设备必须在线 且 状态必须是 IDLE
if (!dockOpt.isPresent() || DockModeCodeEnum.IDLE != deviceService.getDockMode(dockSn)) {
    throw new RuntimeException("The current state does not support takeoff.");
}

// 条件2:必须获取飞行控制权
HttpResultResponse result = seizeAuthority(dockSn, DroneAuthorityEnum.FLIGHT, null);
if (HttpResultResponse.CODE_SUCCESS != result.getCode()) {
    throw new IllegalArgumentException(result.getMessage());
}
}

后端起飞条件

条件 说明 失败时异常信息
设备在线 无人机/基站必须处于在线状态 "The current state does not support takeoff."
设备空闲 基站状态必须为 IDLE "The current state does not support takeoff."
飞行权限 平台必须获取飞行控制权 权限获取失败信息

2. 飞行配置限高检查

文件ControlServiceImpl.java(file:///d:/java/Dji/dji-cloud-main/dji-cloud/wvp-server/src/main/java/com/gbcom/wvp/dji/control/service/impl/ControlServiceImpl.java#L189-238)

配置项 检查规则 失败时异常信息
安全起飞高度 ≤ 系统限高配置 "安全起飞点高度超过限高"
返航高度 ≤ 系统限高配置 "返航高度超过限高"
目标高度 ≤ 系统限高配置(默认20米) "目标高度超过限高"

三、用户确认(UI层)

起飞前检查弹窗

文件takeoff-check-modal.vue(file:///d:/java/Dji/dji-cloud-main/wvp-ui/src/views/auth/system/air/components/takeoff-check-modal.vue#L1-152)

必须确认的信息

项目 说明
安全起飞高度(ALT) 默认为50米
返航高度(ALT) 默认为100米
目标点高度 可选显示
失联动作 非M300/M350机型显示

强制要求 :必须勾选 "已确认周边环境安全" 复选框才能点击"立即执行"。


完整起飞条件流程图

复制代码
用户点击"一键起飞"
        ↓
┌─────────────────────────────────────┐
│  前端检查层                          │
│  ├─ 电量 ≤ 30% ? → 禁止起飞          │
│  ├─ 搜星质量 < 10 ? → 警告           │
│  └─ 多机高度冲突检测 → 冲突则提示     │
└─────────────────────────────────────┘
        ↓ 通过
┌─────────────────────────────────────┐
│  UI确认层                            │
│  ├─ 显示起飞配置信息                  │
│  └─ 必须勾选"周边环境安全"确认        │
└─────────────────────────────────────┘
        ↓ 确认
┌─────────────────────────────────────┐
│  后端校验层                          │
│  ├─ 设备在线 + 状态IDLE ?            │
│  ├─ 飞行权限获取成功 ?                │
│  └─ 配置高度 ≤ 系统限高 ?             │
└─────────────────────────────────────┘
        ↓ 通过
┌─────────────────────────────────────┐
│  发送起飞命令到无人机                  │
└─────────────────────────────────────┘

总结

一键起飞需同时满足以下全部条件

层级 条件 严格程度
前端硬限制 电池电量 > 30% 必须满足
前端警告 搜星质量 ≥ 10 建议满足
前端冲突检测 高度间隔 ≥ 10米(多机场景) 必须满足
用户确认 勾选环境安全确认 必须满足
后端状态校验 设备在线 + 状态IDLE 必须满足
后端权限校验 获取飞行控制权 必须满足
后端配置校验 各高度值 ≤ 系统限高 必须满足
相关推荐
音视频牛哥1 小时前
SmartMediaKit 推拉流MP4录像实践:实时传输与本地留存一体化
音视频·rtmp推流录像·rtmp播放端录像·rtsp播放端录像·rtsp流录制·rtmp流录制·rtsp服务器录像
石臻臻的杂货铺2 小时前
做 AI 视频,先让 Blender 把镜头演一遍
人工智能·音视频·blender
ALINX技术博客2 小时前
【黑金云课堂】FPGA技术教程Vitis开发:SD卡WAV文件读取音频播放实验
fpga开发·音视频
沐禾安信19 小时前
AVI 视频打不开?2026 四款转 MP4 工具封神
音视频·电脑录屏
兵叔物联20 小时前
基于FFmpeg的短视频自动剪辑工具
ffmpeg·音视频
AORUO奥偌21 小时前
从“拼凑”到“集成”:音视频系统如何重塑弱电智能化建设逻辑
音视频·公共广播系统·音视频系统·多媒体会议与ip广播系统·多媒体会议系统
禹亮科技21 小时前
大型国企会议室音视频集成实战:3间120㎡空间Poly G7500+LED大屏+讯飞多语言会议系统落地方案
音视频·视频会议系统集成·上海禹亮科技·讯飞听见多语言会议系统·poly g7500
音视频牛哥1 天前
SmartMediaKit macOS版RTSP/RTMP低延迟播放器:技术架构、核心能力与应用实践
音视频·低延迟rtsp播放器·macos直播播放器·macos rtsp播放器·macos rtmp播放器·rtsp播放器mac版·rtmp播放器mac版
潜创微科技1 天前
沁恒CH9339:USB3.0超高速对拷,两台电脑一根线共享一切
音视频
Cxiaomu1 天前
从 TRTC Demo 到独立音视频服务:React + TRTC Web SDK 服务化实践
前端·react.js·音视频