21
State Machines are Your Friends! Sean Donovan

State Machines are Your Friends!

  • Upload
    kert

  • View
    33

  • Download
    0

Embed Size (px)

DESCRIPTION

State Machines are Your Friends!. Sean Donovan. What is a state machine?. A state machine is a way of expressing an algorithm or procedure by breaking it down into “states” and “transitions” A state machine has one “starting state”. What is a State?. - PowerPoint PPT Presentation

Citation preview

Page 1: State Machines are Your Friends!

State Machines are Your Friends!

Sean Donovan

Page 2: State Machines are Your Friends!

What is a state machine?

• A state machine is a way of expressing an algorithm or procedure by breaking it down into “states” and “transitions”

• A state machine has one “starting state”

Page 3: State Machines are Your Friends!

What is a State?

• States usually consist of 2 components: a name and an associated action.

• A name could be: “Goto Dentist” and the action could be making yourself goto the dentist.

• The “starting state” is the state where the state machine starts in.

Page 4: State Machines are Your Friends!

What is a Transition?

• Transitions are conditions that must be satisfied to go from one state to another.

• A transition could be: “Time is greater than 2pm”, or “Wheel rotated 14 times”

• There can be more than one transition per State

• A transition can start in one state and loop back to that same state

Page 5: State Machines are Your Friends!

An Example State Machine

• Your daily plan could be shown as a State Machine.

Name:Sleep

Action: SleepName: WorkAction: Do work

Name: Dentist AppointmentAction: Goto Dentist

Name: Eat DinnerAction: Prepare dinner, eat

Time = 8AM

Time = 2PM

Hungry = True

Tired = True

Page 6: State Machines are Your Friends!

Explanation

• The Bubbles represent States

• The Connection Arrows represent Transitions

Page 7: State Machines are Your Friends!

Robot Related Usefulness

• In an Autonomous Program, State Machines are usually a good way of planning what to do

Page 8: State Machines are Your Friends!

Robot Related Usefulness (cont.)

• Say you wanted to follow a line and you have 3 reflective sensors watching the line.

Sensor

Line

Page 9: State Machines are Your Friends!

Line Following Example

• One question you must ask is how many states can there be?

1 2 3 4

5 6

Page 10: State Machines are Your Friends!

Line Following Example (cont.)

• As we can see, there are six States. It is nice to name these states, so they have been numbered to simplify drawing later on.

• Since we’ve found out what the states are, we must say what we want to do when each of these states occurs.

• At this point we can determine the starting state. We can assign state 3 to be starting state, as ideally the robot would start positioned over the line.

• Try to determine what to do before going on with this slide show

Page 11: State Machines are Your Friends!

Line Following Example (cont.)

• For State 1: Turn to the left

• For State 2: Turn a little to the left

• For State 3: Go Straight

• For State 4: Turn a little to the right

• For State 5: Turn to the right

• For State 6: At the end of the line, stop

Page 12: State Machines are Your Friends!

Line Following Example (cont.)

• The next step in creating a state machine is to create the transitions.

• In this case, the transitions will be simply moving over the new lines, so you do not have to give a reason.

• Try to draw a picture of the state machine before going on.

Page 13: State Machines are Your Friends!

Line Following Example (cont.)

1

2

3

4

5

6

Start

Page 14: State Machines are Your Friends!

Line Following Example (cont.)

• As you can see, there is a transition from 1 to 2 and a transition from 2 to 1. This is very possible, and quite common

• Also not that State 6 stays looping back to itself at the end all the time.

Page 15: State Machines are Your Friends!

Another Example

• Suppose this autonomous mode has been planed out:– Go straight for 3 seconds– Turn left for 1 second– Go strait for 3 seconds– Then spin around for the remaining 8 seconds

Page 16: State Machines are Your Friends!

Another Example (cont.)

• Below is code that could do just that:Drive(60,0); //straightWait(3000);Drive(0,60); //turnWait(1000);Drive(60,0); //straightWait(3000);Drive(0,60); //spinWait(8000);Drive(0,0);

Page 17: State Machines are Your Friends!

Another Example (cont.)

• This could be put into a loop that checks to see if the robot is in autonomous mode ever time it goes through the loop. (Soon to be implemented in the WPI Framework)

while(IsAutonomous()){

//run the state machine}

Page 18: State Machines are Your Friends!

Another Example (cont.)

• First step: Identify the states

• Very simple this time:– State 1: Go straight– State 2: Turn– State 3: Go straight– State 4: Spin

Page 19: State Machines are Your Friends!

Another Example (cont.)

• Next: Identify the Transitions

• This is a bit more difficult. Fortunately you may notice that there are only 2 transitions per state. One being a loop back (to self).

• Try to determine the transitions before going on.

Page 20: State Machines are Your Friends!

Another Example (cont.)

1

2

3

4

Start

Driver ModeIsAutonomous != True

>=4000 ms

<3000 ms

<4000 ms

<7000 ms

IsAutonomous == True

>=3000 ms

>=7000 ms

Page 21: State Machines are Your Friends!

Another Example (cont.)

• This can be coded in a variety of ways– switch statements– if-else if statements

• Code Examples will be posted later in the season