Zed2i Positional Tracking is inconsistent

I’ve been attempting to use the ZED pose data from the Positional Tracking for estimating ground truth, using the Python API. The code for getting pose if pretty basic, and is being written to CSV files:

zed_pose = sl.Pose()
state = self.zed.get_position(zed_pose, sl.REFERENCE_FRAME.WORLD)

# Raw pose data
if (
          state == sl.POSITIONAL_TRACKING_STATE.OK
          or state == sl.POSITIONAL_TRACKING_STATE.SEARCHING
 ):
          ts_ns = zed_pose.timestamp.data_ns
          position = zed_pose.pose_data().get_translation().get()
          orientation = zed_pose.pose_data().get_orientation().get()
 else:

If I run my script multiple times using the same SVO file, I frequently get different pose results. Unfortunately I cannot attach the output files (getting an error related to new users).

The longer the SVO file, the worse the error gets over time. Is this a known issue? Is the variation in the pose maybe due to the algorithm being used for generating pose from the image? I would normally expect there to be consistent values, even if there is an accumulated error.

Would using the IMU pose data be more accurate? I’m considering fusing both sets of pose output at the moment.

Hi @sarika93
can you share the SVO that you are using?
An environment poor in visual features is usually the cause of poor positional tracking results.

@Myzhar unfortunately when I attempt to upload the SVO I get an error saying “Sorry, new users can not upload attachments.”.
Processing: example.svo…

Additional details if this is helpful. I’ve tried this with recordings of both outdoor environments. The outdoor footage contains grass, trees, vehicles and tiles. movement in about 10m in one direction and several metres the other 2. Indoor is kitchen and dining area with not a lot of camera movement (maybe a foot in x, y, z). SDK version is 3.8. I get a reasonable looking depth view when I user the ZED Depth viewer.

You can share it by using external file sharing services (dropbox, Google Drive, etc).

What is the amount on position error that you get?

Link to SVOs here:

  1. https://drive.google.com/file/d/1Sxvs2KP8Pn5up-koLoiw1XfhKQOPTS2B/view?usp=share_link.
  2. https://drive.google.com/file/d/1fVnxYeQPsjOMcJtE9hQv3M2K6xPzx6bA/view?usp=share_link

For these files it’s not that much error (around 1-5cm); however for some other SVOs, that I can’t share due to confidentiality reasons, it can be as much as 1m (longer SVO duration and much further movement).

Hi @sarika93
1-5 cm of error is not a big error, according to the type of task that is performed.
To provide you with better support we need data when the problem is evident.
You can send an email to support@stereolabs.com to discuss the problem with the support team without sharing data publicly.

I’ll do that, thanks for your help!

1 Like