SVO files and IMU sensor data

What IMU sensor data is supposed to be recorded in SVO files for playback?
For example I can read “linear_acceleration” or pose, but not “linear_acceleration_uncalibrated”, “angular_velocity” or “angular_velocity_uncalibrated”.

The work is to do with offline processing and fusion, ideally I want raw uncalibrated acceleration and angular velocity.

The documentation is unlear
and from here Video Recording | Stereolabs

" To record SVO files, you need to enable the Recording module with enableRecording(). Specify an output file name (eg: output.svo) and SVO_COMPRESSION_MODE, then save each grabbed frame. SVO lets you record video and associated metadata (timestamp, IMU data and more if available)."

I can work around by writing my own recording utility, but it would be nice to know if I am maybe doing something wrong first.

Hi @smw_uk,

Indeed, all the IMU data is not available when playing back an SVO and it might not be very explicit in our website documentation.
You can find the list of recorded IMU data in our API doc here.

Hope this answers your question

Thanks for reply - it could be worth adding all sensor data to SVO’s in the future

The frequency of the IMU data is much higher that the grabbing frequency of the camera.
Adding IMU data to the SVO requires to sample them at the grab frequency operation that can introduce problems like aliasing.
The only inertial data available with SVO is the camera pose that is a data always valid because it’s calculated at runtime while the SVO is recording.

Thanks, yes I get that!
I ideally wanted the IMU data that was captured closest to the time of the image grab.

1 Like

If I want to record both raw imu data and image data, what should I do? Should I go to learn how to use ros?

My solution was to record a single file per frame comprising of a data structure containing uncompressed image data and all available instantaneous sensor data in that one file (30fps B&W 720p in my case). Data was stored to an installed SSD on Xavier NX for speed and capacity reasons.
Post processing algorithmn reads back the individual frame files in sequence, no compression is used to emulate real time vision quality. OpenCV C++ based code with threading to help with buffering and potential frame drop.

Hope that helps!