RF Transceiver Navigation for Swarm Robots

Hi,

I am working on a kit for doing a swarming school of fish-like robots.
There will be 30 of them in a pond they will be about 30 cm by 15 cm, equipped with a light and a few pumps to propel it.
They will all be individually controlled units.

I am trying to figure out what kind of sensors to choose for them. The idea is that they all seek to to be within a certain distance of each other an then move as a flock.

I am considering using a transceiver module on each unit like this SparkFun Transceiver Breakout - nRF2401A (Chip Antenna) - WRL-00152 - SparkFun Electronics or this RFM12BSP Wireless Transceiver - 434MHz - WRL-12770 - SparkFun Electronics. Then I would have them all transmit gibberish and just have them follow larger signal strength.

A few concerns with this I would like some feedback on is:

  1. Does signal strength scale well with distance? I don't need exact distance, just a sense of closer and farther.
  2. Will signals cancel each other? Optimally I would like to have signals even stronger in places with many units. Would I need to time transmissions up, send ID's and calculate bearings with two antennas to do this or can I hack it in a simpler way?

I would like them to be able to find each other from a range of 5 meters and to try and stay within 0.5 to 2 meters of each other when in the swarm formation. It is ok for them to loose each other once in a while and to bump into each other. Some of the poetry is in the imperfection. The antenna will be above water. All units will always be in line of sight of each other.

Other options I was considering was some sort of light sensor or a sound signature. But the light and soundscape might change significantly so I imagine both would be hard.

Your feedback would be much appreciated!
I will be sure to share the process and all the final code will be on Github.

Best Johan

  1. Does signal strength scale well with distance? I don't need exact distance, just a sense of closer and farther.

No. The signal strength perceived by a receiver from a given transmitter depends on many factors like relative antenna orientation and constructive or destructive interference from wall, ceiling and floor reflections, nearby absorbing objects, etc. so received signal strength is nearly useless for distance estimation.
2. Will signals cancel each other? Optimally I would like to have signals even stronger in places with many units.

Signals from one transmitter to a receiver are subject to constructive and destructive interference by reflections from walls, etc. (as above) but at the receiver location, the signal strength from one transmitter is completely independent of the presence of signals from other transmitters. However, signals from different transmitters on the same frequency will instantaneously interfere with each other, which generally makes it difficult or impossible to communicate.

Edit: There is a big swarm robot project at Rice: http://mrsl.rice.edu/projects

I think you might be better off trying out the sound option. If you have your fish emitting a "chirp" at a specific frequency and have a mic that is sampling at the proper frequency you should be able to filter out the background noise and determine the amplitude of your "chirp" and then get an idea of the position of your fish. The only thing that may be a problem is whether the arduino can handle the necessary calculations to perform the filtering of the signal. It may be worth looking into as, like the previous post mentioned, the RF version of this may not work so well.

This is an interesting project, though quite a doozy for one person to accomplish. Good luck to you.

Then I would have them all transmit gibberish and just have them follow larger signal strength.

So how are you going to measure signal strength, and know which direction the signal is coming from?

zoomkat:
So how are you going to measure signal strength, and know which direction the signal is coming from?

I did this little test with very simple coils as receivers and transmitters Simple RF Test | Johan Bichel Lindegaard | Flickr it ives a nice signal strength reading that correlates with distance in the 15cm range. So I was hoping that would scale.

As for direction. I was considering two options. Either having two antennas and then computing the bearing, as is often done on boats. Or a much simpler behaviour that knows nothing about direction but simply changes behaviour when signal strength decreases and sticks with behaviour when it increases or remains stable within a certain threshold.

automan:
... If you have your fish emitting a "chirp" at a specific frequency and have a mic that is sampling at the proper frequency you should be able to filter out the background noise and determine the amplitude of your "chirp" and then get an idea of the position of your fish.

Do you think this would be possible to do with a frequency outside of the audible range?

Another option would be to use IR emitters and detectors.

Something like the following might work Dropbox - Error - Simplify your life

Do you think this would be possible to do with a frequency outside of the audible range?

I guess you would have to define audible. As long as you have a microphone, or similar device, that can pick up the frequency that you are producing, then yes it should be possible.

i want to communicate 9 arduino boards, 8 as a slaves and one as mater. i am unable to do the code for this communication. all the controllers will start sending the data at a time but they will transmit continuously, the master must receive the 8 controllers data and must save and compare. please give me the suggestions. Thanks in advance.