CS 452/652 Winter 2022 - Train Control (Prep)
Due Date: Thu, Jun 16, 9:00am
A train control application must be able to estimate the respective velocity (distance/time) and stop distance for different speed levels. Specifically, accurate stopping requires two capabilities:
While your ultimate train control application might continuously refine velocity estimates, it is useful and beneficial to start with a set of estimates than can be obtained using offline measurements without having a full kernel operational. For this milestone, implement a measurement application to measure the velocity of trains at speed levels and their respective stopping distances. Use the application to obtain measurements for a number of trains and speed levels. Think about how many (and which) speed levels to obtain measurements for describe your thought process.
- knowing your stopping distance for the speed level at which you are travelling, and
- knowing when you are exactly that distance from the destination, which is possible if you know the velocity at which you are travelling.
- Different trains have different velocities and stop distances for the same speed level.
- Some (most?) trains actually split each nominal speed level into two, depending on the previous speed level. In other words, the velocity for speed level B is different if the previous speed level A was lower or higher than B.
Hand in the following, nicely formatted and printed.
- A pointer to your code repository, readable by the TAs and instructor, containing the source code of your assignment, instructions how to make the executable, and documentation (see below). The code and documentation must remain unmodified after submission until the assignments have been marked. Email the commit SHA to the instructor before the deadline.
- A description of how to access, make, and operate your program in a README file, including the full pathname of your executable file, which we might download for testing.
- The names of your group members in the same README file.
- A description of the experiments used to collect calibration information and its processing.
- Store the raw calibration data in a separate subdirectory in the code repository and identify the subdirectory in your documentation.