0
$\begingroup$

Rosanswers logo

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.


Originally posted by Rick Armstrong on ROS Answers with karma: 567 on 2017-10-17

Post score: 0

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

It's generally recommended to use an EKF to integrate the IMU with odometry before publishing to the tf tree. I recommend checking out robot_localization


Originally posted by tfoote with karma: 58457 on 2017-10-17

This answer was ACCEPTED on the original site

Post score: 1


Original comments

Comment by Rick Armstrong on 2017-10-17:
We're currently using robot_localization, but just to publish Odometry messages for move_base. We've set /robot_localization/publish_tf to false, because the odometry from the Jackal is so poor, that we went to laser_scan_matcher to publish the odom->base_link transform.

Comment by Rick Armstrong on 2017-10-17:
Since we're just looking for roll/pitch, I was hoping that sticking the IMU in the chain using imu_filter_madgwick would make sense, just to get the point cloud oriented correctly.

Comment by tfoote on 2017-10-17:
You can go ahead and insert the data anywhere in the chain that you want. However I stand by my suggestion to use a filter to fuse the data. I suspect that your best solution would be to add the output of the scan matcher as a sensor input into the localization algorithm.

Comment by Rick Armstrong on 2017-10-17:
Makes sense, thanks.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.