Team 1718's control team has ranged from 4 members up to a high of 10 in 2012. The controls team usually has 2-3 senior members who have learned the controls system thoroughly during their time on the team. During their senior year, they 'lead' portions of the controls team. They spend their time teaching and allowing the under-classmen to learn the controls system. In this way, the team passes on knowledge from year to year.
Team 1718's VI's
Team 1718 has been a Beta-Test team since the first year of the beta test program. We have developed a number of useful SubVI's for Labview. They are here with descriptions, for you to download.
0 or 1 to Boolean (2012) - Takes a numeric 0 or one and creates a boolean output true or false.
3 Way Switch (2009) - Takes 3 inputs and outputs a 0, 1, or 2 based on the state of the input.
1718 Pic Write (2009) - Writes a picture from the camera to the cRio flash drive when the trigger is pressed. (Not updated since 2009)
Analog to Digital (2009)- Takes an analog input from 0 - 5 volts and scales it from 0 to a number of your choosing (we use 1024).
Averaging Smooth(2011) - Takes the last number of samples specified by the user and averages them. Is useful as a filter but adds lag with increased samples.
Bang Bang (2012) - Code originally writen by Bilbo on Chief Delphi, but modified and corrected to work on our system. This is a form of velocity control that applies full throttle when not at velocity, and zero when you have reached the set point. It is particularly useful in systems that have some rotational inertia. It is meant to be used in place of a PID.
Brakes (2012) - Joysticks and a button are input into this VI. When the button is held down, pneumatics will be activated. In 1718's case, we used brakes on our drivetrain. When the joysticks are pushed, the brakes release. This was used for bridge balancing.
Button Toggle (2012) - This is designed to switch back and forth between two states when a button is pushed. 1718 used this code to make our shooter call go up or down in manual mode.
Compass (2009) - Changes your gyro feedback from the standard gyro numbers to a compass heading from 0 to 359.9 degrees.
Debouncer (2012) - Some sensors like ultrasonic range finders can have a significant amount of noise. This results in an occasional mis-read of distance. The debouncer looks for a certain number of consecutive readings and once seen, will trigger a true. It requires and equal number of consecutive readings on the other side of the setpoint to trigger a false.
Delay (2012) - This code will wait a set amount of time to execute once it has been triggered.
Degree to Radian (2009) - This is a very simple VI (almost not worth being called a VI) that does exactly what it says, however it was one of the first the team wrote when we were getting used to labview.
Drive Limiter (2010) - Team 1718 uses this VI immediately in front of the set motor output VI, to insure that we never send a value outside the proper range. While the set motor output VI should be able to handle an out-of-range input, it's always good practice to make sure! On the old IFI system, sending an out of range value would result in the number rolling over (integer upper and lower limits) and could cause real problems!
Drive Straight (2010) - This VI checks two inputs (usually joysticks). Because a human can never match the joystick values exactly, this VI compares the joystick values and sends a single value as an output if they are within a defined range of one another. Of course, this assumes your drivetrain will drive straight if similar values are supplied to each motor.
Graph Variable vs. Time (2012) - This VI lets up to 3 variable be input, then will graph them. Has an on/off switch, and will graph for a chosen time range. Note this is a memory and cpu intensive function.
Joystick Smooth(2011) - This VI breaks the Joystick response into 3 lines. The first is a dead zone near zero. The second is a ramp up to nearly full extent on the joystick. The third line is a final ramp. Each line is adjustable using two simple x/y coordinates. This allows you to adjust for the joystick's dead band, and the drivetrain's resistance to motion. It also allows you to adjust the center ramp to provide the smoothest response for things like turning, while reserving full power for only when the joystick is at the end of it's motion.
Maxbotix Sonar (2011) - The Maxbotix sonar sensor is easy to use. This VI is simple - it allows adjustment of a single scaling factor to tune the sonar's reading from a linearly scaled voltage into an output of inches.
Moving Average (2011) - 1718 found this VI useful as a filter. It is designed to store a given number values from previous loops and average. During each new loop, it discards the oldest value and replaces it with the newest. This helps to smooth out noise-filled or jumping measurements, but adds lag to the measurement as well.
Pi-D (2012) - Team 1718's ideal PI-D function. Written by the students as an educational excercise.
Radians to Degrees (2009) - This is a very simple VI (almost not worth being called a VI) that does exactly what it says, however it was one of the first the team wrote when we were getting used to labview.
Read File into 1D Array (2011) - In case you have stored a text file on the cRio and wish to read it back in, this will read each successive line into a new array element number.
Trigger (2009) - The robot system loops very quickly, and during every loop it polls inputs like joysticks and buttons. This means that if you design code to detect a button press, it will actually detect dozens of button presses (1 per loop) before a human operator is able to release the button. This VI triggers ONCE when an input is pressed, but then does not trigger again until it sees the input released.
Velocity PID (2012) - This is a custom written PID that controls velocity. Originally derived by Jared from team 341, we changed put the formulas into Labview then added features such as anti-integral windup. Used on the Pi 2012 shooter.
Proportional-Integrative-Derivative (PID) control schemes are used throughout industry to control mechanical systems precisely. Adjusting the gains of a PID control scheme can be tricky. This is Java Applet that allows team members to get a feeling for adjusting PID gains in a simulated environment.
More specific information about PID's can be found on wikipedia: