Ask Your Question
0

Correct way to insert IMU into tf chain for wheeled robot?

asked 2017-10-17 10:42:41 -0600

Rick Armstrong gravatar image

updated 2017-10-17 10:58:37 -0600

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.

edit retag flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted
1

answered 2017-10-17 11:08:54 -0600

tfoote gravatar image

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

edit flag offensive delete link more

Comments

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.

Rick Armstrong gravatar imageRick Armstrong ( 2017-10-17 11:38:43 -0600 )edit

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.

Rick Armstrong gravatar imageRick Armstrong ( 2017-10-17 11:40:13 -0600 )edit

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.

tfoote gravatar imagetfoote ( 2017-10-17 11:53:07 -0600 )edit

Makes sense, thanks.

Rick Armstrong gravatar imageRick Armstrong ( 2017-10-17 12:04:53 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

2 followers

Stats

Asked: 2017-10-17 10:42:41 -0600

Seen: 386 times

Last updated: Oct 17 '17