|
|
Controls Resources
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 underclassmen to learn the controls system. In this way, the team passes on knowledge from year to year.
Overview of the Pi Robots
Team 1718 utilitizes the Labview programming environment for programming in the FIRST robotics competition. Since our inception in 2006, the team has received numerous awards for programming.
In 2007, The Fighting Pi competed in 'Rack 'n' Roll. The game consisted of hanging inner tubes on a central rack. During autonomous mode a green light on to of the rack was provided to help robot navigation. Team 1718 used a novel flip-up camera system to track the green light. The robot was accurate over 80% of the time, and won numerous innovation, judges, and other team awards.
In 2008, the team competed in "Overdrive". A unique ultrasonic sensor system tracked walls and other robots to avoid collisions, and resulted in the team managing to complete a full lap in most matches.
2009's game, "Lunacy", consisted of shooting balls into other team's trailers. Team 1718's robot utilized a turret that actuated over 270 degrees. In addition, the robot monitored the heading of the robot and automatically kept the turrent facing the same compass direction regardless of how the robot maneuvered.
In 2010, the Pi created a robot capable of scoring 3 balls in autonomous from the far zone. The robot was also capable of locking onto the scoring target and turning the robot to aim, however the human players were generally able to aim more quickly so this function was rarely used.
Along the way, 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. There are here with descriptions, for you to download.
Labview VI's
3 Way Switch - Takes 3 inputs and outputs a 0, 1, or 2 based on the state of the input.
1718 Pic Write - Writes a picture from the camera to the cRio flash drive when the trigger is pressed. (Not updated since 2009)
Analog to Digital- Takes an analog input from 0 - 5 volts and scales it from 0 to a number of your choosing (we use 1024).
Averaging Smooth - Takes the last number of samples specified by the user and averages them. Is useful as a filter but adds lag with increased samples.
Compass - Changes your gyro feedback from the standard gyro numbers to a compass heading from 0 to 359.9 degrees.
Degree to Radian - 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 - 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 - 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.
Joystick Smooth - 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 - 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 - 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.
Radians to Degrees - 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 - 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 - 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.
PID Controls
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.
http://www.ostan.cz/LineFollowerSimulator/
More specific information about PID's can be found on wikipedia:
http://en.wikipedia.org/wiki/PID_controller
|
|
|
|