Skip to content

基础概念

本文档介绍 DronePilotWeb 中的核心概念,帮助您更好地理解和使用本系统。

坐标系统

三维空间坐标

DronePilotWeb 使用右手坐标系:

  • X 轴:水平方向,向右为正
  • Y 轴:垂直方向,向上为正
  • Z 轴:前后方向,向前为正

角度系统

使用弧度制表示角度:

  • 0:向右
  • π/2:向前
  • π:向左
  • -π/2:向后

运动控制

移动解锁

  1. 悬停模式

    • hover: true
    • 保持水平位置不变
    • 可调整高度
  2. 运动模式

    • hover: false
    • 按指定角度和速度移动
    • 同时可调整高度

速度控制

  • 单位:米/秒
  • 建议范围:0.1 ~ 0.5
  • 过高速度可能导致控制不稳

高度控制

  • 单位:米
  • 最小高度:0.05

图像处理

摄像头系统

  1. 底部摄像头

    • 分辨率:240×240
    • 视场角:60°
    • 朝向:垂直向下
    • 实时更新
  2. 图像格式

    • OpenCV.js Mat 对象
    • RGB 颜色空间
    • 可转换为其他颜色空间

颜色空间

  1. RGB

    • 默认颜色空间
    • 适合显示
    • 不适合颜色检测
  2. HSV

    • 适合颜色检测
    • H:色相
    • S:饱和度
    • V:明度

图像处理流程

  1. 获取图像

    • 通过 frame 参数
    • OpenCV.js Mat 格式
  2. 处理图像

    • 颜色空间转换
    • 阈值分割
    • 形态学操作
    • 轮廓检测
  3. 返回结果

    • 处理后的图像
    • 运动控制命令

场景管理

地面系统

  1. 尺寸设置

    • 可调整宽度和深度
    • 单位:米
    • 实时更新
  2. 纹理管理

    • 支持自定义纹理
    • 提供预设纹理
    • 自动适应尺寸

场景存储

  1. 保存内容

    • 场景名称
    • 地面尺寸
    • 地面纹理信息
  2. 加载机制

    • 自动加载纹理
    • 调整地面尺寸
    • 重置无人机位置

代码执行

执行环境

  1. 全局变量

    • 使用 window 对象
    • 持久存储状态
    • 每次刷新重置
  2. 局部变量

    • 每帧重新创建
    • 不保持状态
    • 及时释放资源

执行周期

  1. 初始化

    • 设置初始状态
    • 创建必要对象
    • 初始化变量
  2. 循环执行

    • 每帧调用
    • 处理图像
    • 返回控制命令
  3. 清理资源

    • 释放 Mat 对象
    • 清理临时变量
    • 避免内存泄漏

最佳实践

  1. 状态管理

    • 使用状态机模式
    • 合理使用全局变量
    • 注意状态转换
  2. 资源管理

    • 及时释放内存
    • 避免重复创建
    • 优化性能
  3. 错误处理

    • 添加异常捕获
    • 提供默认行为
    • 保持代码健壮

基于 MIT 许可发布