1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/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跳变,数据质量差!")