Author
Topic: Location/Identification via IR (Read 726 times)

I am looking for an approach that will allow multiple robots to be able to locate each other by detecting an IR emitter. The idea being that each emitter will have a specific frequency that will allow them to "identify" each other from a decent range. Has something like this been done before? Are their better ways to do that? All input is welcomed.

I am looking for an approach that will allow multiple robots......that will allow them to "identify" each other

It sounds really complicated in that if you want to use the frequency (or wavelength/color) of light to ID them, you 'll have to find a way to detect which color is being detected.

Possible Idea #1: If you have a limited number of bots, you could use IR, Green, and Blue LEDs with color filters in front of the photo diodes, but this would require a sensor for every color of each bot...or a single photo diode with a color wheel in front of it.

Possible Idea #2: Have all bots use the same color LED (IR if you want) and use wireless control to have each robot turn on the LED making sure only one robot at a time had the LED turned on. If all bots know which bot has the light on, any that detect the light will will know which one they are seeing.

Bad idea #1: Have robots send out a digital code on the LEDs broadcasting it's ID. This is bad because if any bot is getting a signal from two other bots, it won't be able to read either of them due to interference.

There are 100 possible ways to do this I'm sure. I assume you could find something on Google if you try.

Bar code scanner would be even better (or bar code recognition with camera) but if you're set on using IR leds that might not work.

are all bots equal? You're creating a network, so you need to think in terms of a network. Think about how often the bots need to communicate location and ID information. You can do this with 5 IR receivers on each bot for full 360 xyz direction. The bots need to take turns talking, which means if one bot is requesting the ID of another, it should emit a binary number using IR, then depending on how many bots are in your setup, you can use a simple int to determine which bots are present. For instance:

Let's say there are a maximum of 8 bots that can ever be in a room at the same time.Bot0 is requesting the ID's of all other 7 bots around it, so it emits a number like 0x01.

Now, since all the other bots received that request, they will transmit their ID at the same time as bot0 listens!bot1 ID = 00000010bot2 ID = 00000100bot3 ID = 00001000bot4 ID = 00010000bot5 ID = 00100000bot6 ID = 01000000bot7 ID = 10000000

Now, you will know exactly which bots are nearby. If you receive 00000110, then you know bots 1 and 2 are nearby. If you receive 01011010, then you know bots 1,3,4,and 6 are near.

You still need a way for each bot to take turns deciding whether or not it needs to transmit info, then send a signal to let the next bot in line know it's turn is up.

I am looking for an approach that will allow multiple robots to be able to locate each other by detecting an IR emitter. The idea being that each emitter will have a specific frequency that will allow them to "identify" each other from a decent range.

I assume the frequency that you're mentioning is a "carrier frequency"/modulation.What do you call "a decent range"?

Just using a carrier will be a weak approach for several reasons.- Integrated IR receivers are made for a relatively narrow frequency band (eg. 36kHz, 38kHz and 40kHz).- Most of them will shut down their AGC, seeing a continuous wave as noise (you'd need those made for security curtains on heavy machinery (and they're harder to come by than the "TV variety").- If a receiver can concurrently see two signals, they will blend to sum and difference frequencies.

If you use a short coding with just slightly more than the bits needed, you can use one receiver each 'bot. It will still be garbage if it sees two signals at once - this goes for any technique you apply.

The remedy is to keep the message short (say 10ms max. each second) and to keep some randomness in when in each second the code is sent - this way, if you have a (data) collision, the next code will be sent at different times from the previously clashing 'bots.

To assure you're reading it right, each coed can be followed by its inverse (quick to check) or a checksum/parity/whatever and if it doesn't check out, discard the code and wait for the next emission.

However, if you need to know it's relative position, you'd need receivers around the entire robot, in a way so that at least two receivers sees the signal. If the 'bots are allowed to touch, the position could be determined that way as well and a single (wide angle) receiver would do (mounted on top of the 'bot, pointing up and with a silvered dome above it for 360° vision).

Short range radio modules would be another possible solution.

Logged

Regards,Søren

A rather fast and fairly heavy robot with quite large wheels needs what? A lot of power?Please remember...Engineering is based on numbers - not adjectives