BetaFlight代码解析(20)—屏幕显示(OSD)

目的和范围

屏幕显示 (OSD) 系统可在视频画面上实时叠加飞行信息,并提供飞行后统计信息。本文档涵盖 OSD 架构、元件系统、配置管理和警告机制。

系统架构

OSD系统由多个相互连接的子系统组成,这些子系统协同工作,提供全面的飞行信息显示:

核心组件

OSD主控制器

主 OSD 控制器负责初始化、更新周期以及子系统之间的协调:

元素系统

各个 OSD 元素通过集中式渲染系统进行管理,该系统同时支持前景层和背景层:

元素类别 示例 功能模式
飞行数据 OSD_ALTITUDEOSD_GPS_SPEED osdElementAltitude()
电池信息 OSD_MAIN_BATT_VOLTAGEOSD_CURRENT_DRAW osdElementCurrentDraw()
态度 OSD_ARTIFICIAL_HORIZONOSD_PITCH_ANGLE osdElementArtificialHorizon()
系统信息 OSD_FLYMODEOSD_WARNINGS osdElementFlymode()
导航 OSD_GPS_LATOSD_COMPASS_BAR osdElementCompassBar()

元素渲染管线

元素渲染系统采用状态机方法来处理复杂的多帧元素:

配置管理

OSD配置通过参数组进行管理,并支持多个配置文件:

元素类型和变体

OSD系统支持元素变体,允许以不同的显示格式显示相同的数据:

元素 1型 类型 2 3型 4型
OSD_ALTITUDE 保留一位小数 没有小数 美国标准手语 + 1 位小数 美国手语 + 无小数
OSD_GPS_LAT/LON 7 位十进制数 4 位十进制数 度/分/秒 Plus 代码
OSD_MAIN_BATT_USAGE 剩余栏 二手酒吧 其余的 % 用过的 %
OSD_VTX_CHANNEL 完整信息 仅供电 - -

预警系统

该预警系统会根据飞行状况提供优先级不同的警报信息:

统计系统

飞行后统计数据在飞行过程中收集,并在解除武装后显示:

显示端口抽象

OSD系统使用显示端口抽象层来支持不同的输出设备:

显示设备 执行 特征
MAX7456 硬件 OSD 芯片 SD分辨率,基于字符
MSP MSP协议 支持高清,画布尺寸灵活
汽车 自动检测 备用机制

定时器系统

OSD定时器系统支持多种定时器源和精度级别:

与飞行控制系统集成

OSD系统与飞行控制流程深度集成,可提供实时数据显示:

相关推荐
小O的算法实验室1 天前
2026年ASOC,基于深度强化学习的无人机三维复杂环境分层自适应导航规划方法,深度解析+性能实测
算法·无人机·论文复现·智能算法·智能算法改进
行乾1 天前
鸿蒙端 IMSDK 架构探索
架构·harmonyos
石小石Orz1 天前
油猴脚本实现生产环境加载本地qiankun子应用
前端·架构
海砥装备HardAus1 天前
无人机野外复杂环境电磁干扰分析与整机抗扰设计
无人机·飞控·飞控调试
若风的雨1 天前
【deepseek】RISC-V 的CSR寄存器详解
架构
ZHENGZJM1 天前
架构总览:Monorepo 结构与容器化部署
架构·go·react·全栈开发
搜佛说1 天前
比SQLite更快,比InfluxDB更轻:sfsDb的降维打击
jvm·数据库·物联网·架构·sqlite·边缘计算·iot
提子拌饭1331 天前
昼夜节律下的肝脏代谢清除率演算仪:基于鸿蒙Flutter的双路流场与酶解粒子对照架构
flutter·华为·架构·harmonyos·鸿蒙
数据与后端架构提升之路1 天前
系统架构设计师常见高频考点总结之案例题
系统架构
SuperEugene1 天前
前端通用基础组件设计:按钮/输入框/弹窗,统一设计标准|组件化设计基础篇
前端·javascript·vue.js·架构