0
$\begingroup$

I'm trying to make swarm robots that use 8 IR LEDs and 8 Photodiodes arranged alternately along the circumference of the circular body to determine the range and bearing of other nearby swarm robots (similar ro Rice University's r-one)

Each IR LED and Photodiode is wired as shown below:

The IR LED's and Photo-diodes on one robot are separated by some opaque object. The intention is that when a high analog value is read from certain Photo-diode(s) of the 8 present, another robot's relative range and bearing can be estimated.

The problem is that a high analog value is read even when the robot is near an obstacle because of the reflect infrared light from it's own LED's.

Is there any way for a robot to determine if a high analog value read is because of another robot or because of an obstacle?

Thanks in advance!

$\endgroup$
0
$\begingroup$

There is a lot of ways. Maybe the most simple is to use some pin to drive those LEDs (via transistor, as you need a lot of current for 8 LEDs, I would use it even for 1). Then in some random (or pseudorandom) interval turn those LED off and then make your measurment, so you do not see your light, then tourn them on again, so others can see you.

I would suggest leaving relatively long intervals of ON and doing fast reading just time to time. Also you want somehow make those intervals random, so not to get to synchronized state, when all robots turn light off at the same time and so nobody see nobody.

The least is use cycles like [5,7,11,13] to get out of sync, better is use some kind of noise, eg if you have other sensors too (like ultrasound or gyro or compass), then add last few digits/bits of result to the interval, as they get more noise than information and it helps to make those interval more random.

|improve this answer|||||
$\endgroup$
1
$\begingroup$

One way for a robot to determine if the light detected by a photodiode is from another robot, or from itself reflected off an obstacle, is to blink the LEDs in a pattern.

A blink detected by a robot when all of its own LEDs are turned off must have come from some other robot.

There are ways of designing a set of blink patterns, encoding a unique ID number in each pattern, such that, even with a simple binary sensor that only distinguishes between "at least one robot has its LED turned on" vs "none of the robots in range have any LEDs turned on, not even me", it's possible to not only detect that some other robot is in range, but also the unique ID numbers of which specific other robots are in range. You might find it interesting to give each specific LED its own blink pattern, so that you can detect which specific LEDs of your own and other robots are in range of some specific photodiode.

|improve this answer|||||
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.