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

相关推荐
Seoyoneh1 小时前
Agentic Workflow编排架构:云客服从“被动响应”迈向“主动执行”的技术实现
java·开发语言·架构
AI_Auto3 小时前
架构视角看数字化转型|核心架构:大共享平台+小应用,从按需走向适变
大数据·人工智能·架构·制造
科芯创展4 小时前
XU9238 外置NMOS架构宽压Boost升压恒压驱动器方案设计与工程落地指南
架构
Dawson Zhu4 小时前
AI 辅助调试陷入「反复修改」循环?用证据驱动的四步法破局
人工智能·语言模型·架构·aigc·agi
她的男孩6 小时前
多租户和数据权限怎么共存?扒完拦截器注册链路,我找到 4 个隐蔽的坑
java·后端·架构
这个DBA有点耶6 小时前
非关系型数据库到底有几种?键值、文档、列族、图,一篇讲透
mysql·架构·nosql
老王的笔记v7 小时前
46期 Windows超级管理器 垃圾清理 预装卸载与系统优化工具箱
windows·系统架构
昇腾知识体系7 小时前
昇腾 A5 ISA 指令集:文档入口与 mem_bar 等关键指令
人工智能·华为·架构·知识图谱
诚心呈意共享外卖配送系统7 小时前
校园配送系统架构设计:最后100米智能调度与两段接力实践
架构·系统架构·创业创新
爱读源码的大都督7 小时前
DeepSeek面试官问:多租户 RAG 系统怎样实现细粒度权限控制?
后端·面试·架构