Correct way to insert IMU into tf chain for wheeled robot?
What's the right spot in the tf tree to insert an IMU for a small wheeled robot?
Background:
We're running AMCL on a Clearpath Jackal, equipped with a Velodyne VLP-16 LiDAR. We've had the little beast autonomously running around our office for a while now, and it's time to move outdoors, to a _relatively_ flat gravel lot. I say "relatively", because it's not uncommon for the robot to bounce around and tilt up to +- 20 degrees or so while scrambling over the gravel. When this happens AMCL gets hopelessly lost, since we're using pointcloud_to_laserscan to get a 2D slice that's fed into laser_scan_matcher and AMCL. When we're tilted, the 2D assumption breaks (as can be seen in RViz, because the point cloud doesn't tilt). The Jackal comes with an IMU, but the tf chain looks like this:
map->odom->base_link->chassis_link->IMU
The part of the chain that connects up to the VLP-16 looks like:
map->odom->base_link->chassis_link->VLP-16
I _think_ the right thing to do is this:
map->odom->base_link->IMU->chassis_link->VLP-16
I'm about to give it a whirl, but I'd appreciate any advice or experiences that others can offer.