Device Description - parmsco/Line-Following-Robot GitHub Wiki
Concept Development: While brainstorming ideas for this project the group came up with several possible solutions. The group considered navigation through the track to be the problem that would have the greatest effect on the rest of the robot’s functions and the most critical function of the robot as failure to navigate the track would result in a quick loss of the competition. In order to solve the problem of navigation, the group considered wall following, spring or collision based guidance systems, utilizing sonar sensors, line following sensors, or sensors triggered after a collision with a wall. The group decided through the use of a belief map and through learning more about the competition, that the best of these options was the line following sensors combined with sonar sensors. The idea was to use the line following sensors as the main source of navigation around the track and then switch to the sonar sensors if the line following sensors lost track of the line. In this way, if the group were in a collision with a competitor or the line had become damaged through other teams testing the robot would be able to find the line again and continue the competition. In order to refine the code and test the sensors that the group had chosen several prototype platforms were used.
Prototypes Throughout the design process, several testing platforms were used in order to test various sensor types to fine tune the Arduino code that controlled the device. These platforms culminated in the final device made of 3D printed material as well as wood and Kevlar E-Glass Carbon (KEGC). In the beginning, the sonar sensors, line following sensors, and eventually bump sensors were tested using an Arduino connected to a breadboard which was properly wired to each kind of sensor. After the code that controlled each sensor and motor was understood a wood frame prototype was constructed with a priority placed on accessibility to each of the components and ease of construction. The final robot was constructed after the code was finalized and adjustments to the batteries and motors had been made.
Breadboard Prototype Setup This setup was used in order to learn the code and perform preliminary testing with the sonar, line following, and eventually bump sensors. Power to the Arduino was provided through the USB wire connected to the laptop which also allowed for quick changes to the code running on the Arduino to be made. The code for the Sonar sensors as described in more detail in the Engineering analysis portion of this report was designed to compare the distance between two walls on either side of the breadboard and if the distance measured by the sensor on the right of the breadboard was longer than the distance measured from the left sonar sensor than an LED on the left side of the breadboard would light up signifying that when used on the final device voltage would be added to the left motor in order to increase its speed and turn the robot to face the right. Through testing performed with the breadboard, it was decided that sonar sensors would not be utilized on the final robot. This decision was made for several reasons. The sonar sensors were able to begin accurately recording distances greater than 4 cm away. distances less than 4 centimeters would incorrectly read as very long distances because the sound emitted from the sensor was unable to bounce off the wall or object and return to the receiver. Unfortunately, the distance from the edges of the robot to the walls of the track was between 0 cm and 7.6 cm meaning that for most of the time the sensors would not give reliable data. For this reason, the Sonar sensors were not used in the final device. Through online research, it was discovered that we could utilize bump sensors which would be able to detect when they came in contact with the border of the track. These sensors would not allow us to correct the navigation during the small window of space between the line following sensors losing the line and before the robot bumped into the wall of the track but they would serve the navigation needs.
Prototype 1: The initial prototype of the robot consisted of a few sheets of cardboard and duct tape. This was a great proof of concept model and let the team discuss sensor and electronics positioning. The group decided to use a three-layer design for this prototype and all following designs. The three separate layers split up the robot into three sections; the top was the power supply and distribution layer, the middle included the motors and electronics and the bottom layer held all of the robot’s sensors.
Prototype 2: The first fully operational prototype that the group used as a test platform consisted of three layers. The base layer hosed the motors, and line following sensors. The second layer housed the Arduino microcontroller and motor shield. The top layer was used to contain the batteries for easy access. This prototype allowed us to test the line following sensors and tune the code in order to get the robot to reliably navigate the track. This prototype was made of Baltic birch plywood. This model was fully functional and included many designs and ideas used in the final model. The wooden prototype could have been the group’s competition robot but the group wanted to implement composites into the final product.
Prototype 3: The third design consisted of KEGC (Kevlar E-Glass Carbon Fiber) panels and 3D printed spacers. This design looked very good but was exactly 5 inches wide and did not permit the bumper sensors enough contact with the wall to be switched. The KEGC material was much stronger than the design required so its use was decided to be non-mandatory.
Final Robot: The final design was a mashup of the second and third design. The KEGC material was thicker than the birch plywood so it created false readings which sent the robot off the line and into walls. Due to this, KEGC was only used as an aesthetic component on the top of the robot and the bottom layer from prototype two was put back on.