Ask Slashdot: Image Recognition For Race Timing?
First time accepted submitter int2str writes "Autocross is a form of motorsports practiced in the U.S. and around the world where car enthusiasts explore the capabilities of their car in an open parking lot or similar suited area. It's point-to-point racing (not closed circuit). Most of these events are organized by car clubs and volunteers. Timing is usually done with a form of detection beam at start and finish that gets interrupted by the car crossing the beam. Many commercial systems are available. All of these system require the operator to enter the car's number or ID and requires the cars finishing in the order they started. So if one car is not able to finish, the operator has to intervene, or timing is broken. For closed circuit racing, transponder systems are available to address this problem. But such systems require sensor loops in the track or overhead (bridge setup) and the transponders are expensive. Do you think it would be possible to design a timing system using off-the-shelf parts and open source solutions to uniquely distinguish about 100 participating vehicles and time them from a start to a finish point, independently of their finishing order?"
Read below for some more details:
int2str continues: "My initial idea would be:
- Use (web-?)cameras at each end that feed into a Linux based notebook (USB/Ethernet).
- Start recoding still images as fast as possible when motion is detected
- Identify unique shape, numbers, barcode, qr code or similar in the images, that have been attached using a magnet to the vehicle's door.
Difficulties to overcome:
- Camera with high enough shutter speed to get recognizable image of vehicle traveling 30-60mph
- Quickly and accurately identify a unique symbol or shape
So far I've started looking into OpenCV as a possible tool for image recognition, but have not been able to find a capture solution. Does anybody have experience with something like this? The solution would be open source and well documented as to benefit the many car clubs around the country and the world."
I autocross and I've been thinking about the same problem. I even thought about writing my own free software and building plans for off-the-shelf/cheap-to-make transponders ($1200 for a wireless transmitter unit? jesus).
The problem is that if a car doesn't finish and misses the timing mark--the software shoudl just let you to fix it up. You should be able to say "this car didn't finish" (has a missing tick) or "ignore this tick" (some corner worker tripped the lights accidentally). Then it shoudl be able to just recalculate the times affected. It seems so simple to me, I am baffled that it hasn't been implemented.
All the cars starts in the same order, all the numbers are known at hte start time and cars never pass each other. So you have always same-sequence travel of cars. All you need to do is fix occassional lacks of ticks or extra ticks. No need to re-run the cars.
They're similar to QR codes but optimized for the needs of robotics (similar to your needs).
In robotics, the main need is for robust recognition, and accuracy.
QR codes are much more complicated because they need a lot more "payload" bytes (millions of unique codes), whereas you only need to distinguish between a couple hundred codes
there is even source code available:
http://april.eecs.umich.edu/wiki/index.php/April_Tags
There are several practical issues with optical systems for automated vehicle recognition- number and class markings are already tough to get consistent without requiring an additional barcode or QR large enough (some competitors would gripe about a huge barcode) to be useful at the 30'+ distance finish line sensors are set back to minimize getting hit by spinning cars. Add in the fact that existing markings some times fall off on course, or competitors in dual driver cars forget to change numbers between runs, and it's tough to be certain you'd have something consistent to try to recognize.
The national T&S system uses a wireless barcode reader operated by a worker in the starting queue to read stickers placed on competitors helmets to register cars in the T&S software. Locally, we position the T&S trailer to allow the operators to manually enter vehicles as they enter the start queue. Human eyes really are the most flexible here "shouldn't 80ES be 180ES?".
I like one of the comments above about a webcam triggered by the finish light taking a picture with a clock display in it. Unless there was OCR to immediately post the result to the software, the results feedback would be too slow for our region- we have real time announcement of finish stats, and the software can post results to a web server real time for smartphone access in paddock. The T&S software uploads a small file to the web server in the 20ish second gap between finishing cars.
Apologies for not offering solutions, but hopefully the extra info about some of the issues can help shape a solution.
This won't work. Almost all forms of autocross guarantee a driver 3 runs (each driver does one run, then each driver does a second set, etc.). Knowing what time you have to beat after each run is a huge part of autocross. The data has to be input in real time, or at least close so that results can be viewed after each run. This problem gets worse with ProSolo, where there are two courses and challenges require results for a class to figure "handicap times". Additionally, multiple cars are on course at one time (generally like 3), so it's very difficult for one person to do.
In my region, we have some open source custom software that a local member wrote that works pretty good and automatically inputs the times as they come in. I've modified the software to make entering our timing cards faster, but we're a bluetooth bar code reader and some business cars away from having a very streamlined process.
The other thing the author of the original question is missing out is how penalties for hitting cones or missing gates is entered. There has to be some human interaction there. If my region didn't have timing cards, we trusted the computer and the operator completely, we could have 1 person running timing, instead of 2 (I'm not counting the announcer or course control). National level SCCA autocross handles this problem by having someone with a bar code scanner standing near the start line that scans a bar code on your helmet as you drive up.