-
Notifications
You must be signed in to change notification settings - Fork 343
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use data store #13
Use data store #13
Conversation
Omg, 68 commits and +5,911 −2,426 lines! Great job finishing this! It feels like we could probably make it possible not to require setting the schema (TypeMsg) up front in the python SDK later on for smoother prototyping right? |
The logging SDK:s could handle the type messages automatically. For instance: in Python you could write something like |
Also, when you wrote "You need to log this ONCE before logging any data of that object type", you meant "You need to log this ONCE before logging any data of that type path" right? |
Yes, good catch, I'll update the text |
This adds the data store crate to put all the data in, with new support for batch logging. The queries for getting the data requires for the 2D and 3D views are now much faster.
Paths
This splits
DataPath
into several parts, perhaps best illustrated with an example:DataPath
:/camera/"left"/points/42.pos
,/camera/"left"/points/42.color
, etcObjPath
:/camera/"left"/points/42
FieldName
:pos
,color
, etcTypePath
:/camera/*/points/*
IndexPath
:/"left"/42
Each object has an
ObjectType
(e.g.ObjectType::Point
). Types are mapped toTypePath
, meaning all objects at the sameTypePath
have the same type. This means all tables are homogeneous.Logging
LogMsg
is now an enum of eitherTypeMsg
orDataMsg
.TypeMsg
maps aTypePath
to aObectType
. You need to log this ONCE before logging any data to an object at that type path.DataMsg
maps aDataPath
to aData
value (or possibly a batch of values - see below).Batches
If you are logging many points it is inefficient to do so by logging each point individually. The indexing of it will also be slow. A better approach is to use batching.
Without batching you would log:
With batching you instead log:
That underscore (
_
) is anIndex::Placeholder
and is replaced by the0
,1
, etc from the batch. Note that is always only the last index that is batched.Batches are faster to log, and are also faster to query inside the viewer.
NYUD
This PR also adds a new example app
nyud
, based on https://cs.nyu.edu/~silberman/datasets/nyu_depth_v2.html.