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

相关推荐
XR1234567883 小时前
企业全光网络架构选型技术白皮书:从物理层到运维层的全链路分析
运维·网络·架构
智慧物业老杨4 小时前
物业如何做好预算管理?落地架构逻辑
人工智能·架构
微学AI4 小时前
一根针指向所有方向:挂谷猜想对 LLM Agent 技能-记忆架构的启示
开发语言·人工智能·架构·挂谷猜想
147API6 小时前
把无人机演示改成可复测评估:Drone-Bench 的五段式拆法
无人机·claude
张忠琳6 小时前
【NPU】Ascend Docker Runtime v26.0.1 之二 runtime/process/process.go — 超深度逐行分析
云原生·容器·架构·kubernetes·npu·docker-runtime
联众合科技6 小时前
超融合如何助力数据中心现代化转型?从架构重构到落地避坑的完整指南
重构·架构
香菜TTT10 小时前
Kafka_深度解析_从架构原理到生产实践
分布式·架构·kafka·linq
陳陈陳10 小时前
🚀 前端流式输出革命:SSE + BFF 架构从零到一实战指南
vue.js·架构·node.js
张永伟营销11 小时前
从SEO到GEO:技术人视角下的生成式引擎优化架构与实践
搜索引擎·ai·架构
小柒儿33611 小时前
AI原生架构:企业IT从“业务数字化”到“AI原生重构”
重构·架构·ai-native