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_ASPEED_EN = 1 时,如果有空速传感器,则显示真实空速,否则显示估计空速。屏幕上的位置由 OSDn_GSPEED_XOSDn_GSPEED_Y 无论 OSDn_ASPEED_EN

OSDn_HEADING

不支持 DJI V1/V2 护目镜

OSDn_HOMEDIR

指向原点的旋转箭头

OSDn_HOMEDIST

离家距离

OSDn_HORIZON

不支持 DJI V1/V2 护目镜

OSDn_MESSAGE

这将以滚动文本的形式显示状态文本信息。几秒钟后,状态文本信息将被隐藏,面板将显示当前的飞行模式。如果 OSDn_WIND_EN 设置为 1 时,该项还会在当前飞行模式旁边以旋转箭头和速度显示风力信息。

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 护目镜

../_images/msp_dji_fpv_goggles.jpeg

大疆护目镜 RE

../_images/msp_dji_goggles_re.jpeg

大疆创新 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

../_images/msp_osd_displayport.jpg

配置

要启用 MSP DisplayPort OSD,请设置以下参数(使用 SERIAL 端口 n 作为端口,通过 TX 和 RX 线连接到 Air 设备):

备注

设置上述协议类型时,串行端口波特率默认值会自动改为 115.2Kbaud。但是,如果用户之前或之后更改了波特率,则不会使用该默认值。大多数视频目镜系统都需要 115.2Kbaud 波特率。

带有 WTF-OSD 固件的大疆创新目镜

根据现有的固件版本,您可以通过第三方 "root "和操作系统替换来修改大疆护目镜的固件,从而允许使用 MSP DisplayPort 协议,并在面板项目、屏幕和位置方面提供与 ArduPilot 内部 OSD 相同的功能。了解更多有关使用 什么 固件和 msdp-osd 模块.

此外,您还可以使用标清(SD)字体或高清(HD)字体,以及字体的颜色。使用步骤如下

  1. 护目镜和气动装置

  2. 安装 WTFOS

  3. 使用 "软件包管理器 "安装 msp-osd 模块

  4. 按照 msp-osd readme 的指示将字体软件包安装到目镜 SD 卡的根目录中

  5. 配置:

上提供了从 ArduPilot 标准字体集转换而来的字体集。 msp-osd 模块网站,但可提供其他带彩色图标的 DJI 风格标清/高清套装 这里

备注

如果使用的是版本在"...... "之后的目镜,则需要对上述字体集进行重命名,并将其放置在目镜 SD 卡的相应子目录中。 mspd-osd 版本 0.6.7。无论您使用的是哪个版本的 msp-osd.

OSD 面板项目配置

每个 OSD 面板项目使用一组三个变量进行设置:

  • OSDn_<ITEM>_EN - 设置为 1 时,激活屏幕 "n "上的相应面板项目。

  • OSDn_<ITEM>_XOSDn_<ITEM>_Y 设置项目的水平和垂直位置,从 X = 0Y = 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_MINOSDn_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 系统正确配置串行端口和其他参数。

备注

仿真支持多屏幕和统计,但不支持显示端口

备注

仿真不支持公制以外的单位

../_images/msp_osd_python.png ../_images/msp_osd_python_stats.png

通过更改 OSD 面板项目的参数,可以在该模拟器中看到其位置的实时更新。

使用Mission Planner地面站配置布局

Mission Planner地面站(MP)的 "配置"(CONFIG)菜单中有一个选项卡,用于配置许多(飞行)控制器集成的机载 OSD,以及设置 Displayport OSD 的布局。同样的配置选项卡也可用于配置 OSD 面板。

备注

Mission Planner地面站的 OSD 设置屏幕现在支持高清 OSD 配置。要启用此功能,请在要更改的 OSD 屏幕右上方的 "编辑器选项 "中勾选 "高清布局"。

./_images/MissionPlanner_OSD_HD.gif

当 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

视频