Robotics Control Systems


I worked on a semester-long project to build software control systems for a simple mobile robot. We used Matlab to develop a set of algorithms to enable simple autonomous object recognition, tracking, and pathing. We used a Matlab interface that simulated all of the robot instrumentation and hardware to aid in the development of our software. The goal was to be able to autonomously detect, move to, and pick up a series of blocks with the forlift on the front of the robot.

We began by implementing basic mechanical controls and implemented a PID control system to enable precise speed and directional control. We built upon this by using the onboard potentiometer to create an inertial navigation system that allowed for self-correcting movement and pathing. 

We filtered data from an ultrasonic sensor to detect the robot's surroundings and generate an estimated global position relative to the walls of the environment. Combining this with the inertial navigation system gave us a robot that was capable of short and long term position estimation and without compounding errors resulting in it getting lost. 

Ultrasonic data for object detection and localization

We added to this a trajectory generation algorithm that created smooth position and speed curves to move from our current location to our desired location with automatic corrections.


The final step was detecting the 'pallets' we were picking up. Using the ultrasonic data we detected edges in the environment and measured the distance between them to determine if what were were looking at was a pallet. The final robot was capable of fully autonomous basic locamotion, perception, and localization within the environment.