Thursday, April 3, 2014

proposed automated speed limit enforcement algorithm

Last time I argued for automated speed limit enforcement using GPS receivers installed in all new vehicles sold. I would be negligent in doing so without at least proposing an algorithm.

So the algorithm is this:

Determine the present speed limit. If GPS is used to monitor speed, the GPS coordinates would need to be mapped to a street map to determine a local speed limit. This seems complicated, but in many urban areas the speed limit is the same on all roads in a local grid, so you'd basically just need to identify if the driver might be on an expressway or an interstate based on position and direction. If the speed limit was varying wildly from one road to the next, this would become more complicated, and only the maximum of the local speed limits could be enforced this way. GPS has only a certain position precision.

Set a true speed limit 5% higher than the nominal. This gives some margin for error. GPS doesn't have systematic error nearly this large, but it makes sense to have a small buffer if you're going to be fining people.

Set a distance threshold. If you pop over the speed limit for one second, that shouldn't be fined. GPS has a finite position accuracy, for example 10 meters under the best of conditions, and you want the threshold to be sufficiently above this threshold. On the other hand, if the threshold is too large, streets like Potrero Ave where peak speeds in excess of the speed limit are not typically sustained for long due to frequent traffic lights will go essentially unenforced. So I'll propose 50 meters for this.

Set an acceleration threshold. GPS can sometimes jump due to reflections off mountains, building, etc, yielding an essentially instantaneous displacement of position. These jumps should be ignored. So if the position jumps in a way inconsistent with the operation of a realistic motor vehicle, that should be ignored. This can be checked as follows. For any 3 points, p1, p2, and p3, with sampling times 0, 1, and 2, if p2 deviates from the average of p1 and p3 by more than 10 meters, then the interval from p1 to p3 is assigned a speed equal to the true speed limit.

Maintain an integral equal to the accumulated distance in excess of that which would be traveled at the true speed limit. So for travel from p1 to p2 over time Δt, add ( p1 − p2 ) − vmax Δt to the excess distance. Excess distance may increase or decrease, but it is limited to zero if it would be reduced below zero. At the start of a trip, it's zero.

If the car is in excess of the maximal allowed excess distance continuously over some period, for example 3 seconds in one-second samples (to allow time for checking the points as described above), the registered owner of the car is fined proportional to peak excess distance sustained over a 3 second period.

Note there's plenty of slop in this approach. First, the true speed limit is set higher than the nominal speed limit. Then the driver must get a certain threshold above a "virtual pace car" going at the true speed limit. Then he must stay beyond this threshold for a certain period of time. Additionally, the "excess distance" is unchanged if the GPS data are suspiciously inconsistent. All in all this would create a challenge for automated enforcement on urban roads.

For urban settings, fixed-point speed monitors would thus still be required. A video camera in conjunction with sonar, for example, can identify vehicles moving quicker than the speed limit. These are not presently used for automated speed limit enforcement, but with a change in state law, that could be changed.

This proposal is not in any way a threat to individual liberty. Driving is not a right, but walking is, and there is no greater denial of liberty than to create conditions where someone can't walk across their street safely. By driving in a way which compromises safety you are depriving others of their fundamental right. So this is about preserving rights, not denying them.