Testing - parmsco/Line-Following-Robot GitHub Wiki

Robotic Testing and Experimentation: Testing is a vital part of an extensive design process. Throughout the entire semester, the group made sure to adequately experiment and test the various prototypes that were created to ensure that the final robot was as efficient as possible. Each prototype that the group designed had various flaws and issues that needed to be addressed, but these flaws were originally detected through testing and experimentation. The process of testing and refining the product is a never-ending cycle with endless improvements, but unfortunately, the group only had one semester to make the robot as efficient as possible. To counteract this short time span, the group enacted a three-step series of tests that would ensure a high-performance outcome. These steps consisted of an endurance test, effort analysis, and code refinement. Three types of testing were conducted while the design process of the robot was ongoing. The first type of test that the group performed was the endurance test. The objective of the endurance test was to accurately determine the probability at which the robot could complete a certain number of laps within a given timespan, 5 minutes in this particular case. By testing multiple times on each track, the group was able to determine a rate of failure of the robot over all tests. The second form of testing that the group was determined to complete was the effort analysis. The effort analysis was used to determine how much power the robot needed to complete various tasks. The power or strength of the robot was found through two tasks. The first of which was to test the carrying capacity of the robot. The second was to test the force output. or pushing power, that the robot could exhibit. By testing the effort that the robot uses to move and carry objects, the group would be able to better understand how the robot will function during the competition. The final and arguably most important form of testing the group worked through was the code refinement. Code refinement was necessary to ensure that the entire robot functioned properly. It was what controlled everything from the motors to the line following sensors. Without the refinement of the code, the robot would not work properly on competition day. This code refinement consisted of filtering the input data collected from sensors so that it could more efficiently control the robot and debugging so that the code itself works properly when used autonomously during the competition. With each form of testing that the group conducted, it was clear that the robot functioned, reacted, and operated properly during the competition.

Endurance Test: One of the things the group tested for while refining the prototype was reliability. It was important that the robot could reliably make it around the track. In order to test this, the team performed 4, 5-minute tests on each different track. This ensured that the robot was able to reliably and consistently make multiple laps around the track. For each of the tests performed, a team member recorded the number of laps. The data that was recorded is also useful for determining the relative velocity compared to other robots that competed in the competition. If the group is able to determine where the robot stands compared to others in terms of speed and consistency, then necessary improvements can be made in each specific section. For example, through testing, the group found that the velocity of the robot was slow relative to other robots, so the group fixed this problem by adding more batteries to the power supply to increase the voltage. This increase in voltage then increased the robot’s speed. These improvements helped the robot become more consistent and helped the robot win the competition rounds more reliably.

Effort Analysis: In order to verify the robot’s performance, two crucial tests were made that involves weight and the robot’s yielding strength. The two tests performed were the carrying capacity and the force output. Both tests helped decide the group’s overall weight and power for the competition.
The first test factored the carrying capacity. Due to the QFD, the delighted targeted weight for the robot should be at three pounds; and unfortunately, the robot only weighs about 1.7 pounds. Therefore, the group tested the robot’s own strength by adding more weight to it in order to observe its overall performance on the track. The group tested this by recording how fast their robot could complete one lap on the track while adding different weights to the chassis. The group decided to have increments of 0.3 pounds because that amount of weight could make a noticeable effect on the robot. From these results, the group decided that even though being at a heavier weight would help them be a roadblock in the competition, itis not worth decreasing their speed since their robot already doesn’t travel the fast. It is not good to have an even slower robot than they already did. Plus, the more weight that the robot endured, the harder it was to complete turns. Thus, the weight that the robot was already at is essentially the best for them because they can’t remove any more weight. The second test that was made was the force output. This tested the pushing power of the robot. To perform this test, the robot was placed at one of the starting points and a barrier was placed in the intersection. The barrier was different weighted blocks ranging from 0.5 pounds and 3 pounds due to the knowledge of the other group’s weights of their robots. This test also included the distance, time, and observation of how the robot could push the block. The end point was to the other intersection after the loop having a measure of 9 ft to the “finish line”. Due to the results and observations, the robot reduced its speed significantly once the barrier weighed more than the robot. The robot still managed to push the barrier to the finish line but it took a long time. This unfortunately stalled the motor which weakened its full power. When considering the competition, the opponent will not be stationary like a block, and it will be pushing a force as well so the group needs to take this into account. Overall, this test made the group understand their pushing power with their current robot.

Code Refinement:

Filtering The final form of testing the group completed was the code refinement. One form of code refinement is filtering. When the group was making and editing the code that would be the brain of the robot, we needed a way to have the mechanical and electrical sensors only detect what was needed. For example, the line following sensors needed to be filtered to only detect differences between black and white. If the sensors detected something other than black, then the robot would not properly follow the line that was placed on the track, thus resulting in a loss during the competition.

Debugging Debugging was a crucial part of the code refinement process. If the code was not working properly, then any of the sensors or motors used within the robot would have issues working efficiently. By debugging and correcting the code, the group was able to maintain consistency and reliability during each round of the competition. For example, by changing the turning and pivot speeds of the motors, the group was able to determine how the robot corrects itself when it loses the positioning of the line.