The objective of this project is to implement a Particle Filter (a.k.a. Monte Carlo Localization). I will work entirely in simulation to validate my algorithm. My job is to implement a particle filter which takes robot odometry measurement as motion control input and marker measurement as sensor input.

I use the grid world map with the addition of localization markers on the wall of the arena. The grid world has the origin (0,0) at the bottom left, X axis points right and Y axis points up. The robot has a local frame in which the X axis points to the front of the robot, and Y axis points left of the robot.

The localization markers will appear on the walls of the arena and represent the physical markers used in previous projects. The direction the marker is facing is defined as the positive X direction of marker’s local coordinate frame, and Y points left of the marker. The simulated robot is equipped with a front-facing camera with a 45 degrees field of view (FOV), similar to Cozmo. The camera can see markers in its FOV. The simulation will output the position and orientation of each visible marker, measured relative to the robot’s position. The simulated robot will also report its odometry estimates.

The odometry measurement is the relative transformation of current robot pose relative to last robot pose, in last robot’s local frame. To simulate noise in real-world environment, the odometry measurement includes Gaussian noise. In addition to the noise in the odometry measurement, the marker detection may also be noisy. This is to simulate poor lighting conditions, camera issues etc. The marker detection is noisy in two ways. Either the robot could detect “spurious” markers or “drop” the correct markers. This corresponds to false positives and false negatives in my marker detector.

Built With

Share this project:

Updates