tools
imu_tester
imu_timestamp_test.py
Go to the documentation of this file.
1
'''
2
3
'''
4
import
matplotlib
5
import
matplotlib.pyplot
as
plt
6
import
numpy
as
np
7
8
9
class
ImuTimeStampTester
:
10
def
__init__
(self, logName):
11
self.
logName
= logName
12
13
def
run
(self):
14
# try to parse rostopic-echo file and search for timestamps
15
with
open(self.
logName
,
"r"
)
as
f:
16
data = f.readlines()
17
18
state = 0
19
secVal = 0.000;
20
nanoVal = 0.0
21
22
timestamps = np.zeros(1)
23
firstTime =
True
24
for
line
in
data:
25
words = line.split()
26
for
word
in
words:
27
if
(state == 1):
28
secVal = float(word)
29
state = 2
30
if
(state == 3):
31
nanoVal = float(word)
32
timeStampVal = secVal + 1E-9 * nanoVal
33
print
(
"Timestamp: {timestamp}"
.format(timestamp=timeStampVal))
34
if
(firstTime):
35
firstTime =
False
36
timestamps[0] = timeStampVal
37
else
:
38
timestamps = np.append(timestamps, timeStampVal)
39
state = 0
40
41
if
(word ==
'secs:'
):
42
state = 1
43
44
if
(word ==
'nsecs:'
):
45
state = 3
46
print
(words)
47
48
# now we can analyse and plot the result
49
50
deltaT = timestamps[1:] - timestamps[:-1]
51
X = np.arange(0, timestamps.size, 1)
52
53
ax = plt.gca()
54
plt.ylabel(
'Zeitdifferenz t(x)-t(x-1)'
)
55
plt.xlabel(
'relativer Rospaketindex x'
)
56
plt.title(
'Zeitverhalten der IMU Timestamps nach langen Differenzen'
)
57
ax.grid(which=
'major'
, axis=
'both'
, linestyle=
'--'
)
58
59
for
i
in
range(0, deltaT.size - 1):
60
if
deltaT[i] > np.mean(deltaT) + 2 * np.std(deltaT):
61
print
(
'ERROR INDEX:'
+ str(i) +
' Timestamp[INDEX-1]:'
+ str(timestamps[i]) +
' Timestamp[INDEX]:'
+ str(
62
timestamps[i + 1]))
63
plt.plot(deltaT)
64
plt.show()
65
plt.savefig(
'imutimestampsmu+2sigma.png'
, dpi=300)
66
67
68
if
__name__ ==
"__main__"
:
69
filename =
"/tmp/imu.txt"
# create such a file by running rostopic echo /imu >/tmp/imu.txt for about 10 secs.
70
71
imuTest =
ImuTimeStampTester
(filename)
72
imuTest.run()
imu_timestamp_test.ImuTimeStampTester.run
def run(self)
Definition:
imu_timestamp_test.py:13
imu_timestamp_test.ImuTimeStampTester.logName
logName
Definition:
imu_timestamp_test.py:11
roswrap::console::print
ROSCONSOLE_DECL void print(FilterBase *filter, void *logger, Level level, const char *file, int line, const char *function, const char *fmt,...) ROSCONSOLE_PRINTF_ATTRIBUTE(7
Don't call this directly. Use the ROS_LOG() macro instead.
imu_timestamp_test.ImuTimeStampTester.__init__
def __init__(self, logName)
Definition:
imu_timestamp_test.py:10
imu_timestamp_test.ImuTimeStampTester
Definition:
imu_timestamp_test.py:9
sick_scan_xd
Author(s): Michael Lehning
, Jochen Sprickerhof
, Martin Günther
autogenerated on Fri Oct 25 2024 02:47:08