What is the challenge about?
The challenge we were presented with was to complete a course laid on on the floor of the Robotics classroom. It is composed of several lines of tape and we were given the task to have our robot follow the line as closely as possible and return back to the starting position which we were allowed to choose.
What did you know before the working on the challenge? Prior to this challenge, I had the knowledge that we could control the motors to make the robot move and turn at different speeds. However I previously I only had the capability of using
Prior to this challenge, I had the knowledge that we could control the motors to make the robot move and turn at different speeds. However I previously I only had the capability of using time to judge when to change a robot’s action. After learning about shaft encoders, the result is that the traveled distance is more consistent. This is due to the fact that usage of the robot drains the battery power, and a lower battery power results in the motors traveling slower when given a set speed.
What are the technical difficulties for completing the challenge? List them out and explain why they are difficult. Firstly, when we received our robot, the cables were placed somewhat randomly and in the first
Firstly, when we received our robot, the cables were placed somewhat randomly and in the first unit this was fine. However in the 2nd unit when we were given the option to use more parts of the robot (shaft encoders) we had to rewire the entire robot to match the premade names in the Vex Cortex code. Another issue was that due to manufacturing faults and numerous other factors, the left and right wheel motors did not move
Another issue was that due to manufacturing faults and numerous other factors, the left and right wheel motors did not move in the exact same speed when coded to, thus our robot was always driving towards the left when we program it to go straight. We compensated for this by programming the left motor to be quicker and the right motor to be slower. The only problem was when the battery power decreased the motors would again move in a different ratio from each other and thus we would need to keep adjusting the values. A third issue was that due to the robot being in a physical world, there would definitely exist a range of where a robot will deviate from the “ideal” attempt. Andrew and I had created a function for turning a set number of degrees and a function for driving straight a set number of centimeters. This gave us a lot more accuracy in our program as we only had to enter the function and the degree/distance instead of typing out the entire code every time. From
A third issue was that due to the robot being in a physical world, there would definitely exist a range of where a robot will deviate from the “ideal” attempt. Andrew and I had created a function for turning a set number of degrees and a function for driving straight a set number of centimeters. This gave us a lot more accuracy in our program as we only had to enter the function and the degree/distance instead of typing out the entire code every time. From this we found that in multiple tests the robot would usually turn slightly more or slightly less than what we programmed. For example, if an angle was measured at 91 degrees the value we put into the code could range from 80 to 100. There was no real way to adjust for this and we only had to pray we had the perfect run once in a while.

Describe the approach(es) (e.g. time vs shaft encoder) you used throughout/during the process. The only approach I used for the whole process for measuring was using the shaft encoders. This is because while time measures how long the robot moves the encoders measure how much each wheel rotates to the exact degree.
The only approach I used for the whole process for measuring was using the shaft encoders. This is because while time measures how long the robot moves the encoders measure how much each wheel rotates to the exact degree. As the robot was run from a battery and not a direct connection to a constant power source, the battery power would have an effect on how the robot ran. A lower battery power would have meant that the robot moved slower. If I had used this solution the robot would still move the same time even if it travels slower or quicker, making it nearly impossible to have a constant result, while the shaft encoders would measure the same value even if the motor was moving slower.
Did you use the virtual world to test your program? Was it useful?
Initially, when we created the function for turning, we tested in the virtual world to see if the function worked. We did this by first making the robot turn only 30 degrees, then in the next test programmed it to turn 300 degrees. Though the robot may have not turned the desired degrees, the test was to find out if the program responded to different values inputted, which it did. Then the only value we had to alter was the constant that our entered variable would multiply by to have the robot turn the correct number of degrees. The virutal world was useful in making sure our program worked before having to use time to download the program into the physical robot and have time to test it in the real world, saving some time.

What have you learned in the process? Any new insight?
I learned from this process that robots are not perfect and have imperfections. A code we intend to work every time may only work a fraction of the time without any human input or artifical intelligence to process results. I have learned better how to code vex squarebot, how the vex system works and specifically the shaft encoders on the robot to measure the rotations of the wheels. This unit helped me in learning the movement of robots and the current limitations of machines.