Lesson 1 - Importance of Programming
Obvious Remarks
Let’s get the obvious out of the way by stating that programming is important. Software is so ubiquitous in today’s world that nearly everything has software underneath controlling its function. In fact, it is easier to give examples when software is not used than to give examples of where software is used because there are just so many.
Nature. Chances are if you go outside and pick up a rock, there’s no software in the rock.
Really really primitive electronics.
Objects like pillows, forks, tomatoes, etc. Funny enough though, the words “object” and “fork” are software engineering terminology.
Anyways, I am sure that we’ve instilled the point that code is important in our world, and it is becoming increasingly important as more and more breakthroughs in the field of engineering and Computer Science are discovered. There are numerous developments in the fields of Theory, Computing, AI/ML, Distributed Systems, etc to be optimistic about.
Defining VRC Terminology
Driver Control / Operator Control: This is the 1 minute 45 second period in which a human being operates the robot.
Drive Practice: Roughly defined as how familiar your fellow driver is at operating/controlling the robot.
Autonomous: the 15 second period in the beginning of the match. Usually, scoring the most points during this time period yields a significant bonus. Moreover, this decides how the rest of the match goes. It’s kind of like a first impression.
Programming and its Role in VRC
How happy would you be if I gave you the key to achieving eternal greatness in the VEX Robotics Competition (VRC). Brace your emotions because I am about to give it to you: drive practice and robust code.
Drive Practice: let’s say you have an important standardized test tomorrow. What you should be doing is ensuring that you know the content, and simulating practice tests. Similarly, you want to give your driver ample time to get used to the feel of the robot.
Robust Code: Although it sounds simple, it’s hard to pull off. Why? “Robustness” is something that requires many components. It requires well-thought-out designs, superior build/manufacturing practices, and maintenance of both code and robot.
Also, “code” as well is vague. When saying “robust code,” we mean the following:
Robust User Control
Reliable Automation
Failsafes (in the case that the automation breaks)
Intuitive Controls
Robust Autonomous Code
Consistency in the points scored
Tuned Parameters and Constants
We realize that you likely do not know what these words mean, but bear with this. Throughout the rest of the lesson we will explain all of it.
The main takeaway right now is that code is very important. Let’s be a bit more bold and descriptive. We would estimate that in nearly 60% to 70% of VRC matches, the winner of the match is the alliance that won the autonomous period. Yes, programming is important.
What You Will Learn
Unit 2: First, we will go over the PROS environment, installation, and other urgent things pertaining to VRC. Then, Unit 2 will cover Introductory C++ (the fundamentals like variables, printing, conditions, and loops).
Unit 3: Commands specific to the PROS development environment. This will teach the reader how to do things like creating electronics, using electronics, and how to read the PROS API’s documentation.
Unit 4: Sample Code as a review.
Unit 5: Intermediate C++. This will cover arrays, tasks, the OOP paradigm, pointers, different ways of passing parameters, and multiple file programming. In other words, this will be a deep dive into the workings of C++.
Unit 6: The (kinda) Holy Grail of Control: PID Controllers
Unit 7 & 8: Miscellaneous Optional* Advanced Topics, such as odometry, managing error, and velocity profiles.