Sunday, October 4, 2020

Particle Filter to Determine 3D Position from Noisy Height Sensors

    Below are recordings of a "Mars Rover" agent that I'd programmed to determine its position and successfully navigate itself to the goal point using a particle filter. This is part of the "Artificial Intelligence for Robotics" graduate course at Georgia Tech.

    The agent builds a collection of particles with randomized parameters based on sensor noise and environment variables. It then weights the viability of each particle using a probability density function with the absolute height and radar to ground height. It resamples from the particle pool with replacement based on the weights, propagates them forward in time according to the agent's movement model, and randomizes some of the variables further.

    Once the particles have converged to a point that the standard deviation between their locations is low enough, the agent uses a weighted average of the particles to estimate its position. With this position, the agent calculates the turning angle to get to the goal point.

    The code for the mars rover and rendering was provided by GaTech; the code for the particle filter and ship's navigation strategy was written by me.

Add caption
Detection of the agent's position and navigation to goal point. 
Agent is red, particles are green/black, estimation is purple.

Detection of the agent's position, showing terrain height visualization. 
Agent is red, particles are green/black, estimation is purple.

Hyperparameter tuning based on trail runs (blurred for Academic Honesty Policy)