Automatic Finish Line Photos with CrossMgr

Post date: Apr 30, 2014 12:41:12 AM

I sounds simple enough: Why can't CrossMgr take pictures of the finish line with a USB WebCam whenever it gets a Chip Read?

I am proud to say that this feature is available and works well.

Just connect a USB WebCam for $50 to the CrossMgr computer:

  • A photo will be taken, synchronized with each rider's chip read.

  • The rider's Bib, Name, Team and Time are written in a banner at the top of the photo

  • The photo will be written to a file with a naming convention of Bib and Lap, for easy identification.

  • CrossMgr allows push-button access to finish photos right from the race data to check close finishes.

This allows you to create a finish photo for every rider crossing the line.

For example from a real race, see:

These pictures were taken with a Logitech HD C270 camera, at 1024x768 resolution. purchased for $19 on eBay. Don't discount the quality or value of the pictures based on the price of the camera!

As you can see, under daylight condition, the shutter speed is 1/1000 and will freeze bikes at any speed. It even freezes the spokes, which are moving much faster than the bike!

Resolution with the C110 at 640x480 is adequate to identify bib numbers when the camera is at the edge of the road.

Some experimentation needs to be done on a cloudy day or in dim light to increase the shutter speed (decrease the exposure) of the camera, and increase the brightness. Otherwise you could get blurry riders. Consider a powerful light.

Of course, this is not a replacement for a very expensive, UCI-compliant, 1000 fps, high-speed finish line camera.

Think about the USB WebCam as an extremely low-cost method to take a picture of every rider finishing the race.

Primarily, this service increases the value of the event to all participants - everyone can get a picture of themselves crossing the finish line.

It is also helpful to decide close finishes. Of course, at 1/25 per second resolution, it is not as good as a 1000 fps system. But, this will continue to improve as USB cameras get better, .

It was very difficult to get this to work, and I hope everyone appreciates it ;).

The "simple" approach is to trigger the camera when the computer gets the RFID read message.

This doesn't work due to latency - the RFID reader may take half a second-or-so to transmit the message, there are delays over the network, the computer has to read the message and CrossMgr has to process the message and trigger the camera.

While this is going on, the rider keeps moving - 50-70 km/h in a sprint. If the photo is not triggered within a few 1/100's of a second, the rider will be out of the frame entirely, and there will be an empty picture.

The traditional solution is to use expensive, real-time photo- trigger systems. Of course these systems work, but can cost 1000's - beyond the reach of many budgets. The core problem with camera-centric solutions is that they require a human to read the numbers and classify the photos. This is mind numbing and inconvenient - not automatic.

The solution was to "take a photo in the past". This sounds impossible, but there is a trick.

CrossMgr constantly takes photos - 25 per second. It stores each photo, and the time it was taken to the millisecond in a "circular buffer" where the most recent photo replaces the oldest. It keeps the last 4 seconds of photos this way (100 photos).

When it processes an RFID message, it picks the photo closest to the RFID time, and writes it out when the computer isn't too busy. As long as it gets around to processing the RFID message within 4 seconds, it will find a matching photo.

This solves the problem of latency - the rider will always be in the frame because the photo was already taken - we just pick the right one. The system no longer has to respond in a few 1/100's of a second.

Because CrossMgr also gets the chip code, it can write all the rider information on the photo and save it to a logical file name.

This makes it easy to identify the rider and easy to organize the photos. No human intervention necessary.

At runtime, CrossMgr is taking 25 photos per second, processing RFID messages, responding to the user interface and publishing live results with ftp - all simultaneously.

That's a lot of multitasking!