如何分析汽车是否被人恶意放钉子扎轮胎

1,背景描述

​ 今天早上(2025.04.02 9点左右)起床去上班,发现轮胎没气了,因为前天有人占我的车位,我用车堵过了那个占我车位的车(并且我把他的后视镜往回掰了-未打开状态),所以我第一时间怀疑到那个人恶意放气。

​ 现在,我需要分析出我的车胎到底发生了什么:1️⃣被放气?2️⃣扎钉子了?3️⃣人为的?4️⃣自然意外?

2,排查过程

2.1,当前轮胎状态

​ 重新给轮胎打上气之后,查看是否是否还会消气,发现消气!那么一定是扎钉子了,还有一个经验就是胎压接近0就一定是扎钉子了。

​ 因为放气,基本上都会有一些余量,放完气是要不少时间的。

​ ✅已确认,是扎钉子了

2.2,人为还是自然

​ 是在路上扎的钉子还是在车位上被人为恶易放置钉子扎的?

​ 直接找到维修小哥下载胎压检测的OBD历史数据,这个数据会记录历史时间的胎压状态。电动汽车就是一个手机加四个轮子,所有传感器的数据只有有记录,都应该可以获得

使用python脚本编写程序读取

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import copy
import numpy as np
from openpyxl import load_workbook
from datetime import datetime

workbook = load_workbook(filename='xxxx.xlsx')

# 初始化参数
X0 = np.array([[0], [0]]) # 初始状态
P0 = np.eye(2) # 初始协方差
A = np.array([[1, 1], [0, 1]]) # 状态转移矩阵
Q = np.eye(2) * 0.1 # 过程噪声协方差
B = np.array([[0.5], [1]]) # 控制输入矩阵
U1 = np.array([[1]]) # 控制输入
H = np.array([[1, 0]]) # 观测矩阵
R = np.array([[1]]) # 观测噪声协方差
Z = np.array([[1]]) # 观测值

def kf_predict(X0, P0, A, Q, B, U1):
X10 = np.dot(A, X0) + np.dot(B, U1)
P10 = np.dot(np.dot(A, P0), A.T) + Q
return X10, P10

def kf_update(X10, P10, Z, H, R):
K = np.dot(np.dot(P10, H.T), np.linalg.pinv(np.dot(np.dot(H, P10), H.T) + R))
X1 = X10 + np.dot(K, Z - np.dot(H, X10))
P1 = np.dot(np.eye(K.shape[0]) - np.dot(K, H), P10)
return X1, P1, K


# 选择工作表
sheet = workbook['Sheet1']

output_txt_path = 'output.txt'

time_objects = []
time_objects_num = []
value_data = []

num = 0.0
date = '1'
numPre = 0.0
datePre = '1'
# 读取整个工作表数据
with open(output_txt_path, 'w', encoding='utf-8') as file:
# for row in sheet.iter_rows(min_row=2,max_row=1960, max_col=5, values_only=True):
for row in sheet.iter_rows(min_row=1960,max_row=4000, max_col=5, values_only=True):
# for row in sheet.iter_rows(min_row=2, max_col=5, values_only=True):
num = 0.0
date = row[0]

date = date.replace('2025-04-01 ', '')
if (row[1] != None):
num = row[1]
if (row[3] != None):
num = row[3]
if (num != 0.0):
if (datePre != '1'):
file.write(f"|{date} | {num} | {num - numPre}| \n")
else:
file.write(f"|{date} | {num} | 0| \n")
time_num = datetime.strptime(date, "%H:%M:%S")
time_objects.append(time_num)
value_data.append(num)
time_objects_num.append(time_num.timestamp())
numPre = copy.deepcopy(num)
datePre = copy.deepcopy(date)


import matplotlib.pyplot as plt
import matplotlib.dates as mdates

# 设置图片清晰度
plt.rcParams['figure.dpi'] = 300

# 绘制折线图
plt.plot(time_objects, value_data, marker='o')
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%H:%M:%S'))
z = np.polyfit(time_objects_num, value_data, 2)
p = np.poly1d(z)
y_fit = p(time_objects_num)

# 设置 x 轴标签旋转角度,以便更好显示时间
plt.xticks(rotation=45)

# 添加标题和标签
plt.title('history')
plt.xlabel('2025-04-01')
plt.ylabel('pa')
plt.ylim(215, 260)

plt.plot(time_objects, y_fit, 'r-', label='拟合曲线')

# 显示图形
plt.tight_layout()
plt.show()

异常数据表格

时间 当前胎压 差值
20:09:33 250.25 0
20:10:43 250.25 0.0
20:12:16 247.5 -2.75
20:13:43 247.5 0.0
20:14:16 250.25 2.75
20:14:17 250.25 0.0
20:16:13 250.25 0.0
20:17:16 253 2.75
20:17:17 253 0
20:18:46 250.25 -2.75
20:18:47 250.25 0.0
20:19:46 250.25 0.0
20:25:33 250.25 0.0
20:27:13 250.25 0.0
20:27:17 244.75 -5.5(从这时开始异常)
20:28:16 242 -2.75
20:28:17 242 0
20:57:26 222.75 -19.25(这时漏气已经很明显了)
20:58:24 222.75 0.0
20:58:33 220 -2.75
21:00:28 220 0
21:01:03 217.25 -2.75
21:02:03 217.25 0.0
21:03:13 217.25 0.0
21:04:25 217.25 0.0

数据可视化-早上胎压正常(会随着环境温度升高缓慢升压,热胀冷缩)

image-20250402175110352

数据可视化-晚上胎压异常(突然断崖式胎压下降)

image-20250402175134187

​ 大约是在2025-04-01 晚上8点半左右车轮开始漏气,但是我们是在下图这个位置停的滨江天街旁的《浙果壹号》水果店门口停的车,去吃饭

image-20250402172006931

开车到这个地方之后,我去的店里点的餐付款!

image-20250402172429448

吃完饭后,又和老婆去买的水果

image-20250402172454703

依据传感器数据以及个人手机订单记录数据分析,轮胎被扎大致就在《浙果壹号》水果店门口

2.3,钉子

最终修车师傅找到的钉子!

image-20250402172826108

image-20250402172837073

image-20250402172853902

image-20250402172807204

​ 问过修车师傅,这种钉子正常吗,专业人士回复说,比较反常,一般常见的钉子都是小钉子、铁丝类的。

​ 这个“钉子”,首先重心比较高容易倒(平放),除非专门的被竖着放,另外这种东西一般是工具头,还是被切割过的!

3,总结

​ 依据综合数据分析,大概率就是在水果店门口被扎的,具体故意的、还是不小心的我就不得而知了。

4,参考链接

汽车胎压检测历史数据-obd