Skip to content

Pose Accuracy and Stability - Calibration #5239

@JBBee

Description

@JBBee

Required Info
Camera Model T265
Firmware Version 0.2.0.857
Operating System & Version Win 10
Kernel Version (Linux Only)
Platform PC
SDK Version 2.30.0
Language C#
Segment AR

Issue Description

Our AR application using the T265 overlays virtual objects on top of real world objects and we're having trouble with the virtual objects staying in place on top of the real objects. Apologies for the long post, but we're trying to see if there's anything we can do to improve on this issue.

During some runs the virtual object stays in place very well and during others it moves off the real world object a noticeable amount as we move around it. This is similar to #4789 #5207 #4368. We conducted some tests to try and characterize the accuracy and stability of the pose from the T265, and also turned dynamic calibration on/off and modified the extrinsics distance between the fisheyes using the calibration write api #4650 to try and achieve a more accurate pose. Each test run was with a freshly plugged in module, we then walk around the room twice, and then put it on a cart and wheel it exactly 5m in a straight line and measure the straight line distance between the start and end points. There's no sunlight in the room and the lighting and furniture (except for the cart) were kept static for all the runs. Below are the calibration values and the results


1. Factory calibration

a. Dynamic Calibration on
Run T265 Distance % error
1 4.734 5.4
2 4.93 1.4
3 4.85 3
4 4.90 2
5 4.79 4.2
b. Dynamic Calibration off
Run T265 Distance % error
1 4.41 11.8
2 4.93 1.4
3 4.85 3
4 4.90 2
5 4.94 1.2

2. Setting the fisheye extrinsics translation x value to 0.0658

a. Dynamic Calibration on
Run T265 Distance % error
1 4.99 .2
2 5.07 1.4
3 4.91 1.8
4 5.16 3.2
5 4.77 4.6
b. Dynamic Calibration off
Run T265 Distance % error
1 4.96 .8
2 4.99 .2
3 5.11 2.2
4 4.70 6
5 5.05 1

Number of runs with % error <= 2.5

Run Number
1a 2
1b 3
2a 3
2b 4

So the number of runs where our application will look ok is highest with the calibration for 2b, that is with dynamic calibration off and the fisheye baseline adjusted high.

I understand the SLAM algorithm is always being improved for accuracy and stability, but I wonder if making calibration adjustments could help us in the near term.

  • Do you see any issue with setting an artificially high distance between the fisheyes?
  • Are there any other calibration adjustments we could make which could help us in this one environment?
  • Is there a process to allow us to re-calibrate the IMU?
  • Is there anything we can do to better stabilize the % error?

Also below are the factory and modified calibrations.

Thanks.

Factory

Width:        848
  Height:       800
  PPX:          430.163909912109
  PPY:          400.544311523438
  Fx:           284.657196044922
  Fy:           285.681304931641
  Distortion:   Kannala Brandt4
  Coeffs:       -0.000986896338872612   0.03599027171731        -0.0350222513079643     0.00552535010501742     0

  Width:        848
  Height:       800
  PPX:          429.614013671875
  PPY:          400.963409423828
  Fx:           285.275787353516
  Fy:           286.322204589844
  Distortion:   Kannala Brandt4
  Coeffs:       -0.00297739310190082    0.0402248986065388      -0.0377833284437656     0.00628961203619838     0

Bias Variances:         0.000000499999999  0.000000499999999  0.000000499999999
Noise Variances:        0.000005148030141  0.000005148030141  0.000005148030141
Sensitivity :
     0.993849       0.000000       0.000000       0.002005
     0.000000       0.997440       0.000000      -0.000646
     0.000000       0.000000       0.997373       0.000655


Bias Variances:         0.000099999997474  0.000099999997474  0.000099999997474
Noise Variances:        0.000066952452471  0.000066952452471  0.000066952452471
Sensitivity :
     1.010260       0.000000       0.000000      -0.061002
     0.000000       1.022954       0.000000       0.251849
     0.000000       0.000000       1.017220      -0.012597


Fisheye 1 to Fisheye 2 extrinsics :
 Rotation Matrix:
   0.999976         0.000451783     -0.00688393
  -0.000427367      0.999994         0.0035479
   0.00688548      -0.00354487       0.99997

 Translation Vector: -0.0646408051252365  0.000127978943055496  -9.49058885453269e-05

Fisheye 2 to Fisheye 1 extrinsics :
 Rotation Matrix:
   0.999976        -0.000427367      0.00688548
   0.000451783      0.999994        -0.00354487
  -0.00688393       0.0035479        0.99997

 Translation Vector: 0.0646399706602097  -9.91109918686561e-05  -0.000350533431628719

Modified

 Width:        848
  Height:       800
  PPX:          430.163909912109
  PPY:          400.544311523438
  Fx:           284.657196044922
  Fy:           285.681304931641
  Distortion:   Kannala Brandt4
  Coeffs:       -0.000986896338872612   0.03599027171731        -0.0350222513079643     0.00552535010501742     0

  Width:        848
  Height:       800
  PPX:          429.614013671875
  PPY:          400.963409423828
  Fx:           285.275787353516
  Fy:           286.322204589844
  Distortion:   Kannala Brandt4
  Coeffs:       -0.00297739310190082    0.0402248986065388      -0.0377833284437656     0.00628961203619838     0

Bias Variances:         0.000000499999999  0.000000499999999  0.000000499999999
Noise Variances:        0.000005148030141  0.000005148030141  0.000005148030141
Sensitivity :
     0.993849       0.000000       0.000000       0.002005
     0.000000       0.997440       0.000000      -0.000646
     0.000000       0.000000       0.997373       0.000655


Bias Variances:         0.000099999997474  0.000099999997474  0.000099999997474
Noise Variances:        0.000066952452471  0.000066952452471  0.000066952452471
Sensitivity :
     1.010260       0.000000       0.000000      -0.061002
     0.000000       1.022954       0.000000       0.251849
     0.000000       0.000000       1.017220      -0.012597


Fisheye 1 to Fisheye 2 extrinsics :
 Rotation Matrix:
   0.999976         0.000451782     -0.00688393
  -0.000427368      0.999994         0.0035479
   0.00688548      -0.00354487       0.99997

 Translation Vector: -0.0657961964607239  -0.000303193868603557  0.000452485022833571

Fisheye 2 to Fisheye 1 extrinsics :
 Rotation Matrix:
   0.999976        -0.000427368      0.00688548
   0.000451782      0.999994        -0.00354487
  -0.00688393       0.0035479        0.99997

 Translation Vector: 0.0657913759350777  0.000334521551849321  -0.000904331507626921

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions