Final Project
To complete the final project you must implement a working personal
navigation system (building on the programming assignments that you
have worked on during the semester).
Never use a computer while driving. Only test
your code in a moving vehicle when you are a passenger.
1 Design of the Existing Components
The design of the existing components is summarized in the
following
.vpp
and
.svg
files:
2 Teams/Groups
You may work on the final project alone or in a group (of your choosing).
3 Requirements of all Teams/Groups
Whether you work on the project alone or in a group, your product must
all of the features from PA4, PA5, and PA6, as well as the following:
- Map-Matching (i.e., the vehicle must be located on a street)
- Route Recalculation (i.e., the system must calculate a new
route when the vehicle deviates from the current route)
You must determine the algorithms and the engineering design.
4 Teams/Groups of More than Two
If your team/group consists of more than two people, your team
final must complete one additional task (which must be approved)
for each person over two. In other words, if your team/group
consists of five people then you must complete three additional tasks.
There are different kinds of tasks that you can complete including
additional features, data processing tasks, and algorithmic analysis tasks.
The following features are pre-approved:
- An improved user interface that includes: the ability to
choose from favorite destinations, the ability to select a
destination by clicking on the map, typing completion, and a
textual display of directions.
- The ability to find a path that goes through a particular
intermediate address and the ability to find a path that goes through
an area around a particular intermediate address.
- The use of a hierarchical network when routing.
- Rendering street names on the map (at appropriate scales).
- A digitizer that provides the ability to edit
.geo
and .str
files.
- The ability to display satellite or other imagery "under" the
street network.
- The ability to choose the shortest path algorithm/data
structure to use (from a list of at least four).
- The ability to display the map either "North up" or "direction of
travel up", with the vehicle rendered as a properly oriented
arrowhead.
- The ability to display a real-time next turn arrow (that
varies with the angle of the next turn) along with a mileage
countdown and the name of the street to turn onto.
The following data processing tasks are pre-approved:
- The ability to use ZipCode or town/city boundaries when geocoding
by pre-processing the data files and adding a field to the
.str
file.
- The creation of a more recent set of data files (e.g., from the
most recent TIGER files or OpenStreetMaps).
- Inferring missing street names in the
.str
files
based on connectivity information.
The following algorithm analysis tasks are pre-approved:
- An empirical comparison of different path finding algorithms
(and associated data structures).
5 Final Deliverable
One member of each team/group must submit your source code
using
Gradescope.
Your source code (other than test suites) must conform to the
course style guide and must not contain any style defects at any
time. In other words, source code in the repository must not
contain style defects.
Your JUnit tests must be in a package named testing
and each test class must include the word "Test" in its name.
6 Final Presentation
Your final presentation must take 10 minutes or less. It must
include:
- A demonstration of your working product (which can
either be a video of the product in use or a demonstration
that uses a the
GPSSimulator
and a captured set
of sentences).
- A discussion of the algorithms you used and your engineering
design.