-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
Pose Accuracy and Stability - Calibration #5239
Comments
Thanks for the data, @JBBee! One quick question. Are you moving the device around before starting to take measurements? We highly recommend doing this. |
Sure @radfordi We are moving the device around before taking measurements, we walk around the room twice before we put it on the cart to wheel it the 5m. Thanks. |
As another data point: We continued to collect data with a second T265 and found that modifying the fisheye baseline to be lower than 64mm improved tracking on this second module. |
Thanks for the update, @JBBee. We are looking into your results and double checking our calibration procedure. Still, the path length variances you are seeing are larger than we've seen in our own testing. Would you be willing up make a recording (made with |
@JBBee Could you provide the calibration of the second module? |
@radfordi , thanks. I'd be happy to provide some data: I did two recordings: One with the factory calibration and dynamic calibration on, and the second with the modified calibration and dynamic calibration off. I pause when placing it on the cart and also after pushing the cart so you can see the pose at the start and end of the 5m push. The straight line distance in @dmirota , the above recordings and calibrations are from our first rig which we're calling the gray rig. The second rig we have is the white rig and the factory and modified calibrations are below. On the white rig we saw the best results with the modified calibration below but with leaving dynamic calibration on. Thanks again for the help. White Factory
White modified
|
@JBBee Thank you for your prompt reply and for sharing the additional data. We will have a closer look and be in touch. |
@JBBee I was reviewing your data and I wanted to make sure I take the same measurement you are for the 5m segment. At beginning of the recordings, I see a tour around the table, the pause, and then the 5m motion on a cart. How did you select the starting point of the 5m motion? Is it simply one of the poses during the pause? Thanks. |
@dmirota Yes, here are the times in each bag file that I pause and write down the pose translation gray_0p0658_no_dyn_calibration.bag
gray_default_dyn_calibration_on.bag
For each video I just calculate the distance between the starting and ending pose translations. If you need anything else just let me know. Thanks. |
Hi, @JBBee, |
Hi, @dmirota Thank you, I followed the instructions and updated the calibration on our gray rig using the python script referenced above. Unfortunately though I'm seeing low distance measurements for the 5m test. I recorded bag files using this calibration with dynamic calibration both on and off. They're located here: The straight line distances are:
If you want to take a look at them the relevant times for the 5m start/end are as follows:
Inside the zips is a dump of the calibration written by your python script to confirm. We really appreciate the help, thanks again! |
@JBBee Thanks for your quick response. Just to confirm. Are you still using librealsense 2.30.0 and firmware 0.2.0.857? |
Sure @dmirota , actually I'm using 2.31.0 with firmware 0.2.0.879. Should I try the test with 2.30.0? |
No need to change back just yet. I just want to make sure my test environment is matching yours. Thanks. |
@JBBee How are you selecting the translation values to compute the length? |
@dmirota I just pause the bag file in the viewer when it's settled on the cart and write down the pose translation and then after it's moved the 5m and it's settled again I pause and do the same. Then I just calculate the distance between the two points. For example, in Do you see any issues with doing it this way? |
No, there should not be an issue with that. I just want to make sure I'm following all of the same steps you are. |
Hi @dmirota Just checking in to see if there might be any new developments, or if there's anything else we can provide to help. Thanks. |
Hi, @JBBee Thanks for checking in. I found an inconsistency in how the calibration data is being updated and we are still investigating it further. I will provide further updates when available. We appreciate your help and I will let you know when we have an update for you or if I could use further data. Thanks again, |
Thank you for highlighting the issue with calibration in T265. We have moved our focus to our next generation of products and consequently, we will not be addressing calibration changes in the T265. |
Hello @JBBee! I am interested in this topic and I want to ask the question about update_calibration.py script that you attached in this topic. I ran your script in ubuntu 20.04.5 LTS to change the extrinsics rotation and translation value of "fisheye 1" to "fisheye 2" into the value that you modified in your t265 camera. Instead of got a same value like yours, my extrinsic value is miss from what I input in R_p_1. In order to clarify, here is my customize R_p_1 value: And here is the output data that I've got: The value corresponding to input R_p_1 is the extrinsics "fisheye 1" to "fisheye 2" rotation matrix is also changed when I use your update_calibration.py but it changed not in accordance with the value that I put in your script. So, how to change the extrinsics rotation value of "fisheye 1" to "fisheye 2" as well as "fisheye 2" to "fisheye 1"? |
Hello @haldaazhim! I believe the problem is that Intel Realsense has removed the T265 functionality from the latest SDK release. Please try the script with python3.10 or lower and run If the write is successful you should see:
Since the T265 is discontinued do you know of any alternatives? Thanks. |
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
b. Dynamic Calibration off
2. Setting the fisheye extrinsics translation x value to 0.0658
a. Dynamic Calibration on
b. Dynamic Calibration off
Number of runs with % error <= 2.5
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.
Also below are the factory and modified calibrations.
Thanks.
Factory
Modified
The text was updated successfully, but these errors were encountered: