AME 3623: Project 4: FSM/Sensor Integration
In projects 2 and 3, you designed a FSMs for high-level control
and for the processing of sequences of analog signals, respectively.
In this project, you will combine the components that you have
developed to form a new behavior.
The learning goals for this project include:
- designing robot actions based on sensory state,
- constructing FSM actions that involve multiple control steps, and
- designing and implementing finite state machines.
Project Due Date
The project is due on Thursday, April 27th at 5:00pm.
Groups may choose to do either task A or B.
Robot Task A
- The robot will be initialized such that it can "see" a beacon
toward the front.
- The robot must first move toward this beacon until it "sees" a
beacon on either the left or right.
- If a beacon is located on the right, the robot must move
down-wind until it observes a beacon on the left
- The robot must then move up-wind until it observes a beacon on
the right
- At any time that the robot loses track of a beacon (that it is
already tracking), then it must immediately stop (note that
this does not apply if it is tracking the wind).
Design Process
You will be able to solve this problem using a 4-state FSM; think
carefully about this.
Coding Steps
This part requires the following:
- Write a function analogous to
track_beacon()
that
will drive the robot relative to the wind. The
prototype for the function is as follows:
uint8_t track_wind(int8_t dir)
If the robot is not facing direction dir, then this
function will issue a turn command to reduce the distance
between the desired and actual direction, and return a 0
immediately.
If the robot is facing direction dir, then this function
will drive the robot forward, and return a 1 immediately.
- Design and implement your FSM.
Robot Task B
- The robot will be initialized such that it can "see" a beacon
toward the front.
- The robot must first move toward this beacon until it "sees" a
beacon on either the left or right.
- If a beacon is located on the right, the robot must continue moving forward until it observes a second beacon on the right.
- In either case, the robot should turn and move toward the beacon
- At any time that the robot loses track of a beacon (that it is
already tracking), then it must immediately stop (note that
this does not apply if it is tracking the wind).
This version of the task is a generalization of your project 2 code.
Hints
- You may have to take a sequence of control actions when you are
"within" a single state.
- When you first start tracking the wind, you may need to
track it for a brief period of time while you ignore all
beacons (so that you don't pick up the beacon that you just
left).
What to Hand In
Project Report
Your report should include the following:
- The names of the group members.
- Describe the details of your FSM design.
- A copy of your documented program (this may be handed in as a
separate file). The documentation should be such that a person
not familiar with your program (but familiar with the control
problem) can understand what you are doing.
The reports are due at 5:00 on April 27th. Please turn these in using
the D2L dropbox (one copy per group) in
either postscript or pdf format.
Personal Reports
Your personal report must include the following information:
- Your name
- An estimate of your contribution to the project in terms of
percentage of effort.
- An estimate of the contribution of each of your fellow group
members.
- A justification of your contribution assessment.
The personal reports are due at 5:00 on April 27th. These must be
turned in via D2L in raw text format.
fagg at ou.edu
Last modified: Tue Apr 18 00:43:13 2006