#!/usr/bin/env python3 """找出GPS大跳变的位置""" import sys import math log_file = sys.argv[1] if len(sys.argv) > 1 else "calibration_20251204_171502.log" data = [] with open(log_file, 'r', encoding='utf-8', errors='ignore') as f: for line in f: if line.startswith('$CAL'): parts = line.strip().split(',') if len(parts) >= 12: data.append({ 'seq': int(parts[1]), 'state': parts[3], 'x': float(parts[6]), 'y': float(parts[7]) }) print(f"共 {len(data)} 条数据\n") print("检查单步位移超过1米的跳变:\n") jump_count = 0 for i in range(1, len(data)): dx = data[i]['x'] - data[i-1]['x'] dy = data[i]['y'] - data[i-1]['y'] dist = math.sqrt(dx*dx + dy*dy) if dist > 1.0: # 单步超过1米认为是跳变 jump_count += 1 print(f"跳变#{jump_count}: seq {data[i-1]['seq']}→{data[i]['seq']}, 状态 {data[i-1]['state']}→{data[i]['state']}") print(f" 位置: ({data[i-1]['x']:.2f}, {data[i-1]['y']:.2f}) → ({data[i]['x']:.2f}, {data[i]['y']:.2f})") print(f" 跳变距离: {dist:.2f}m\n") if jump_count == 0: print("✅ 未发现明显GPS跳变(单步<1米)") else: print(f"⚠️ 共发现 {jump_count} 次GPS跳变,数据质量差!")