I spent three weekends getting Nav2 running on a rover built from hobby parts. Here's the short version so you don't repeat my mistakes.

The hardware

  • A 4WD chassis with hall-effect encoders
  • A Raspberry Pi 5
  • An RPLIDAR A1

The first mistake: odometry

I trusted wheel odometry alone. On carpet, the rover was convinced it had travelled twice as far as it had. Fusing the IMU with an EKF fixed most of it.

ros2 launch robot_localization ekf.launch.py

What finally worked

A diff_drive_controller, an EKF fusing wheel odom and IMU, and — critically — retuning the local costmap inflation radius to match the actual rover footprint rather than the default.

If your robot oscillates in doorways, your inflation radius is almost certainly wrong.

It's not glamorous, but it works, and the whole build came in under $200.