I have a 3 wheeled differential drive robot (2 wheels + 1 castor) which has a 9 DOF IMU (3d acceleration, heading and angular velocities) and a 2D lidar (RPLidar). I have a pre-computed map.
To localize the robot I am using the ROS package [amcl](http://wiki.ros.org/amcl). AMCL requires 3 inputs:
1. 2D Laser scan data
2. odom -> base_link transform. This is typically published by an odometry source.
3. Map
Odometry is estimated using the ROS package [robot_localization](http://wiki.ros.org/robot_localization), which uses Kalman filters to fuse data from the IMU's 3 sensors - accelerometer, gyroscope and magnetometer. The localization works reasonably well at slow speeds. However sometimes the estimated position is way off the actual position.
My questions :
1. Is this the right approach to perform localization using an IMU and 2D lidar?
2. Will the odometry estimated using the IMU data be good enough for amcl?
↧