MSP OSD¶
ArduPilot 使用基于 MSP(MultiWii 串行协议)的协议支持多种类型的屏幕显示(OSD):
基于 MSP 遥测的 OSD,如 DJI FPV Goggles V1/V2、DJI Goggles RE、FatShark ByteFrost、FatShark SharkByte(fw 09042021 之前)、 MWOSD 等等
基于 DisplayPort 的 OSD,如 HDZero(以前称为 FatShark SharkByte (fw 09042021 及更高版本))、Walksnail、DJI 护目镜等。 什么 固件和 msdp-osd 模块以及 MWOSD 的 DisplayPort 模式/固件
仅基于遥测的 OSD 将根据使用串行端口协议 "32 "发送的标准 MSP 遥测传感器信息,用自己的引擎在屏幕上渲染 OSD 面板项目,因此 ArduPilot 无法控制项目的外观。
DJI 2/V1/V2 护目镜还有一个使用串行端口协议 "33 "发送的扩展协议,可在使用其扩展的自定义 OSD 功能时为每个 OSD 面板提供位置信息。这也允许显示任何 ArduPilot OSD 面板。
另一方面,DisplayPort 是一种 MSP 协议扩展,允许 ArduPilot 在外部 OSD 显示器上指定文本字符/图标及其绘制位置,就像在使用串行端口协议 "42 "的内部集成模拟 OSD 上一样。DisplayPort 也被称为 CANVAS MODE(不正确)。基本上,它是一个远程纯文本帧缓冲器,使用本地字体(本地渲染引擎,即 OSD 硬件)来渲染通过 MSP 发送的字符串。
基于遥测的 OSD¶
基于遥测的 OSD 将使用自己的引擎在屏幕上渲染 OSD 面板项目,因此 ArduPilot 无法控制项目的外观。基于遥测的 OSD 的另一个限制是,ArduPilot 无法随意添加新的面板项目,而是由供应商负责通过发布新固件来添加新功能。
如果车载集成模拟 OSD 存在,且用户希望同时使用两个 OSD,则也可将其激活。例如,在使用大疆护目镜/空气系统的载具上,当载具超过高清大疆护目镜的范围时,可使用内部 OSD 运行远距离模拟 VTX。这种配置可使用一个为大疆护目镜优化的 OSD 屏幕,另一个为集成 OSD 屏幕,用户可根据正在查看的视频系统在两者之间进行切换。
配置¶
示例假定将气动装置连接至飞行控制器的 SERIAL2。
OSD_TYPE 如果没有使用集成 OSD,则 = 3;如果有集成 OSD 且用户希望同时使用两个 OSD,则 = 1。
serial2_protocol = 32 (MSP)
SERIAL2_BAUD = 115
MSP_OPTIONS 如果空气设备通过 RX 和 TX 输入连接到 AutoPilot 串行端口 TX/RX,则将第 0 位设置为 0(不启用遥测模式)。如果独立的 OSD 设备仅通过单线从其 RX 输入连接到串行端口 TX,则设置位 0 = 1(EnableTelemetryMode)。这种模式称为 "推 "模式。
可与 MSP 遥测 OSD 一起使用的 OSD 面板¶
这些是基于遥测的 OSD 仅支持的 MSP OSD 元素(假设 OSD 本身具有显示这些遥测值的能力):
OSD 参数 |
说明 |
---|---|
OSDn_ALTITUDE |
家庭相对高度 |
OSDn_ARMING |
上膛状态,上膛时隐藏,否则显示撤膛 |
OSDn_ASPEED |
有关启用空速显示的更多信息,请参阅 OSDn_GSPEED。 |
OSDn_BAT_VOLT |
第一电池电压 |
OSDn_BATBAR |
根据申报容量和消耗的毫安时,以条形显示第一块电池的剩余百分比 |
OSDn_BATUSED |
第一块电池消耗的毫安时 |
OSDn_CELLVOLT |
第一块电池的平均电池电压,如果自动电池检测失败,请使用 MSP_OSD_NCELLS 进行覆盖 |
OSDn_CLK |
实时时钟(需要 GPX 修正) |
OSDn_CRSSHAIR |
不支持人工水平线,因此十字准线经常被隐藏起来 |
OSDn_CURRENT |
第一节电池电流 |
OSDn_ESCTEMP |
在 DJI V1/V2 护目镜上,这将报告最高的电调温度 |
OSDn_FLTMODE |
DJI 硬件不支持 ArduPilot 的飞行模式!此项目通常为空白,只有在故障安全模式下才显示 !FS!! |
OSDn_GPSLAT |
十进制格式的 GPS 纬度 |
OSDn_GPSLONG |
十进制格式的 GPS 经度 |
OSDn_GSPEED |
此项目显示地面速度,除非 |
OSDn_HEADING |
不支持 DJI V1/V2 护目镜 |
OSDn_HOMEDIR |
指向原点的旋转箭头 |
OSDn_HOMEDIST |
离家距离 |
OSDn_HORIZON |
不支持 DJI V1/V2 护目镜 |
OSDn_MESSAGE |
这将以滚动文本的形式显示状态文本信息。几秒钟后,状态文本信息将被隐藏,面板将显示当前的飞行模式。如果 |
OSDn_PITCH |
俯仰角 |
OSDn_POWER |
瞬时功率以电压 * 电流计算 |
OSDn_ROLL |
滚动角 |
OSDn_RSSI |
中配置的 Rssi RSSI_TYPE:RSSI 类型 |
OSDn_SATS |
在大疆 V1/V2 护目镜上,当没有基于遥测的 MSP OSDfix 时,它会报告有 14 个卫星,这是一个已知的大疆错误。 |
OSDn_SIDEBARS |
不支持 DJI V1/V2 护目镜 |
OSDn_VSPEED |
垂直速度 |
OSDn_WIND |
风速和风向渲染请参阅 OSDn_MESSAGE。 |
DJI 护目镜的默认 OSD 显示模式支持 MSP 遥测显示,但有以下说明:
ArduPilot 目前支持 V1 和 V2 大疆 FPV 护目镜提供的所有 OSD 面板项目,如上表所示。
目前不支持更改公制和英制以外的显示单位。
支持多个屏幕和这些屏幕的远程切换。
支持在专用屏幕上显示统计数据,详情见下文。
目前不支持 RSSI、电压等警告级别
大疆 V1 FPV 护目镜
大疆护目镜 RE
大疆创新 2/V1/V2 护目镜,未进行 WTFOS 改装¶
除了仅基于 MSP 遥测的原生 OSD 显示外,后期型号还增加了 "自定义 OSD "功能,允许显示和定位 ArduPilot 提供的任何或所有 OSD 信息面板、警告、单位等。
配置¶
要启用此功能,请设置以下参数(示例中使用 SERIAL 端口 2 作为连接到 DJI Air 设备的端口,同时使用 TX 和 RX 线路):
OSD_TYPE 如果没有使用集成 OSD,则 = 3,以便激活 OSD 代码。如果存在集成 OSD,且用户希望同时使用两个 OSD,则 OSD_TYPE = 1 将激活车载 OSD,并为 MSP OSD 功能提供屏幕。例如,在使用大疆护目镜/空气系统进行中距离飞行的载具上,当载具超过高清大疆护目镜的范围时,仍可使用内部 OSD 运行远距离 VTX。这种配置可以使用一个为大疆护目镜优化的 OSD 屏幕,另一个为集成 OSD 屏幕,用户可以根据正在查看的视频系统在两者之间进行切换。
serial2_protocol = 33 (DJI FPV)
SERIAL2_BAUD = 115
MSP_OPTIONS 位 0 = 0(不启用遥测模式)
MSP_OPTIONS 第 2 位 = 1(EnableBTFLFonts)将强制 ArduPilot 冒充 Betaflight 并使用 Betaflight 兼容字体索引,用于集成在远程 OSD 系统中的字体表。由于目镜没有与 ArduPilot 兼容的字体表,因此需要这样做。
OSD_OPTIONS 第 5 位 = 1(TranslateArrows)在使用 Betaflight 字体时使用修正方向箭头。
备注
设置上述协议类型时,串行端口波特率默认值会自动改为 115.2Kbaud。但是,如果用户之前或之后更改了波特率,则不会使用该默认值。大多数视频目镜系统都需要 115.2Kbaud 波特率。
备注
必须启用 DJI 自定义 OSD:在目镜的 SETTINGS->DISPLAY->CUSTOM OSD 菜单中。
DisplayPort OSD¶
DisplayPort 是一种 MSP 协议扩展,允许(飞行)控制器在兼容的外部 OSD 上远程绘制文本。DisplayPort 是一种 MSP 协议扩展,允许在兼容的外部 OSD 上远程绘制文本字符/图标,并允许高清(HD)和标清(SD)显示。
经过 WTF-OSD 修改的 HDZero、Walksnail 和 DJI 都可以运行 DisplayPort。
特点¶
DisplayPort OSD 可以呈现 ArduPilot 板载 OSD 支持的所有面板项目。此外,还支持多屏幕切换、多单元和统计等功能。请参考 机载 OSD 文档 了解更多信息。基于 DisplayPort 的 OSD 包括
HDZero
步行钉
大疆护目镜使用 什么 固件和 msdp-osd 模块和
MWOSD 的 DisplayPort 模式/固件
用于访问 HDZero 的 VTX 菜单和摄像机菜单或 0mW 模式的棒状命令也同样有效。
使用 ArduPilot 自定义字体的 HDZero
配置¶
要启用 MSP DisplayPort OSD,请设置以下参数(使用 SERIAL 端口 n 作为端口,通过 TX 和 RX 线连接到 Air 设备):
OSD_TYPE = 5(msp_displayport)
SERIALn_PROTOCOL = 42(DisplayPort)
SERIALn_BAUD = 115
MSP_OPTIONS 设置第 0 位 = 0(不要启用遥测模式)
参见 显示分辨率 有关分辨率设置,请参阅下面的章节。
备注
设置上述协议类型时,串行端口波特率默认值会自动改为 115.2Kbaud。但是,如果用户之前或之后更改了波特率,则不会使用该默认值。大多数视频目镜系统都需要 115.2Kbaud 波特率。
带有 WTF-OSD 固件的大疆创新目镜¶
根据现有的固件版本,您可以通过第三方 "root "和操作系统替换来修改大疆护目镜的固件,从而允许使用 MSP DisplayPort 协议,并在面板项目、屏幕和位置方面提供与 ArduPilot 内部 OSD 相同的功能。了解更多有关使用 什么 固件和 msdp-osd 模块.
此外,您还可以使用标清(SD)字体或高清(HD)字体,以及字体的颜色。使用步骤如下
使用 WTF-OSD 基于网络的配置器 通过护目镜和气动装置上的配置按钮,您可以
根
护目镜和气动装置安装
WTFOS
使用 "软件包管理器 "安装
msp-osd
模块按照 msp-osd readme 的指示将字体软件包安装到目镜 SD 卡的根目录中
配置:
OSD_TYPE = 5(msp_displayport)
SERIALn_PROTOCOL = 42(DisplayPort)
SERIALn_BAUD = 115
MSP_OPTIONS 设置第 0 位 = 0(不要启用遥测模式)
参见 显示分辨率 有关分辨率设置,请参阅下面的章节。
上提供了从 ArduPilot 标准字体集转换而来的字体集。 msp-osd
模块网站,但可提供其他带彩色图标的 DJI 风格标清/高清套装 这里
备注
如果使用的是版本在"...... "之后的目镜,则需要对上述字体集进行重命名,并将其放置在目镜 SD 卡的相应子目录中。 mspd-osd
版本 0.6.7。无论您使用的是哪个版本的 msp-osd
.
OSD 面板项目配置¶
每个 OSD 面板项目使用一组三个变量进行设置:
OSDn_<ITEM>_EN
- 设置为 1 时,激活屏幕 "n "上的相应面板项目。OSDn_<ITEM>_X
和OSDn_<ITEM>_Y
设置项目的水平和垂直位置,从X = 0
和Y = 0
屏幕左上角。
备注
定位参数不用于只使用遥测值创建显示的 MSP 遥测 OSD。
备注
ArduPilot 会计算一个无传感器空速估计值,在没有传感器或传感器失效的情况下使用。ARSPD_TYPE 必须设置为零,以便在没有传感器的情况下将此值显示为空速项。
显示分辨率¶
使用 DisplayPort 时,可以选择显示标清或高清字体。 OSDx_TXT_RES
为启用的每个 OSD 屏幕设置。0 = 标清(30x16),1 = 高清(50x18),3 = 高清(60x22)。
对于 HDZero,应设置 OSDx_TXT_RES
为每个启用的 OSD 屏幕设置为 0 或 1。如果设置为 2,显示的文本将出现乱码。
标清字体的位置和普通字体一样设置在 30x16 X/Y 位置网格上,高清字体则使用 (1) 50x18 或 (2) 60x22 网格。50x18 网格在网格开始前在屏幕顶部/底部/左侧/右侧留有空白。
屏幕和屏幕切换¶
对于多屏幕布局,每个屏幕的 "OSD "参数标签后面都有一个数字,从 "1 "开始。例如 OSDn_<ITEM>_x
是与屏幕 1 的 "ITEM "面板相关的参数 "x"。
备注
仅在 MSP 遥测 OSD 上不能进行多屏幕布局切换,除非 OSD 本身提供这种功能。
设置
OSDn_<ITEM>_EN
=1 启用屏幕 "n "显示该项。这样就可以将单个项目设置为在一个屏幕上激活,而在另一个屏幕上关闭。最多可选择 4 个屏幕,并可分别启用。设置参数
OSDn_CHAN_MIN
和OSDn_CHAN_MAX
来调整 RC 通道 pwm 限制,以便切换到相应的屏幕。确保范围不重叠。
有不同的开关方式可供选择,以满足各个遥控系统开关布局的要求。这些选项可通过参数进行设置: OSD_SW_METHOD.选项有
0 = 如果设置的遥控通道的 (OSD_CHAN) 值发生变化
1 = 根据为每个屏幕设置的 pwm 限制直接选择屏幕。必须更改 RC 通道值才能识别新的 pwm 值。
2 = 在设定的 RC 通道从低到高转换时切换屏幕。通道值保持高电平时,每秒钟切换到下一个屏幕。
基于遥测的 OSD 有一个局限性,那就是 ArduPilot 无法随意添加新的面板项目。
在专用屏幕上显示统计数据¶
在专用屏幕上显示统计数据需要至少启用一个额外的屏幕,方法是设置相应的 OSDn_ENABLE
默认情况下,ArduPilot 只有一个屏幕处于活动状态,因此在典型设置中,可以将 (OSD2_ENABLE) = 1,然后通过设置 ( ) 在屏幕 2 上启用 OSD 统计面板。OSD2_STATS_EN) = 1.
当 OSD 切换到该界面时,它将检查"...... "的值。 OSD2_STATS_EN 参数,启用后将覆盖以下 OSD 项目的默认行为:
OSDn_MESSAGE 将显示 STATS,然后是飞行时间
OSDn_ALTITUDE 将显示最大高度
OSDn_BAT_VOLT 将显示最低电压
OSDn_CURRENT 将显示最大电流。
OSDn_GSPEED 将显示最大地面速度(或空速,如果
OSDn_ASPEED_EN
设置为 1)OSDn_HOMEDIST 将每 2 秒交替显示最大原点距离和总行驶距离
OSDn_RSSI 将显示 min rssi
使用 SITL 测试 OSD¶
可以在没有(飞行)控制器或视频硬件的情况下使用 环路软件(SITL)模拟器 设置。按照 SITL 说明设置模拟环境。使用 --osdmsp
选项将 OSD 代码内置到模拟器中。例如,模拟飞机:
模拟载具.py -v ArduPlane --游戏机 --osdmsp
使用位于 libraries/AP_MSP/Tools/osdtest.parm 中的一组典型 OSD 面板参数,将在单独窗口中与其他模拟窗口一起打开 DJI 风格的 MSP OSD 图形模拟。然后就可以使用 MSP OSD 仿真程序,通过参数对 OSD 元素进行自定义,使 OSD 可视化。
备注
您也可以使用这些参数对 MSP OSD 面板和位置进行初始设置,以便与护目镜一起使用,但仍需要为特定 OSD 系统正确配置串行端口和其他参数。
备注
仿真支持多屏幕和统计,但不支持显示端口
备注
仿真不支持公制以外的单位
通过更改 OSD 面板项目的参数,可以在该模拟器中看到其位置的实时更新。
使用Mission Planner地面站配置布局¶
Mission Planner地面站(MP)的 "配置"(CONFIG)菜单中有一个选项卡,用于配置许多(飞行)控制器集成的机载 OSD,以及设置 Displayport OSD 的布局。同样的配置选项卡也可用于配置 OSD 面板。
备注
Mission Planner地面站的 OSD 设置屏幕现在支持高清 OSD 配置。要启用此功能,请在要更改的 OSD 屏幕右上方的 "编辑器选项 "中勾选 "高清布局"。
当 MSP OSD 仿真窗口处于活动状态时,您可以通过将 Mission Planner 连接到 SITL 来更改 MSP OSD 显示配置。这样,您就可以使用 SITL 调整 OSD 配置,而不必担心 VTX 过热。完成后,您就可以将确定的 OSD 参数移动到载具上。
使用 MAVProxy 中的这条命令,可以将运行在同一台计算机或联网计算机上的 Mission Planner 与 MAVProxy 连接起来:
产量 增加 <;ip 地址 的 箱 跑步 使命 规划师>;:14550
备注
如果 MP 在同一台电脑上运行,IP 地址应为 127.0.0.1(本地主机地址)
有关将Mission Planner地面站与 SITL 结合使用的更多信息,请参阅 带有 SITL 文档的机载 OSD