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

相关推荐
山上春34 分钟前
Odoo 分布式单体与微服务模式深度对比研究报告
分布式·微服务·架构
Henray20241 小时前
2025年11月份下半年系统架构师真题(完整版)
系统架构
wh_xia_jun2 小时前
CameraControl 技术架构说明
数码相机·架构
helloworddm2 小时前
防止应用多开-WPF
服务器·架构·c#
最后一个bug2 小时前
当linux触发panic后进行自定义收尾回调处理
linux·服务器·系统架构·bug
qq7422349844 小时前
大模型技术全景与核心概念解析:从基础原理到AI智能体架构
人工智能·python·架构
Godspeed Zhao4 小时前
现代智能车机系统2——EEA架构(1)
架构
catchadmin5 小时前
CatchAdmin 2025 年终总结 模块化架构的进化之路
架构·php·开源软件
乾元5 小时前
Network-as-Code:把 HCIE / CCIE 实验脚本转为企业级 CI 工程化流程
运维·网络·人工智能·安全·web安全·ai·架构
Aaron15885 小时前
三种主流接收机架构(超外差、零中频、射频直采)对比及发展趋势浅析
c语言·人工智能·算法·fpga开发·架构·硬件架构·信号处理