When I decided to attend DragonCon this year I started thinking about elaborations of the idea of ‘costuming’ that went beyond attire and accessories, to environmental effects and devices. I hit on the idea of a “followbot,” based on the Star Wars mousebot which you see zipping around the imperial corridors making electronic squeaky noises.
Such a mousebot would be Arduino-based, and consist of a motor system, steering servos, and some means of controlling direction. I’ve considered making a radio-controlled or even autonomous mousebot, but in this case I want one that will actually track me and stay at heel.
I don’t want to use any optical method of motion tracking, because that would require that my own costume have special features to enable visual recognition. Neither do I want to use infrared (IR) for pretty much the same reasons… even an IR beacon would have to maintain line-of-sight, and so would necessarily have to be a costume feature – not to mention potential interference problems.
That leaves me with radio frequency (RF) tracking, and the problem of determining direction and distance from the platform to me.
My first idea is to mount a circular array of 6 or 8 RF receivers on the platform and use radio signal strength indication (RSSI) to determine the angle from it to a pinging beacon I could carry hidden. The antenna with the highest signal level would be pointing to me, and I continuously scan the array to track my movement and provide control to the steering motors. Initial reading on this topic suggests that RSSI may be unreliable, as the signal strength doesn’t really correlate with the distance… in fact, the strength may even go down as the transmitter comes closer in some instances. I suspect this has to do with measuring wavefronts with a single antenna, and I’m going to see if using the circular array allows me to compensate for that, perhaps by calculating some product of the measurements from adjacent receivers.
So far, my only other idea is to mount a kind of ‘doppler array’ of only 3 or 4 receivers, and measure the time differences of wavefronts. That would require that the signal I transmit is actually coded, so that the processing program would know which ‘pings’ to measure the differences of. Distance measurement would probably then involve a ‘pingback’ of some kind, again for timing comparison. This is a sufficiently complex task that I think I’m going to stick with the RSSI method for now.
Clearly, none of this is happening for this year’s DragonCon. This little project is going to take a while.