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系统与飞行控制流程深度集成,可提供实时数据显示:

相关推荐
贵慜_Derek15 小时前
《从零实现 Agent 系统》连载 32|闭集 IE 与小模型:分类、意图与字段抽取
人工智能·架构·agent
江米小枣tonylua1 天前
译:设计生产级 RAG 架构
架构
怕浪猫1 天前
领域特定语言(Domain-Specific Language, DSL)
设计模式·程序员·架构
怕浪猫1 天前
哪些软件对 Chrome DevTools Protocol 频繁使用
人工智能·架构·前端框架
Jack202 天前
HarmonyOS APP事件驱动大揭秘
架构
Colin草率地做慢慢地改2 天前
关于QuickStore这个项目的重构(2)- 数据库建表文件
后端·面试·架构
candyTong2 天前
RTK 技术原理:一次典型会话里,80% 上下文是怎么省下来的
javascript·后端·架构
唐某人丶2 天前
从画架构图开始:架构分析与进阶指南
架构
只会cv的前端攻城狮3 天前
DSL 领域模型架构设计:消灭 CRUD 重复工作
前端·架构