OpenIPC开源FPV之msposd配置
1. 源由
目前,OpenIPC地面站上有不少硬件和软件:
- 【1】Hi3536板镜像直接部署的vdec
- 【2】Android手机上的FPVue
- 【3】SBC单板上,如:Radxa Zero 3W/E
- 【4】摄像头集成OSD的msposd
实际使用下来,【1】【2】显示的信息有限,且存在一些问题;【3】没有部署OSD显示的软件;【4】尚未使用。
因此,本章节就是针对【4】做一个讲解。
2. 状态
应用实例:
- 【1】OpenIPC The Dartford Crossing (Queen Elizabeth II Bridge)
- 【2】OpenIPC native INAV OSD - Maiden Flight
源代码:
3. 步骤
3.1 Step 1: 下载/更新OpenIPC摄像头固件
详见:OpenIPC开源FPV之固件sysupgrade升级
注:您手头已经有了一个OpenIPC摄像头,而且已经烧录了OpenIPC固件。
3.2 Step 2: 下载最新的msposd
可执行文件
$ curl -L -o /usr/bin/msposd https://raw.githubusercontent.com/openipc/msposd/main/release/star6e/msposd
$ chmod 755 /usr/bin/msposd
*注:请选择对应摄像头版本:SigmaStar based SoC (ssc338q, sc30kq) *
3.3 Step 3: 下载各参数icon
图标
图标文件版本/etc/majestic.yaml
- 720p: font_hd.png
- 1080p: font.png
图标风格(betaflight):
$ mkdir /usr/share/fonts
$ curl -k -L -o /usr/share/fonts/font.png https://raw.githubusercontent.com/openipc/msposd/main/fonts/betaflight/font.png
$ curl -k -L -o /usr/share/fonts/font_hd.png https://raw.githubusercontent.com/openipc/msposd/main/fonts/betaflight/font_hd.png
注:飞betaflight/inav的可以用各自对应的图标,而飞Ardupilot的,请使用betaflight图标。
3.4 Step 4: 修改/etc/init.d/S98datalink
配置
在echo "Starting wifibroadcast service..."
下面增加以下两行(启动msposd):
killall -q msposd
msposd --master /dev/ttyS2 --baudrate 115200 -c 7 -c 9 --out 127.0.0.1:14555 --matrix 11 --osd -r 20 --a
hi 0 --wait 5 --persist 50 -v &
$ msposd --help
Ver: 20241027_153531
Usage: msposd [OPTIONS]
Where:
-m --master Serial port to receive MSP (/dev/ttyAMA0 by default)
-b --baudrate Serial port baudrate (115200 by default)
-o --output UDP endpoint to forward aggregated MSP messages (127.0.0.1:14600)
-c --channels RC Channel to listen for commands (0 by default) and exec channels.sh. This command can be repeated. Channel values are 1-based.
-w --wait Delay after each command received(2000ms default)
-r --fps Max MSP Display refresh rate(5..50)
-p --persist How long a channel value must persist to generate a command - for multiposition switches (0ms default)
-t --temp Read SoC temperature
-d --wfb Monitors wfb.log file and reports errors via HUD messages
-s --osd Parse MSP and draw OSD over the video
-a --ahi Draw graphic AHI, mode [0-No, 2-Simple 1-Ladder, 3-LadderEx]
-x --matrix OSD matrix (0 - 53:20 , 1- 50:18 chars)
--mspvtx Enable mspvtx support
-v --verbose Show debug infot
--help Display this help
3.5 Step 5: 修改/etc/datalink.conf
$ sed -i '/telemetry=true/c\telemetry=false' /etc/datalink.conf
3.6 Step 6: 设置Ardupilot串口协议
Analog Camera:
SERIAL3_BAUD = 230 //230400
SERIAL3_PROTOCOL = 44 //IRC_TRAMP
SERIAL3_OPTIONS = 4 //halfDuplex
OSD_TYPE1 = 1 //MAX7456
Digital Camera:
SERIAL8_BAUD = 115 //115200
SERIAL8_PROTOCOL = 42 //DISPLAYPORT
SERIAL8_OPTIONS = 0 //polling
OSD_TYPE2 = 5 //MSP_DISPLAYPORT
MSP_OPTIONS = 4 //EnableBTFLFonts: 4 or 6
3.7 Step 7:OSD配置切换选项
目前,主要的问题是:Is it possible for two OSD resolution working at the same time?
如果不能同时支持模拟和数字OSD显示,那么只能进行切换。或者,将OSD位置调整到模拟和数字摄像头都能显示的位置。
OSD_CHAN = ???
详见:
4. 总结
通过不断折腾,基本上Ardupilot在使用msposd时,主要注意配置上的一些问题:
- RGN_GetAttr failed with 0xa0032001 – osd icons error
- Is it possible for two OSD resolution working at the same time?
- betaflight png mw icon is NOT good! #15
- Custom messages may cause garbled text if echoed too early #22
如果能够支持位置本地自定义,那么将更加灵活。
- [Request] OSD icon local position configuration support #14
- [Request] Ardupilot OSD icon support #13
- [Request] Porting ground station OSD to Jetson Orin Nano #17
- Can’t launch msposd on Groud stattion NVR Hi3536dv100 #18
5. 参考资料
【1】四轴飞控DIY集成FPV功能
【2】Ardupilot & OpenIPC & 基于WFB-NG构架分析和数据链路思考
【3】OpenIPC开源FPV之工程编译
【4】OpenIPC开源FPV之工程框架
【5】OpenIPC开源FPV之重要源码包
【6】OpenIPC开源FPV之重要源码启动配置
【7】OpenIPC开源FPV之固件sysupgrade升级
【8】OpenIPC开源FPV之Ardupilot配置
【9】OpenIPC开源FPV之Channel配置