At my first job out of school, I worked for a cast iron pipe manufacturer. The pipes were stored in an outdoor yard at each plant, and were frequently moved and rearranged by 60-ton fork trucks. The company had existing software to track the movements, but it required the driver to climb down from the fork truck, remember the 6-digit code from a stick on the pipe, climb back in the truck, and manually enter the code and location into a computer mounted in the cab. Naturally, the entry rate was pretty low – below 50% at some plants. This meant that physical inventories (which my team was also in charge of) included a lot of running around the pipe yard looking for a particular bundle of pipe.
The solution that I came up with was to attach a GPS and an RFID reader to the existing computer mounted in the cab, and to attach magnetic RFID tags to each bundle of pipe as they came off the assembly line. The RFID reader was mounted near the fork, so that our software could determine pickups and dropoffs by detecting a tag coming into and going out of range. When a pickup or dropoff occurred, the computer would know the exact location from the GPS antenna, the timestamp, the pipe bundle’s ID code, and who was driving the fork truck.
We also created our own ruggedized, magnetized RFID tags using a standard passive tag, a strip of alumnium, rubber heat-shrink wrap, and strong magnets. A tag could be thrown onto the pipes as they
came off the line, after being associated with the pipe’s database record using the same software that printed the barcode stickers for each pipe. The tags would also be removed before leaving the plant, so that they could be re-associated with new pipes being manufactured.
The last hurdle was to record the actual row the pipe was left in. All the pipe bundles were organized into rows, and physical inventories were structured around these rows. Because the rows didn’t sit perfectly north to south, we needed a way to determine if the truck was within the bounds of a generic polygon. After some research, we figured out that we could create a line segment between the current location and the North Pole (or any point known to be outside the polygon), and then compare that line to each line segment that made up the polygon. If the line segments intersected an odd number of times, the point was inside the polygon (the segment entered one more time that it left), and if they intersected an even number of times, the point was outside the polygon (the segment left the polygon for each time it entered).
Armed with this knowledge, we were able to make a working prototype on one of the fork trucks. The project died, however, when our manager was unable to get funding for a plant-wide trial.