This was a personal project that I undertook after taking Sebastian Thrun's self-driving course on Udacity. My goal was to implement what I learned by building an autonomous mobile robot using the basics of SLAM (simultaneous localization and mapping). The Ultrasonic Mapping Robot uses an Arduino, a servo motor, and an ultrasonic sensor to measure distances while scanning 180 degrees. The measurements and corresponding angles are sent to a computer via Bluetooth and plotted in a GUI controlled by Processing. The GUI is used for path planning and localization based on predicting future measurements.
Scan and measure
Send measurements to my computer
Plot measurements
Compare predicted anchor points to actual
Move the location of the robot on the map to minimize anchor point errors
Plan a path to the next measurement location
Update location of the robot
Generate predicted anchor points
Send motor values and time delays to the robot
Move the robot to next measurement location with the corresponding motor values
Stop motors
Repeat steps 1-11
Displayed and updated map using Processing.
Real time measurements from the robot were used to update the map.
Objects in black and free space in white.
Lowered opacity to represent measurement uncertainty.
Measurement width based on Ultrasonic sensor data sheet.
The robot’s path was determined by evaluating the pixels in map.
The path changed to avoid any black pixels.
The path was translated into motor speeds then sent to the robot.
The simulations were created using Processing.
Implemented the basics of robotic localization, by using Bayes’ Theorem.
Created a Kalman filter by predicting measurements based on the robot’s movements.
Adjusted the robot’s location within the map based on measurements taken after executing the previous maneuver.
This was a fun project that helped me better understand and practice what I learned from Sebastian Thrun's self-driving course on Udacity. Implementing the predicted anchor points to minimize the error between my predicted model and the actual robot made a huge improvement on the accuracy of the map.
In the future, I would like to use a LIDAR with a depth camera for more accurate measurements and the ability to create a 3D model. I also learned that it would be beneficial to set up an architecture that supports multi-processing, leading to a continuous system sequence.