atbetaflight icon indicating copy to clipboard operation
atbetaflight copied to clipboard

可否增加支持外挂模块用于自定义OSD显示的功能?

Open Easy4Racing opened this issue 1 year ago • 7 comments

Is your feature request related to a problem? Please describe

我做了一个OSD计时器外设模块,使用Atmel328P作为MCU控制OSD芯片(AT7456),串接在摄像头和飞控之间,用于在视频信号上叠加计时信息。目前只支持模拟视频,想改进以支持HD图传

Describe the solution you'd like

计时器计划通过串口向飞控发送数据,以便飞控在OSD上显示计时信息。这就需要bf固件新增一个额外的MSP命令,便于外设通过该命令显示自定义的osd信息

Describe alternatives you've considered

看到git上有个项目ESP32-INAV-Radar,通过esp和飞控串口通讯,打算用类似方法在BF上实现我想要的功能。 这是ESP32-INAV-Radar项目中,向飞控(inav固件)发送显示雷达信息的命令:msp.command2(MSP2_COMMON_SET_RADAR_POS , &radarPos, sizeof(radarPos), 0); MSP2_COMMON_SET_RADAR_POS是INAV特有的MSP命令ID

Easy4Racing avatar Apr 18 '23 08:04 Easy4Racing

没有看懂你想要干什么,请清晰描述你的需求,改动要求等

DusKing1 avatar Apr 19 '23 14:04 DusKing1

没有看懂你想要干什么,请清晰描述你的需求,改动要求等

已更新,请看看我是否表达的清楚,谢谢~~

Easy4Racing avatar Apr 19 '23 23:04 Easy4Racing

增加显示信息的目的,主要是为了在DVR上以OSD记录赛道每圈用时,分为:总时间 和上一圈时间。 当然这种记录方式主要是面向个人训练, 因为飞控、外设必然存在计时的误差,所以正规严肃的比赛是无法作为标准时间的。

飞控接到触发赛道开始信息(可以是红外/或者其他外设中断),飞控启动两个计时器的计时,并实施显示在OSD上 当再次触发开始信息,上一圈时间 清零, 总时间继续计时 当飞控触发N+1次起始时间后(可以实现设置比赛圈数N),总计时器和上一圈时间计时器均停止计时。

以上是否理解正确?

为什么不设计为计时器的输出直接显示在 OSD上? 初步考虑是飞控的实时性要求很高, 简单计时在飞控内实现所需资源比较少,如果高频的通过MSP 串口指令进行交互的话,有可能会干扰接收机等其他通过串口交互的外设通信,因此计时频率不应该超过10hz, 时间精度在秒级。 采用触发式计时的话,可以进一步简化外接外设的设计

还需要进一步讨论哪些信息? 需要确认实现理解是否正确,以及触发&交互的接口协议信息。

shanggl avatar Apr 23 '23 01:04 shanggl

Reference in

感谢回复,你的理解非常正确,我补充一些信息: 关于外设时间误差的问题,外设模块确实存在计时误差,但用作个人玩家训练使用还是比较有价值的,并且也可以通过时间同步来解决多外设一致性的问题;

考虑到飞控的复杂性以及我个人能力,没有选择将功能内置在飞控固件中,而是做个外挂设备,目前使用Arduino+红外触发;

外设发送MSP命令的频率非常低(比如单圈飞行时间10秒,也就是10秒才会交互,其他时间空闲或者以较低频率发送心跳,如5Hz心跳频率)。 交互频率不会影响外设的计时精度,因为OSD信息只是静态显示交互时刷新一次的计时信息(比如10秒),这条计时信息由外设生成的字符串。

Easy4Racing avatar Apr 23 '23 03:04 Easy4Racing

为什么不直接将单圈计时功能在飞控外部的计时器外设内实现?这样只需要每圈计时完成之后向飞控发送计时通告即可。

DusKing1 avatar Apr 23 '23 12:04 DusKing1

为什么不直接将单圈计时功能在飞控外部的计时器外设内实现?这样只需要每圈计时完成之后向飞控发送计时通告即可。

感谢回复。 是的,目前就是这么计划的。由外设负责计时,每圈完成后向飞控发送计时数据,由飞控显示在OSD。 所以需要与飞控通讯。我想到的是通过MSP命令,也可能有其他更好的方式。

期待您的回复。

Easy4Racing avatar Apr 23 '23 12:04 Easy4Racing

飞控只要显示外设提供的字符串,其他计时和统计等工作均由外设完成。

Easy4Racing avatar Apr 23 '23 12:04 Easy4Racing