# data[].attributes.body
OOO.... SHINY

# data[].attributes.headline
THE NUMBERS ON THE coDE ARE BASEED ON Average oNlINE INFORMATION -----------------

# data[].attributes.subject
THE NUMBERS ON THE coDE ARE BASEED ON Average oNlINE INFORMATION -----------------

# data[].attributes.body
http://www.vexforum.com/showthread.php?t=21793

# data[].attributes.body
Constants

#ifndef _main_h_
#define _main_h_

#include "UserAPI.h"

#define TAPE 100
#define CARPET 400
#define LEFT_MOTOR_SPEED_FORWARD 165
#define RIGHT_MOTOR_SPEED_FORWARD 96
#define MOVE_FORWARD 0
#define STEER 1
#define ROBOT_MOVE_FORWARD {SetPWM( 1, RIGHT_MOTOR_SPEED_FORWARD ); SetPWM( 2, LEFT_MOTOR_SPEED_FORWARD);}
#define RIGHT_MOTOR 1
#define LEFT_MOTOR 2
#define VEER_RIGHT {SetPWM(1, 105); SetPWM(2, 154);}
#define VEER_LEFT {SetPWM(1, 107); SetPWM(2, 127);}
#define STEER_RIGHT {SetPWM(1, 127); SetPWM(2, 167);}
#define STEER_LEFT {SetPWM(1, 87); SetPWM(2, 127);}

#endif // _main_h_

Main Program

#include "Main.h"

void main ( void )
{
int right_sensor_value;
int center_sensor_value;
int left_sensor_value;
int previous_right;
int previous_left;
int toggle_movement = STEER;

while ( 1 )
{
left_sensor_value = GetAnalogInput ( 1 ) ;//get value for left sensor
center_sensor_value = GetAnalogInput ( 2 ) ;//get value for center sensor
right_sensor_value = GetAnalogInput ( 3 ) ;//get value for right sensor
if ( center_sensor_value <= TAPE )
{
ROBOT_MOVE_FORWARD
previous_right = right_sensor_value ;
}
else if ( left_sensor_value <= TAPE )
{
STEER_LEFT
previous_left = left_sensor_value ;
}
else if ( right_sensor_value <= TAPE )
{
STEER_RIGHT
}
else if ( previous_right <= TAPE )//if robot leaves the line and if right sensor was last to see tape, steer right and then move forward to hunt for line
{
if ( toggle_movement == STEER )
{
STEER_RIGHT
toggle_movement = MOVE_FORWARD ;
}
else
{
ROBOT_MOVE_FORWARD
toggle_movement = STEER ;
}
}
else if ( previous_left <= TAPE )//if robot leaves the line and if left sensor was last to see tape, steer left and then move forward to hunt for line
{
if ( toggle_movement == STEER )
{
STEER_LEFT
toggle_movement = MOVE_FORWARD ;
}
else
{
ROBOT_MOVE_FORWARD
toggle_movement = STEER ;
}
}
else
{
if ( toggle_movement == STEER )//if all else fails, the robot can hunt for line by moving left and then right
{
STEER_LEFT
toggle_movement = MOVE_FORWARD ;
}
else
{
STEER_RIGHT
toggle_movement = STEER ;
}
}

# data[].attributes.body
Put it on the table, run it, make improvements, and document everything

# data[].attributes.body
3/30/15-4/3/15

SOMETIME THEN I PROMISE

# data[].attributes.body
other stuff

# data[].attributes.body
Erector Set bringer Co-engineer Co-author of notebook

# data[].attributes.body
The Event Integrated Autonomous Vehicle entails the construction and programming of a robot that drives a course with no interaction from a human being during the course of start to end. This is to gain understanding and experience in both technologyand engineering fields, as well as how they overlap. This year, the group willattempt to design a robot that can meet these requirements, as well as the bonus task of picking up a ball to transport to an area at the end of the track. This will require the use of several moving parts, including:

Motors for driving the robot

Motors for moving an arm

Servos or similar for moving the claw

Together, ideally, these elements will combine to make a functional and effective robot. This will require materials such as an Erector Set for the final product, an Arduino for preliminary testing, a robot body for Arduino, sensors (listed later in detail), and a battery. Everything except the sensors are available at either home or school. The desired sensors are as follows:

Phidgets IR Reflective Sensor, 10cm (http://www.trossenrobotics.com/p/phidgets-IR-relective-sensor.aspx) x3, totaling $32.25

This is easily within budget, and testing with sensors may not come up for several weeks, allowing for shipping.

# data[].attributes.body
v

v

v

v

v

v

v

v

# data[].attributes.body
v

v

v

v

v

v

v

v

v

# data[].attributes.body
v

v

v

v

v

V

V

V

V

V

V

# data[].attributes.body
v

v

v

v

v

# data[].attributes.body
v

v

v

v

v

# data[].attributes.body
v

v

# data[].attributes.body
Week 12+

# data[].attributes.body
Weeks 10-12

# data[].attributes.body
Weeks 6-8 and 8-10

# data[].attributes.body
(Programming, Drive Train, End Effectors, Electronics, and Compatibility), Week 4-6

# data[].attributes.body
Week 3

# data[].attributes.body
Week 2-3

# data[].attributes.body
(Drawings, Designs, Program Flowcharts (?), Basic Concepts or Goals, Materials List and Cost, Responsibility for Things)

# data[].attributes.body
v

v

v

v

# data[].attributes.body
v

v

# data[].attributes.body
Moday-

Tuesday-

Wednesday-

Thursday-

Friday-

# data[].attributes.body
Monday-

Tuesday-

Wednesday-

Thursday-

Friday-

# data[].attributes.body
Monday-

Tuesday-

Wednesday-

Thursday-

Friday-

# data[].attributes.body
Monday-

Tuesday-

Wednesday-

Thursday-

Friday-

# data[].attributes.body
Monday-

Tuesday-

Wednesday-

Thursday-

Friday-

# data[].attributes.body
Each vehicle will make three timed runs on a course that is 8’ x 8’ (the equivalent of 2 - 4’ x 8’ sheets of plywood laid side by side). The course will have barrier walls 3-1/2” high and will be placed in a random configuration. Every effort will be made to give a unique course for each vehicle run. The floor of the course will be a plywood sheet, laid out with a grid of holes drilled on 4" centers. Barrier walls 3-1/2” high with lengths of 8”, 12” and 16” will be moved around the grid to provide randomly changing courses. The outside edge of the plywood will have a permanently affixed 3-1/2” barrier. Classroom or home courses may be constructed of plywood and 1x4" pine to match the challenge course The runs will increase in difficulty. The first run is student-operated via the remote control system. Students have the option to add moving a block placed at random in the course to the end of the course. The block dimensions are 1-1/2” x 1-1/2” x 3” tall, and the block is painted red. Should the students opt to move the block, it must be moved to the end of the course and placed in a marked 4” square area at the end of the course. If a team chooses not to move the block, 20 points will be added to the overall score. The second round of testing is autonomous. In the second round, there will be an area within the course where the vehicle will have to make a choice between two possible paths. Each path leads to the finish, but the vehicle must be able to decide upon one of two choices. In the third course, the vehicle will have to navigate over a rough section of the course. This rough section may comprise 25% of the course. Vehicles should possess a ground clearance of 1/2”. Each second a vehicle touches a wall will add one second to the vehicle’s overall time.A vehicle navigating using touch sensors is allowed, but the touch time will be added to the overall time. Each contact with the wall will be counted as one second, even if the actual touch is less. Contact time will be rounded up (i.e., a 4.2-second touch will be counted as a 5-second penalty). At any point during the autonomous runs, the team may choose to add moving the block to the end of the course. Should the students opt to move the block, it must be moved to the end of the course and placed in a marked 4” square area at the end of the course to qualify for a 30-point deduction. At the end of the three runs, the scores from the technical interview, the notebook and the runs will be totaled and the lowest score wins.

# data[].attributes.body
A team may provide navigation beacons as a means to mark the course. Beacons may be infrared, visible spectrum or sonic. Sonic beacons in the audible range are subject to the judge’s approval, and a beacon deemed disruptive will be removed from the challenge, Once the beacon is placed it may not be moved until after the team placing it has completed its run.

# data[].attributes.body
Ultrasonic, infrared, touch, motion, and light sensors may be used. Distance encoders may be used as well. The use of distance-based programming is discouraged. A radio frequency link may consist of traditional RF equipment, including off-the-shelf transmitters and receivers as well as component-built or “adapted” systems. Infrared communication is allowed - however, please alert the judging team at the check-in if you are using infrared (this will prevent you reprogramming or interfering with another team that may also be using infrared.) If your team plans on using infrared, line a shoebox with aluminum foil and store your vehicle in it to avoid interference from another team’s control/program stream

# data[].attributes.body
A student-controlled run will be made using a remote control system.

This system includes all available RF spectra, Bluetooth and infrared communication. RCX-based vehicles may use a tethered remote based on touch sensors or use an Infrared or adapted radio frequency control system. Vehicles will be inspected for remote control links. Programming of vehicles via Bluetooth, RF or infrared is allowed but may not be used during the autonomous runs.

# data[].attributes.body
Vehicles may be constructed from a kit or may be built from scratch.

Kits include:

Lego RCX, Lego NXT, VEX, GEARS Educational System, Parallax Boe-Bot, Arduino Microcontroller, or any other available microcontroller system.

Entries built from scratch may contain any portion of the above listed kits (i.e., Lego gears driven by an Arduino microcontroller servo.)

# data[].attributes.body
Eligibility is limited to two (2) teams of three (3) members per chapter.

# data[].attributes.body
The purpose of the challenge is to create and operate an integrated autonomous vehicle. The vehicle will operate in a number of courses, but must be able to navigate a course without prior knowledge of distance or direction within a chosen course. Two separate modes of operation will be used: Student-controlled and Autonomous.