Hi,
I would start without visual and icp odometry first, to see if the drift is coming from your /odometry/filtered topic. Like in
demo_husky.launch, if you launch with icp_odometry:=false. If it is drifting, debug your robot odometry (maybe your IMU is drifting).
Why would you want to start visual odometry and icp odometry at the same time? One or the other is not enough? With rtabmap.launch, we cannot do that, it is one or the other to avoid TF conflicts.
It is possible to start icp_odometry and rgbd_odometry at the same time (by launching the nodes directly), but you should make sure topics are not sent on same name, and there are no TF conflicts. If you would want to do fusion of icp odometry, visual odometry and wheel odometry with robot_localization, you can set publish_tf=false for icp and visual odometry.
To use icp odometry, rtabmap should be built with libpointmatcher as stated
here.
cheers,
Mathieu