data/method/mavlink/pymavlink/examples/dup_samples.py

47 lines
1.2 KiB
Python
Raw Permalink Normal View History

2024-07-24 18:30:46 +08:00
#!/usr/bin/env python3
from argparse import ArgumentParser
parser = ArgumentParser()
parser.add_argument("log")
args = parser.parse_args()
from pymavlink import mavutil
def process(logfile):
'''look for duplicate raw gyro samples'''
mlog = mavutil.mavlink_connection(logfile)
last_gyr = {}
dup_count = {}
total_dup = {}
while True:
m = mlog.recv_match(type='GYR')
if m is None:
break
if not m.I in last_gyr:
last_gyr[m.I] = m
dup_count[m.I] = 0
total_dup[m.I] = 0
continue
axes = 0
if last_gyr[m.I].GyrX == m.GyrX and abs(m.GyrX) >= 1:
axes |= 1
if last_gyr[m.I].GyrY == m.GyrY and abs(m.GyrY) >= 1:
axes |= 2
if last_gyr[m.I].GyrX == m.GyrZ and abs(m.GyrZ) >= 1:
axes |= 4
if axes != 0:
if dup_count[m.I] == 0:
print("%s" % str(last_gyr[m.I]))
dup_count[m.I] += 1
total_dup[m.I] += 1
print("%s dup=%u axes=%u" % (str(m), dup_count[m.I], axes))
else:
dup_count[m.I] = 0
last_gyr[m.I] = m
print(total_dup)
process(args.log)