Wheel Odometry Calibration Questions
The following sample wheel odometry calibration json file was provided as a sample
{
"velocimeters": [ // array of velocity sensors (currently max. 2 supported)
{
"scale_and_alignment": [ // 3-by-3 matrix, row-major (multiplies measurement)
1.0,
0.0000000000000000,
0.0000000000000000,
0.0000000000000000,
1.0,
0.0000000000000000,
0.0000000000000000,
0.0000000000000000,
1.0
],
"noise_variance": 0.004445126050420168, // measurement covariance (to be determined/tuned)
"extrinsics": { // relative transformation of sensor frame w.r.t. T265 body frame
"T": [ // translation (in meters)
-0.5059,
-0.6294,
-0.6873
],
"T_variance": [ // currently not used, please ignore
9.999999974752427e-7,
9.999999974752427e-7,
9.999999974752427e-7
],
"W": [ // orientation in axis-angle representation, axis x angle (in rad)
-1.1155,
-1.1690,
-1.2115
],
"W_variance": [ // currently not used, please ignore
9.999999974752427e-5,
9.999999974752427e-5,
9.999999974752427e-5
]
}
}
]
}
For the extrinsic "T" array:
Are the translations listed in X, Y, Z?
Due to the fact the T265 has the following coordinate system
- Positive X direction is towards right imager
- Positive Y direction is upwards toward the top of the device
- Positive Z direction is inwards toward the back of the device
Does this mean that In the provided example the odometry sensor is located 0.5059 meters to the left, 0.6294 meters below, and 0.6873
meters in front of the camera?
For the "W" array:
My coordinate system is the standard
- Positive X direction is outwards toward the front of the robot
- Positive Y direction is towards left of the robot
- Positive Z direction is upwards toward the top of the robot
Would the following axis-angle rotation be correct?
[-1.2091996, 1.2091996, 1.2091996]
Or should I just put the axis angle rotation at [0.0, 0.0, 0.0] and input my odometry in the realsense frame as my -X velocity as Z, my -Y as X, and my Z as Y?I guess I'm am just confused as to how to set up and verify this file is correctly functioning... Is there a way for verifying everything is working as expected?
-
This topic is a bit outside of my experience but I hope that the question about the above calibration script in the link below and the reply by a T265 expert at Intel (schmidtp1) will be useful to you if you have not seen it already.
https://github.com/IntelRealSense/librealsense/pull/3462#issuecomment-472575654
The discussion in this link about odometry may also help:
https://github.com/IntelRealSense/librealsense/issues/3970#issuecomment-492111666
-
Thanks @MartyG the links provided were helpful, I hadn't seen both of them before.
I still have concerns I am not configured properly. I am reliably receiving a tracker confidence of 3, but the mapper confidence is always 0, I would expect both to be a 3.
- Tracker confidence (pose data confidence 0x0 - Failed, 0x1 - Low, 0x2 - Medium, 0x3 - High)
-
Mapper confidence (pose data confidence 0x0 - Failed, 0x1 - Low, 0x2 - Medium, 0x3 - High)
-
There was a case on the GitHub where confidence was always reported as high but the position reported was wrong.
-
Hi Glucas, you are correct about the T265 body frame and the interpretation of the translation in this configuration file.
To verify the orientation, I am assuming that the camera is facing forward. In that case W is correct.
R = [0 -1 0; 0 0 1; -1 0 0] % odometry axes, x', y', z' w.r.t. T265 body frame (per column)
[theta,u] = tr2angvec(R)
W = theta*uA way to confirm the calibration and that odometry is working would be to keep the robot static, for example by lifting it slightly, and turning the wheels should lead to a pose deviation in the expected direction. The deviation might be small because it is compensated by vision (and IMU) feedback but to make the effect more apparent the measurement covariance could be decreased (which increases the confidence in / "weighting" of the odometry measurements).
-
Dear Phillip,
Was referred to you by a colleague of yours, Mr. MartyG.
I have two questions for you (unrelated to wheel odometry):
1. What is the smallest increment of change in pose (meters) that the T265 can detect and output?
2. Is there a way to zero the orientation of the T265?
I found you can zero the pose [x y z] by resetting the pipe, but this method does not zero the orientation.Any help would be appreciated.
Thanks,
Nikhil
Please sign in to leave a comment.
Comments
7 comments