ARoD was a project done by a team of four Mechanical Engineering senior project students at San Jose State University. The purpose of this project was to design and build a fully autonomous delivery robot that can deliver food and supplies on the San Jose State University campus. The goal for the team was to have ARoD deliver food from the Student Union to the Martin Luther King Library completely autonomously. The team was succussful in completing this goal and a video of the delivery route can be seen in the following video.
The robot itself was designed and built completely from scratch by the team. The drive system is a ackermann-based system that features a different gearbox and an ackermann steering mechanism. The drive system chassis is mach made from t-slot extrusions and 3D printed parts. The main body chassis features a secure locking food compartment and housing for electronics and sensors. The main aesthetic to the main body of ARoD is the LED panel which displays eyes giving the robot personality and friendliness. The main body ws built with acrylic plastic and 3D printed parts.
The main code can be seen in the graph below. The region colored in red is the food delivery loop, and the blue is the navigation and obstalce avoidance loop. All of the code was written in multiple modules that feature functions for sensors and logical calculations. The Waypoint_Navigation.py is the master code script that is run on ARoD's food delivery process.
We created a graphical user interface to help with testing and remote control of the robot. Using the GUIZero python library this GUI feature buttons to steering, opening and closing the food compartment door, turning on and off the drive motor, and motor/ESC calibration. Code for the GUI can be found in guizero_gui.py
The robot uses a magnetometer for heading information, and the sensor we used was the LSM9DS1 from Adafruit. To get usable heading direction information the sensor had to be calibrated for magnetic interferences. We created the Magnetometer_Calibration.m MATLAB script to read in raw sensor data and calculate the XYZ hard iron offsets. An example of the calibration can be seen in the following graphs.