Our area of focus was implementing Augmented Monte Carlo Localization (aMCL) and parameter tuning.
Augmented Monte Carlo Localization (aMCL) is a Monte Carlo Localization (MCL) that introduces random particles into the particle set based on the confidence level of the robot's current position.
We would conduct five trials each for MCL and aMCL and keep track of the number of times they successfully localize. For the instances where localization was successful, we would kidnap the robot and see if could successfully localize. If more localization were successful, we would consider the changes to have improved the algorithm.
Number of particles : 200 Monte Carlo (Not augmented) Video Result: Failed to localize Trial 1: Failed - Started from a symetric location Trial 2: Success, when kidnapped failed to localize - Started from the most distinct location Trial 3: Success, when kidnapped failed to localize - Started from the middle Trial 4: Failed - Started from a symetric location Trial 5: Failed - Started with sensor facing straight wall Augmented Monte Carlo - alpha_slow = .4 - alpha_fast = .7 Video Result: Trial 1: Success, when kidnapped successfully localized - Started from a symetric location Trial 2: Success, when kidnapped failed to localize for a while, but then localized - Started from the most distinct location Trial 3: Success, when kidnapped successfully localized - Started from the middle Trial 4: Success, when kidnapped successfully localized - Started from a symetric location Trial 5: Success, when kidnapped successfully localized - Started with sensor facing straight wall
Side-by-side video Comparision:
MCL: Original version could localize 2 out of 5 times. The successes happened in the instances when the robot's
start position was distinct in the map. The failures happened when the robot's start position was a symmetric part
of the map. The robot failed 2 out of 2 times to localize when kidnapped.
aMCL: Robot was able to localize 5 out of 5 times. The robot was also able to localize after being kidnapped 5 out of 5 times. An important note is that the robot took much longer to localize with this method. But once localized it tended to stay localized although there was still a possibility that it could lose localization. It was also harder to decide if or when the robot correctly localized by only looking at the particles.
We implemented aMCL (algorithm described on page 218 of Probabilistic Robotics)
in file pf.py.
For this algorithm, we set αslow to 0.4 and αfast to 0.7.
We saw a significant improvement in performance in terms of localization and re-localization. MCL was overly confident about its position, even if it was incorrect, while aMCL can detect the change of confidence level and add random particles accordingly to compensate for this. As a note, aMCL's confidence level decreased near the open and symmetric part of the map. However, this algorithm takes longer to localize and when the robot is uncertain about its location, the algorithm overly adds in random particles. We addressed this problem by tuning αslow and αfast and by thresholding the maximum proportion of random particles to 25%.