Ardupilot & OpenIPC & 基于WFB-NG构架分析和数据链路思考
1. 源由
最近入手一套OpenIPC(SCC338Q+IMX415+Hi3536DV100+RTL8812AU),为了更好的配合GPU的AI运算,进行视频图像分析,初步计划如下:
- 天空端:视频(伴机电脑)
- 地面端:GPU视频分析/决策+遥控+地面站
为此,前面的准备工作:
- ArduPilot飞控之Gazebo + SITL + MP的Jetson Orin环境搭建
- ArduPilot开源飞控之lida2003套机+伴机电脑首飞
- ubuntu22.04@Jetson Orin Nano之OpenCV安装
- Linux 36.2@Jetson Orin Nano之Hello AI World!
- ubuntu22.04@laptop OpenCV Get Started
- Jammy@Jetson Orin - Tensorflow & Keras Get Started
- ExpressLRS硬件实测性能分析
当然,这些仅仅是已经做过的一些,对于上面的设想,远远不够,不过我们始终在靠近我们的愿景!
接下来,就将实时视频这块内容增加进来,已经知道的链路大概已经有很多条了,整理下:
a)【视频链路】IMX415 ==> SCC338Q ==> RTL8812AU ==> Hi3536DV100 ==> FPV Goggles/Display
b)【视频链路】IMX415 ==> SCC338Q ==> RTL8812AU ==> Hi3536DV100 ==> Ground Control Station
c)【视频链路】IMX415 ==> SCC338Q ==> RTL8812AU ==> Jetson Orin Nano (GPU/AI)
d)【视频链路】IMX415 ==> SCC338Q ==> Raspberry Pi3B+ (GPU/CPU/AI)
e)【控制链路】FC <== SCC338Q <== RTL8812AU <== Hi3536DV100 <== Ground Control Station
f)【控制链路】FC <== RC Receiver <== RC Transmitter <== RC Controller
e)【控制链路】FC <== SCC338Q <== RTL8812AU <== Jetson Orin Nano (GPU/AI)
g)【控制链路】FC <== SCC338Q <== RTL8812AU <== Raspberry Pi3B+ (GPU/CPU/AI)
注:这里不考虑中继等问题,因为中继进来,整个链路就更加复杂了。
2. OpenIPC安装
2.1 安装
略. 后续根据情况再做展开,目前可以看做是一个开源的黑匣子,它的底层实现依赖于WFB-NG。
2.2 配置
2.2.1 天空端配置文件
- /etc/wfb.conf
# cat /etc/wfb.conf
### unit: drone or gs
unit=drone
wlan=wlan0
region=00
### By default used channel number, but, you may set freq instead. For ex: 2387M
channel=64
frequency=
txpower=20
driver_txpower_override=20
bandwidth=20
stbc=0
ldpc=0
mcs_index=1
stream=0
link_id=7669206
udp_port=5600
rcv_buf=456000
frame_type=data
fec_k=8
fec_n=12
pool_timeout=0
guard_interval=long
- /etc/majestic.yaml
# cat /etc/majestic.yaml
system:
staticDir: /var/www
webPort: 80
httpsPort: 443
plugins: false
buffer: 1024
isp:
antiFlicker: disabled
exposure: 20
aGain: 40
sensorConfig: /etc/sensors/imx415_fpv.bin
image:
mirror: false
flip: false
rotate: 0
contrast: 50
hue: 50
saturation: 50
luminance: 50
video0:
enabled: true
codec: h265
fps: 60
bitrate: 2048
rcMode: cbr
gopSize: 1
size: 1024x768
video1:
enabled: false
codec: h264
size: 704x576
fps: 15
jpeg:
enabled: false
qfactor: 50
fps: 5
osd:
enabled: false
font: /usr/share/fonts/truetype/UbuntuMono-Regular.ttf
template: "%d.%m.%Y %H:%M:%S"
posX: 16
posY: 16
audio:
enabled: false
volume: 30
srate: 8000
codec: opus
outputEnabled: false
outputVolume: 30
rtsp:
enabled: true
port: 554
nightMode:
enabled: false
irCutSingleInvert: false
colorToGray: true
irSensorPinInvert