Simultaneous Localization and Mapping (SLAM)
These projects were for Dr. Joshua Mangelson’s course on SLAM. The code is available on Bitbucket.
Occupancy Grid Mapping
To generate the data used in this lab, we simulated a robot with 20 laser range finders spread out at various angles.
Each of these laser range finders is directed in a slightly different direction on the front of the robot. We then navigated the robot through a simulated building, entering each room one-by-one.
At each time step we recorded the current “ground-truth” pose of the robot as well as the range returned by each of the 20 laser range finders when the robot was at the recorded pose.
To accomplish the mapping, I implemented a laser range finder model that updates each cell with the log-odds of the cell being occupied. The log-odds are updated based on the inverse sensor model and the range data from the laser range finder. The inverse sensor model is a function that takes in the range data and the pose of the robot and returns the probability of the cell being occupied given the range data. The log-odds are then updated based on the probability of the cell being occupied.
Here are my results:
EKF/UKF Landmark Based Localization
I implemented both an EKF and UKF in order to localize the robot using odometry measurements and bearing-only measurements to landmark features.
The setting was in a robot soccer arena with individially landmarks with unique IDs.
And here are my results with the robot driving around the soccer field.
EKF:
UKF:
EKF Localization and Mapping (Full SLAM)
This project was implementing an EKF-based SLAM algorithm in simulation with known data association and without known data association in a simulated robot soccer arena. (see above)
Then we tested the algorithm on the Victoria Park data set.
Simulation with Known Data Association
The robot is driving around an environment obtaining observations to a number of landmarks. The position of these landmarks is not initially known, nor is the number of landmarks. It is assumed that when the robot observes a landmark, you know which landmark it has observed (i.e., you have perfect data association).
Simulation without known Data Association
Now, I don’t assume known data association, so I implement an incremental maximum likelihood data association algorithm to determine the data association.
Victoria Park Data Set
Now we test the algorithm on the real-world Victoria Park Dataset.
Here are the results of the EKF SLAM algorithm on the Victoria Park data set.