47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
|
#!/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)
|
||
|
|