Best approach to fuse odometry?

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Best approach to fuse odometry?

jorgemia
I've been reading some of the forums and it seems some people fuse odometry before feeding it to rtab-map whilst others combine the visual-odometry created by rtab-map with the IMU data.

If I have an IMU, wheel odometry and an intel D435i camera, what would be the best approach to combine all these different sources of odometry for outdoor navigation (in ROS)?

Use robot_localization EKF before and feed rtab-map a filtered odom topic (IMU + wheels)? Would it be useful to generate visual odom after? Can I fuse that as well?
Reply | Threaded
Open this post in threaded view
|

Re: Best approach to fuse odometry?

matlabbe
Administrator
There are multiple combinations possible, I would try these two:

wheel odometry -----------------------\
                                       \
IMU -----------------------------> robot_localization -------> rtabmap
                                       /
D435 images ---> visual odometry -----/
                   /
D435 imu ---------/

wheel odometry ------------------\
                                  \
IMU --------------------------> robot_localization -------> rtabmap
                                   /
D435 images---->visual odometry --/


Reply | Threaded
Open this post in threaded view
|

Re: Best approach to fuse odometry?

jorgemia
Thanks @matlabbe. I actually don't have a second IMU anymore and instead have a T265 camera.

Do you think this approach would work? Would it be overkill?

wheel odometry --------------------------\
                                                           \
T265 visual odom ----------------> robot_localization ----->rtabmap
                                                           /
D435 images ---> visual odometry -----/
                            /
D435 imu ---------/

Reply | Threaded
Open this post in threaded view
|

Re: Best approach to fuse odometry?

matlabbe
Administrator
Hi,

I would go with only one visual odometry:

wheel odometry --------------------------\
                                                           \
T265 visual odom ----------------> robot_localization ----->rtabmap
                                                                                      /
D435 images ------------------------------------------------>/
Reply | Threaded
Open this post in threaded view
|

Re: Best approach to fuse odometry?

jorgemia
Thanks for your answers. Final question...With two zed2 cameras on a skid steer robot facing opposite each other, of the options below, do you think one is better than the other?

zedA odom -----|

zedB odom -----|
                       
wheel odom --- |------> robot_localization --> rtabmap

zedA IMU ------|

zedB IMU ------|

(The odom provided by the zed wrapper node is visual-intertial)

or

zedA ----\
              ----> rtab visual odometry---\
zedB ----/                                           \
                                                           \
wheel odom ---------------------------> robot_localization ----> rtabmap
                                                            /
imu -----------------------------------------/
Reply | Threaded
Open this post in threaded view
|

Re: Best approach to fuse odometry?

matlabbe
Administrator
The advantage of the second approach is that both cameras are used for odometry, so better field of view. It won't be necessarily more accurate, though more robust to occlusions.

With the first approach, you should make sure you can transform zed odometry in the base frame of the robto, the frame_id used by wheel odometry. With rtabmap, we can do that.