Skip to content
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

Adding wheel odometry input to T265 #5271

Closed
shannonwarren opened this issue Nov 18, 2019 · 9 comments
Closed

Adding wheel odometry input to T265 #5271

shannonwarren opened this issue Nov 18, 2019 · 9 comments
Assignees
Labels
T260 series Intel® T265 library tracking 6-DOF tracking, SLAM and T26x series

Comments

@shannonwarren
Copy link

shannonwarren commented Nov 18, 2019

I have some concerns fusing wheel odometery data using the calibration file provided.

I'm assuming my calibration file provided has the correct translation and rotation parameters however when I give a very low noise covariance of 0.000005 to the wheel odometer(just for testing purposes) hoping that the T265 tracking follows my wheel odometers; the tracking is completely off.

Could it be because
1: My wheel odometry input in 10hz.
2: Is the covariance value to low?

An update: Published some logs and realized my wheel odometry does not have Twist values which is needed by t265?

@dorodnic dorodnic added T260 series Intel® T265 library tracking 6-DOF tracking, SLAM and T26x series labels Nov 19, 2019
@shannonwarren
Copy link
Author

shannonwarren commented Nov 20, 2019

After poking around a bit, I've got my wheel odometry to work with the t265 with extremely low covariances values and an input frequency of 10hz. However, I still have some queries regarding the calibration_odometry.json file.

1: I did not have to change the rotation parameters in the calibration file even though my base_link frame and t265_ camera_pose frame are not aligned. I looked up the t265_realsense_node.cpp odometry callback function (realsense-ros package) and it seems that you're transforming the odometry twist values to the t265 camera frame https://github.com/IntelRealSense/realsense-ros/blob/development/realsense2_camera/src/t265_realsense_node.cpp#L63. I'm using this similar setup provided here in the image #3462 but did not have to specify any axis angle rotation. Let me know if I'm correct.

@RealSenseCustomerSupport
Copy link
Collaborator


Hi Shannon,

We've recently updated some documentation regarding wheeled odometry on the T265. Please see the "Appendix" section in link below and let us know if this helps clarify things.

https://github.com/IntelRealSense/librealsense/blob/development/doc/t265.md

Thanks

@gglaspell
Copy link

gglaspell commented Dec 12, 2019

I am thoroughly confused now. For a camera facing the same forward direction as the robot I had assumed W would be [-1.2092, 1.2092, 1.2092] as indicated in #3462, @shannonwarren it appears you have them listed as all 0's. Additionally the example here https://github.com/IntelRealSense/librealsense/blob/development/doc/t265.md isn't as helpful as I'd like since the robot frame has the exact alignment as the camera frame so naturally W would be [0, 0, 0], but my robot frame has X as forward and Z up. When I attempt to include the wheel odometry from the robot into the t265 the map is jumping around, which wasn't an issue before trying to incoperate wheel odometry into the t265.

@schmidtp1
Copy link
Contributor

schmidtp1 commented Dec 12, 2019

@gglaspell, please note that there is a difference between librealsense and the ROS wrapper.
The documentation above refers to the coordinate convention in librealsense, while @shannonwarren seems to use the ROS wrapper ("t265_realsense_node.cpp"). As he noted, in ROS there is a coordinate transformation that aligns the output to ROS coordinate convention (https://www.ros.org/reps/rep-0103.html) and also tries to apply the same transformation/rotation to the wheel odometry input: https://github.com/IntelRealSense/realsense-ros/blob/development/realsense2_camera/src/t265_realsense_node.cpp#L64. This has to be taken into account.

@shannonwarren, great you figured it out and got it to work, and sorry for the inconvenience! We are looking into improving the wheel odometry API.

@shannonwarren
Copy link
Author

@schmidtp1 Yes, I have the T265 running on an indoor robot with wheel odometry as the input. Thanks for the assistance. Will be doing some long term stability testing over the next couple of weeks.

I had a question regarding the ros wrapper:
1* Is there a plan to enable mapping; relocalization etc using the ros wrapper?

@schmidtp1
Copy link
Contributor

@shannonwarren, great!

The options are enabled on default. I assume you are asking about exposing the option to disable them? It should already be possible this way: IntelRealSense/realsense-ros#923 (comment).

@shannonwarren
Copy link
Author

shannonwarren commented Jan 7, 2020

@schmidtp1 Got it, thanks. Had a few more questions.

Currently, we set a static transform (extrinsic) between the camera and wheel odometry in the calibration odometry file. For future releases are you considering dynamically updating the extrinsic parameters between wheel odometer and camera during operation/motion? Our setup has a rotating head where our camera is mounted.

Is there any way to zero out the 'z' values of odometry if working in a 2d environment without an external ROS node. Odometry tends to drift in z quite a bit over time.

@gglaspell
Copy link

@schmidtp1 I am also experiencing some drift, even when the robot is perfectly stationary, when incorporating wheel odom into the t265 and wanted to verify I had calibration file setup correctly. Since I am using the ROS wrapper, I have W set to [0,0,0] as per your guidance. However, I am not sure if the wrapper corrects for T as well. I currently have T set in my JSON file as [0,-0.24,0.2], but the static transform I launch is args="0.2 0.0 0.24 0.0 0 0 /base_link /cam_t265_link 100". Based on the example I believe I have it set correctly.

@RealSenseSupport
Copy link
Collaborator

Thank you for highlighting further updates, requirements and issues with wheel odometry on T265. We have moved our focus to our next generation of products and consequently, we will not be addressing this in the T265.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
T260 series Intel® T265 library tracking 6-DOF tracking, SLAM and T26x series
Projects
None yet
Development

No branches or pull requests

6 participants