Ask Your Question

Using AMCL without wheel odometry (only laser + IMU)

asked 2012-11-26 20:12:16 -0500

Astronaut gravatar image

updated 2012-11-27 00:10:00 -0500


I gave a question regarding using some data from my sensor package. I have a sensor package of IMU, Laser rage finder and Camera in my robot (its actually electric wheelchair).

For my robot localisation Im using only individuals laser scans and amcl. But my amcl jumps and my results are not so good. For example when Im calculating some parameters like velocity or distance to some object the results are not so good. Im using IMU data only in for the ICP in the laser scan matcher package. But for other purposes not.

So my problem is how to improve the results?? For example for my linear velocity parameters im using exclusive the amcl pose. But how to improve that using IMU data or for example extended kalman filter. I dont have any odometry. My odometry is all based on the laser. In that way is my pose estimated, only using laser and amcl.

So how to improve the robot heading, motion estimation based on the sensor package I have. So with laser scans, IMU and camera (for the kinect), how to get a better results in sense of motion estimation, heading, and obtain some parameters like linear and angular velocity. Any help??


edit retag flag offensive close merge delete

3 Answers

Sort by » oldest newest most voted

answered 2012-11-27 02:03:31 -0500

updated 2012-11-27 07:56:14 -0500

Provided you have a high update rate LIDAR (or your robot travels relatively steady and slowly) you can try hector_mapping. As can be seen in the video on the linked page, that can work pretty well while using no odometry at all. So far I had pretty positive feedback by numerous people using it on robots without odometry. The "localization only" mode isn't implemented right now, but having localization through SLAM is probably better than not having localization at all :)

Alternatively you could also try to fake odometry for AMCL either by using the laser_scan_matcher, by using imu data and maybe also desired velocity commands. The latter essentially means generating odometry by converting your cmd_vel commands to fake measured data. This might or might not improve AMCL performance, depending on how closely your robot can follow the motion commands you provide.

edit flag offensive delete link more



Here comes the hugely overkill approach if you really need localization instead of SLAM: Use hector_mapping to produce the odometry transform and feed that into amcl.

dornhege gravatar image dornhege  ( 2012-11-27 02:11:14 -0500 )edit

Now that you talk about it, hector_mapping actually can write out odometry using the undocumented "pub_odometry" parameter, which leads to odometry getting published on the "scanmatch_odom" topic. Feeding that into robot_pose_ekf could work (never tested it though)

Stefan Kohlbrecher gravatar image Stefan Kohlbrecher  ( 2012-11-27 02:22:20 -0500 )edit

Hehe, "hugely overkill" describes it pretty accurately... nice to know that hector_mapping can do it, though! +1 for the idea of using the desired velocities, and for suggesting hector_mapping

Martin Günther gravatar image Martin Günther  ( 2012-11-27 07:46:07 -0500 )edit

so i can use hactor_mapping package , than publish odometry on that topic. And than feeding it into robot_pose_ekf. So I will use hector mapping and robot_pose_ekf instead of using IMU and AMCL? OR I understand wrong??

Astronaut gravatar image Astronaut  ( 2012-11-27 11:20:31 -0500 )edit

Im bit confuse now. So what is the difference between using hector mapping + AMCl and hector_mapping +robot_pose_ekf. I get a bit confuse. Can somebody explain to me, please?? Or should I post that as a new question??

Astronaut gravatar image Astronaut  ( 2012-11-27 14:30:36 -0500 )edit

And also Martin said to use robot_pose_ekf if I have access to the wheel encoders. But I already said that I do not have any encoders. I do not provide such type of odometry. All is laser based.

Astronaut gravatar image Astronaut  ( 2012-11-27 14:32:21 -0500 )edit

What you should try first is just hector_mapping, to get an idea of how well it works for your robot. What would also be possible is generating odometry using hector_mapping and feeding that into robot_pose_ekf along with your IMU data, which in turn generates fused odometry for AMCL.

Stefan Kohlbrecher gravatar image Stefan Kohlbrecher  ( 2012-11-27 19:10:15 -0500 )edit

Ok. Thanks. Is there any tutorial or example how to use robot_pose_ekf and IMU with AMCL??

Astronaut gravatar image Astronaut  ( 2012-11-27 20:06:35 -0500 )edit

answered 2012-11-26 22:16:37 -0500

Claudio gravatar image

First of all you should give your question a title pertaining to the content. And yours is very deceiving as you are not even talking about ROS here.

About your question you already have you answer: you have an IMU and you don't use it to correct the odometry, so use it.

Your AMCL is based essentially on the IMU which (unless it's a very expansive one) does a really awful job at providing movement estimations. So since you're going to filter IMU and odometry, use this for the AMCL.

If you don't have odometry, then you're in for a lot of headache. Get two encoders on the wheels.

A partial workaround would be a very precise SLAM running off the laser, but I don't know how much better could it be with jumpy positioning.

edit flag offensive delete link more


I do not have any wheel encoders. As I already said im not using any odometry, so I do not have any encoders. All is laser scans based. And im using only IMU for the ICP. So how can I improve the performance with IMU and laser without using an odometry??or the best way is to use an encoders and ekf?

Astronaut gravatar image Astronaut  ( 2012-11-26 23:06:55 -0500 )edit

so how to use IMU to correct the odometry?? Any help??

Astronaut gravatar image Astronaut  ( 2012-11-26 23:14:00 -0500 )edit

The AMCL already uses a particle filter, and that gives the best results. You may try (if you can) to get higher data frequency from the laser ranger: this should at least give you more fluid results.Think about putting encoders on the wheels. Customize the AMCL to also take IMU data as input.

Claudio gravatar image Claudio  ( 2012-11-27 00:46:25 -0500 )edit

ok. so how to customize the AMCL to use IMU data??

Astronaut gravatar image Astronaut  ( 2012-11-27 00:52:04 -0500 )edit

Just as a note for people who might wonder about the first sentence: the title was "subscribe to a ros topic" before I changed it.

Martin Günther gravatar image Martin Günther  ( 2012-11-27 07:49:28 -0500 )edit

answered 2012-11-26 21:31:10 -0500

updated 2012-11-26 23:27:34 -0500

Do you have access to the wheel encoders? If yes, I would propose using the robot_pose_ekf package.

Edit in reply to comment: The EKF's job is to fuse several independent sources of information, in this case wheel odometry and IMU data. Since you only have IMU data, there is nothing to fuse; using the laser_scan_matcher, as you seem to be doing, is probably your best hope. Still, as @Claudio writes, you're in for a rough ride without wheel odometry.

edit flag offensive delete link more


Is it possible to use robot_pose_ekf only with laser scans and IMU??is that better estimation than an amcl???

Astronaut gravatar image Astronaut  ( 2012-11-26 23:17:29 -0500 )edit

Im using laser scan matcher package. and also amcl. But still the results are not satisfied.

Astronaut gravatar image Astronaut  ( 2012-11-26 23:42:55 -0500 )edit

so amcl is using the laser scan matcher topics???

Astronaut gravatar image Astronaut  ( 2012-11-26 23:44:08 -0500 )edit

So you suggest to use robot_pose_ekf and laser scan matcher ?? At the moment Im using amcl node and laser scan matcher.

Astronaut gravatar image Astronaut  ( 2012-11-26 23:58:19 -0500 )edit

AFAIK robot_pose_ekf doesn't do any scan filtering. It just "merges" probability distributions. You best choice would be to use laser_scan_matcher to provide an odometry transform and pass that into amcl. Alternatively if full SLAM would be OK, look at hector_slam.

dornhege gravatar image dornhege  ( 2012-11-26 23:58:55 -0500 )edit

but Im using amcl and laser scan matcher. But the results is still not satisfactory.

Astronaut gravatar image Astronaut  ( 2012-11-27 00:06:18 -0500 )edit

I think you are close to the technical limits of your approach. If you want better results, add wheel encoders and provide real odometry or don't use AMCL.

Lorenz gravatar image Lorenz  ( 2012-11-27 00:22:41 -0500 )edit

so what otion do I have if I do not use AMCl and without adding encoders?? So at the moment I can not add encoders. Whats the best I can do without encoders??

Astronaut gravatar image Astronaut  ( 2012-11-27 00:27:57 -0500 )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



Asked: 2012-11-26 20:12:16 -0500

Seen: 7,497 times

Last updated: Nov 27 '12