CS452 - Real-Time Programming - Fall 2011

Lecture 22 - Trains

Public Service Annoucements

  1. Saturday November 5, 11.00 to 13.00. Open house for high school students.
  2. Information session on graduate studies: Tuesday, 8 November, 2011 at 16.30 in MC 2065
  3. First train control demo: 15 November, 2011.
  4. Final exam: Friday, 10 December, 2011, 10.30 to Saturday, 11 December, 2011.

Train Properties

A locomotive travels on the track at a given speed following the path created by directions of turn outs.

How do you know where the locomotive is?

Velocity is controlled by changing the train's speed, BUT, the mapping between speed and velocity is complex.

Important. Some of these effects matter; some don't. It's part of your task to find out which is which.

You will see things go wrong as you test your application. For example,

Avoiding such failures, or responding sensibly to them, is possible only if you have a `good enough' velocity calibration. (You get a perfect calibration only in the limit t->infinity. Failures like these also pollute your attempt to acquire reliable data for your calibration. )

Factors that might effect a calibration.

In general the velocity of a locomotive may be a function of many variables

  1. which locomotive it is
  2. which speed is set
  3. time since the last speed change
  4. the velocity at which it was travelling before the last speed change
  5. where it is on the track
  6. how long since the track was cleaned
  7. how long since the locomotive was lubricated

Important. Some of these effects are matter; some don't. It's part of your task to find out which is which.


Stage 1. Calibrating Stopping Distance

The simplest objective:

Sequence of events

  1. Train triggers sensor at t
  2. Application receives report at t + dt1
  3. You give command at t + dt1 + dt2
  4. Train receives and executes command at t + dt1 + dt2 + dt3
  5. Train slows and stops at t + dt1 + dt2 + dt3 + dt4

Questions you need to answer

This is very time-consuming!

Now make a table

Sensor 1 Sensor 2 ...
Speed 6
Speed 8
...

There are enough measurements in each cell of the table that you can estimate the random error. (Check with other groups to make certain that your error is not too big.)

Based on calibrations I have seen in previous terms you will find substantial variation with speed setting and train, little variation with sensor.

Group across cells that have the `same' value. Maybe all have the same value.

Hint. Interacting with other groups is useful to confirm that you are on track. Of course, simply using another group's calibration without saying so is `academic dishonesty'.


The Essence of Calibration

  1. You measure the time interval between two adjacent sensor reports.
  2. Knowing the distance between the sensors you calculate the velocity of the train

    Note that on average the lag mentioned above -- waiting for sensor read, time in train controller, time in your system before time stamp -- is unimportant.

  3. After many measurements you build a table

The Problems You Have to Solve

  1. The table is too big.
  2. The values you measure vary randomly.

The values you measure vary systematically


Stage 2. Calibrating Constant Velocity

An implicitly accepted fact about the world that is essential for calibration.

As long as the future is sufficiently like the past, which it almost always is, calibrations work just fine.

But when it isn't, all bets are off. You need something different disaster recovery. There are two rules of disaster recovery.

  1. Do no further harm.
  2. Start from the beginning.

Back to Calibration

If the future is like the past, then knowing the future is easy: understand the past. Understanding the past is easy in theory, but hard work in practice.

In Theory

  1. Measure
  2. Measure
  3. Measure
  4. ...
  5. Compile data into a useful form

In Practice

You need to figure out what to measure, and how much measurement to do.

  1. Estimate the calibration precision required by your task. E.g., stop within one train length
  2. Estimate the error in typical measurements. E.g.
  3. Make some measurements to test your estimates.
  4. As you make measurements continuously update the calibration.

You need to figure out the best way to structure measurement results so that they can be efficiently applied in doing the task.

  1. The set of tasks that provide calibration must
  2. How much of this should be done on-line? How much off-line?

Where the Steel Hits the Rail

These comments are essentially random.

  1. Measurement is costly.

    Therefore, you should never throw any data away.

  2. You are likely to use floating point.
  3. Each landmark requires a well-defined origin and clearances with respect to that origin. E.g.

Return to: