DEV Community

Cover image for Sharpen Your Robot’s Eyes – Mastering ROS2 Sensor Fusion with EKF & AMCL
Robotisim
Robotisim

Posted on

Sharpen Your Robot’s Eyes – Mastering ROS2 Sensor Fusion with EKF & AMCL

When mapping with LiDAR and SLAM, you might notice some inconsistencies—walls wobble, or the robot drifts slightly. This isn’t a problem with your LiDAR; it’s a sign that your robot needs sensor fusion. By combining data from sensors like encoders, IMUs, and LiDAR, ROS2's EKF (Extended Kalman Filter) and AMCL (Adaptive Monte Carlo Localization) work together to stabilize your robot’s localization.

Why Sensor Fusion Matters

Every robot needs to answer the critical question: "Where am I?" Sensors like encoders, IMUs, and LiDAR each provide valuable data but come with weaknesses—wheel slippage, gyro drift, and noisy scans. Sensor fusion blends these signals, creating more accurate and reliable robot positioning.

Getting Started with Sensor Fusion

To implement sensor fusion in ROS2, install the robot_localization package:

bash

sudo apt install ros-humble-robot-localization

For configuration, use this sample ekf.yaml to blend encoder and IMU data:
yaml

ekf_filter_node:
ros__parameters:
frequency: 50
sensor_timeout: 0.1
two_d_mode: true
publish_tf: true
map_frame: map
odom_frame: odom
base_link_frame: base_link
odometry0: /wheel_odom
imu0: /imu/data

Launch with:
bash

ros2 run robot_localization ekf_node --ros-args --params-file ekf.yaml

Adding AMCL for Better Localization

While EKF handles sensor fusion, AMCL helps the robot align with a pre-built map using LiDAR scans. Use this to launch AMCL:
bash

ros2 launch nav2_bringup localization_launch.py map:=/path/to/map.yaml

AMCL refines your robot’s pose using real-time data from LiDAR, keeping your robot accurately positioned within the map.

Tuning and Testing

Tuning both EKF and AMCL parameters is key to improving performance. For EKF, adjust the frequency and sensor_timeout values, and for AMCL, tweak laser_max_beams and min_particles.

The Real Power of Sensor Fusion

To test your setup, drive the robot manually. You'll notice that IMU and encoder data alone lead to drift, but when you enable sensor fusion with EKF and AMCL, the robot’s pose stabilizes and remains accurate.

Want to Learn More?

Now that you have stable localization, it’s time to move on to path planning and obstacle avoidance. If you’re interested in mastering ROS2 for mobile robots, check out our Mobile Robotics Engineering Course at Robotisim. Learn the skills to create smart, autonomous robots today!

Top comments (0)