3
3
[ ![ cmake Ubuntu] ( https://github.com/facontidavide/data_tamer/actions/workflows/cmake_ubuntu.yml/badge.svg )] ( https://github.com/facontidavide/data_tamer/actions/workflows/cmake_ubuntu.yml )
4
4
[ ![ ros2] ( https://github.com/PickNikRobotics/data_tamer/actions/workflows/ros2.yml/badge.svg )] ( https://github.com/PickNikRobotics/data_tamer/actions/workflows/ros2.yml )
5
5
[ ![ codecov] ( https://codecov.io/gh/facontidavide/data_tamer/graph/badge.svg?token=D0wtsntWds )] ( https://codecov.io/gh/facontidavide/data_tamer )
6
-
6
+
7
7
** DataTamer** is a library to log/trace numerical variables over time and
8
8
takes periodic "snapshots" of their values, to later visualize them as ** timeseries** .
9
9
10
10
It works great with [ PlotJuggler] ( https://github.com/facontidavide/PlotJuggler ) ,
11
11
the timeseries visualization tool (note: you will need PlotJuggler ** 3.8.2** or later).
12
12
13
- ** DataTamer** is "fearless data logger" because you can record hundreds or ** thousands of variables** :
13
+ ** DataTamer** is "fearless data logger" because you can record hundreds or ** thousands of variables** :
14
14
even 1 million points per second should have a fairly small CPU overhead.
15
15
16
- Since all the values are aggregated in a single "snapshot", it is usually meant to
16
+ Since all the values are aggregated in a single "snapshot", it is usually meant to
17
17
record data in a periodic loop (a very frequent use case, in robotics applications).
18
18
19
19
Kudos to [ pal_statistics] ( https://github.com/pal-robotics/pal_statistics ) , for inspiring this project.
@@ -27,20 +27,20 @@ DataTamer can be used to monitor multiple variables in your applications.
27
27
** Channels** are used to take "snapshots" of a subset of variables at a given time.
28
28
If you want to record at different frequencies, you can use different channels.
29
29
30
- DataTamer will forward the collected data to 1 or multiple ** sinks** ;
30
+ DataTamer will forward the collected data to 1 or multiple ** sinks** ;
31
31
a sink may save the information immediately in a file (currently, we support [ MCAP] ( https://mcap.dev/ ) )
32
32
or publish it using an inter-process communication, for instance, a ROS2 publisher.
33
33
34
34
You can easily create your own, specialized sinks.
35
35
36
36
Use [ PlotJuggler] ( https://github.com/facontidavide/PlotJuggler ) to
37
- visualize your logs offline or in real-time.
37
+ visualize your logs offline or in real-time.
38
38
39
39
## Features
40
40
41
41
- ** Serialization schema is created at run-time** : no need to do code generation.
42
42
- ** Suitable for real-time applications** : very low latency (on the side of the callee).
43
- - ** Multi-sink architecture** : recorded data can be forwarded to multiple "backends".
43
+ - ** Multi-sink architecture** : recorded data can be forwarded to multiple "backends".
44
44
- ** Very low serialization overhead** , in the order of 1 bit per traced value.
45
45
- The user can enable/disable traced variables at run-time.
46
46
@@ -176,11 +176,7 @@ cmake --build build/Debug --parallel
176
176
# How to deserialize data recorded with DataTamer
177
177
178
178
I will write more extensively about the serialization format used by DataTamer, but for the time being I
179
- created a single header file without external dependencies that you can just copy into your project:
179
+ created a single header file without external dependencies that you can just copy into your project:
180
180
[ data_tamer_parser.hpp] ( data_tamer/include/data_tamer_parser )
181
181
182
182
You can see how it is used in this example: [ mcap_reader] ( data_tamer/examples/mcap_reader.cpp )
183
-
184
-
185
-
186
-
0 commit comments