-
Notifications
You must be signed in to change notification settings - Fork 4.9k
Description
| 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