The rover was designed using Onshape, enabling easy sharing access of the CAD model. The design was guided by the requirements of 3 equally spaced wheels, space for a block-gripper, and being as compact as possible. Ease of assembly and electrical wiring were also considered. A hexagonal shape re-occurs throughout the rover to maintain a cohesive design language. The design is made up of 3 levels, with the heaviest components on the base plate to maintain a low centre of gravity.
The base plates were laser cut out of 3mm plywood and the board mounts, sensor mounts and gripper were 3D printed and fastened to the plates using screws.
The gripper was designed using 2 servo motors and a linkage system. A cover was placed over one of the servo motors in order to attach the linkages and the gripper hands. The hands were allowed to slide freely over a 3D printed rail, spanning a 1"-3" distance, to be able to capture blocks of varying sizes.
Key electrical components of the rover included Time of Flight (ToF) sensors, Servo and Stepper motors, an ESP32, a CNC Shield on an Arduino Uno, a Battery and a Buck Converter for power distribution. The rover's localization algorithm consisted of a particle filter that allowed the rover to localise itself within the maze after completing one full rotation. The rover’s pathfinding involved creating a graph representation of the maze, finding the closest node, and navigating using a combination of straight-line movements and rotational adjustments.
The rover was tested within the context of 3 milestones:
Milestone 1 - Obstacle Avoidance: The rover used ultrasonic sensors to detect walls and correct its path, albeit with minor collisions. The size of the robot was found to be too large overall, so a redesign was carried out to minimize the footprint of the rover.
Milestone 2 - Localization: Implementation of a particle filter, with limited trial success due to ultrasonic sensor inaccuracies. Time of flight sensors were chosen to improve accuracy.
Milestone 3 - Integration: Successful localization and object pickup with the gripper. After implementing bug fixes, the rover was able to autonomously drive through the maze.
Key takeaways from the project included the relative accuracies of different distance sensors, the implications of using stepper motors, cable management strategies and the importance of managing time to allow adequate time for troubleshooting.