Robotics platform - best avoidance sensor?

Hi All,

Apologies if I've posted this in the wrong place. Looking for some opinions on the best sensor to use for obstacle avoidance in a little robot platform i'm playing around with at the moment. Infrared or Ultrasonic is the question!?

I'm currently using the Paralax Ping (fixed to nose of the platform) but seem to be getting some false readings depending on where the robot is driving. When it gets into the hallway of my house, it stops and turns for no reason, so I suspect a signal is bouncing around off the walls... Does a similar thing in other areas of the house but is fine in a wide open space.

Would Infrared be the way to go and if so can anyone recommend a decent Infrared module? (like the Sharp series for example).

Thanks for your time.

Welcome to the world of robotics.

You can't stick to a single type of sensor; if you go with only IR, you're going to possibly find a whole host of similar issues. Add the IR sensor (the sharp ones are a good bet) to the PING sensor.

You might find that this isn't even enough. You'll run into what are known as "edge cases" - areas of possible error that only occur at the "edges" of the problem set. Maybe you'll need to add touch (whisker) sensors? Maybe you'll need a laser ranging system (LIDAR). Maybe a vision system on top of all that. Finally - all of that might still not be enough!

You may ask yourself "Why does my robot need all of this? I don't, and I can walk thru my house just fine!"...

That's because you have something called a "brain", a computational engine composed of billions of elements each with 10's of thousands of interconnections between them, coupled with an emergent pattern recognition system which is able to operate, plan, and execute strategies for goals, even with incomplete information.

You have no chance at all of replicating even a ten-thousandth of that capability with today's technologies to a level that will fit on a small hobbyist robot. If you were lucky, it might take up a few large datacenters (and that is being very optimistic). Furthermore, there would be no guarantee that it would work the same, because frankly, given all we know about the brain, we know very little. There is even speculation that a brain can't know itself...

So - you'll have to make due with what you do have. Add the extra sensors. See if you can figure out how to add a mapping function (along with location tracking within the internal map), so you can avoid potential objects before you even get near (path planning). Note that the environment can change, but when it does, update your map. You probably won't have enough room on a standard Arduino to do this, but maybe you could add external memory to augment (serial eeprom or sd card, perhaps)...

:)

Hi Cr0sh, thanks for your quick reply.

Any ideas though on how to stop some of the interference from the ultrasonic, if at all possible? I was thinking possible small cardboard tubes over the transducers about 3/4" long to make it a bit more 'directional'.

Like the whiskers idea, what would be the best way to go about that?

Any limitations on the Infrared, e.g will it depend on the angle that the beam hits the object?

Many thanks

The sharp ones are pretty decent but short range.

The problem with the ping sensors is that they are wide angle and long distance so walls etc will be sensed.

Maybe you want to change the distance at which it turns when it thinks it's going to hit something.

If you want to do longer distance mapping (more than about 80cm which is about the max for the IR as far as I remember) then you might want to look into the narrow angle maxbotix sonar sensors. Something like the LV-EZ4 has a narrower beam but at the cost of a shorter sensing distance.

The latest ones by maxbotix have a longer sensing distance but still with a nice narrow beam angle. They are [u]very[/u] expensive though so you have to be able to justify one of them :p

As cr0sh says, there is no single sensor to do it all and you may want a mutitude of them. As you already have the ultrasonic sensor (normally the more expensive one), you could go for an IR sensor or two to add to that to back up the short range readings and confirm that the vehicle is actually going to bash into something...

I would recommend that you add some kind of display so you can monitor what distances the ultrasonic sensor registers under different circumstances. Then you will get an idea of what the beam angle and power values actually mean in real terms. This could be as simple as carrying a laptop round with it for the serial port, or attaching an LCD with a little bar graph/numerical values for the distance.

I have a maxbotix EZ1 which has a large beam angle and I purchased this one because at the time I knew less and it was the cheapest! I am going to purchase one of the narrower beam ones soom but this larger beam unit will still have its uses for wider object detection spread in front of the robot/vehicle without the need to turn.

Mowcius

Radioshack had a motion sensor... But I think the sharp unit be best alot of robotic builders use them...

I was thinking possible small cardboard tubes over the transducers about 3/4" long to make it a bit more 'directional'.

Umm, nope, from my experience it will then sense the tubes...

Any limitations on the Infrared, e.g will it depend on the angle that the beam hits the object?

Well if it's hitting at an angle it normally works fine in my experience but this will change depending on the reflectivity of the material. If it all reflects into the distance rather than back to the sensor then it will not work. The only problem you might have is at really shallow angles onto gloss paint at a bit of a distance or something. Maybe you want a sensor at an angle on front corner of the bot for best operation. Or one on each side and rely on the US sensor for forwatd collision detection.

Maybe you'll need to add touch (whisker) sensors? Maybe you'll need a laser ranging system (LIDAR). Maybe a vision system on top of all that. Finally - all of that might still not be enough!

Regarding the whiskers, can be really simple, wire attached to switch. You can do things for close range such as sensing conductive strand connections (when they are brushed together) but a close range IR sensor would normally be much better.

laser ranging systems are [u]very very[/u] expensive and vision systems are just [u]very tricky on an arduino.[/u]

Radioshack had a motion sensor

Yes but not very useful on a tracking robot as it gives no idea of distance/the object type etc.

Mowcius

laser ranging systems are very very expensive and vision systems are just very tricky on an arduino.

You can do a laser ranging system fairly cheap, actually - I just posted somewhere about this, lemme see...hmm, too far back, but here it is:

http://letsmakerobots.com/node/2651

Mount something like that on a servo to pan it (and/or tilt it)...

I will agree that vision processing, though, is likely out of the scope for an Arduino. Scale the robot up though by a little so you could cram a Mini-ITX board running OpenCVS or something similar, though...

About the PING sensor - and never having used one - is the width fairly consistent (ie, a cone), or is is elongated in a certain direction (I would assume it is a cone, but I really don't know) - maybe if the sensor was oriented differently...?

Just an off-the-wall idea, and probably wouldn't work...

You can do a laser ranging system fairly cheap, actually - I just posted somewhere about this, lemme see…hmm, too far back, but here it is:

http://letsmakerobots.com/node/2651

Hmm, nice work on that. I am not surprised by the range limitations on it though. Also, a <5mW laser is probably not sufficiently powerful to do long range.

Commercial laser ranging is very expensive :wink:

About the PING sensor - and never having used one - is the width fairly consistent (ie, a cone), or is is elongated in a certain direction (I would assume it is a cone, but I really don’t know) - maybe if the sensor was oriented differently…?

Well thinking again about the ping sensor, the emitter is a cone and the detector is just a detector.

I was thinking about the tube idea. Maybe with the ping sensor you could mount a tube on the detector so it only picked up pulses from a more direct source in front of it. On the maxbotix ones you can’t do it as it’s a transceiver so it is a smaller board but it means that it would detect the tube…

Maybe try an inch or two and see how it affects it.

Mowcius

I’ll try the cardboard tubes and let you all know how I get on. I can reduce the ‘read distance’ to a lower value but this has two problems… 1) still getting false readings from the signal bouncing all around the room and reflecting in from an angle that is not directly in front of the thing and 2) Ultrasonic is slow in comparison to Infrared so the robot has to move slow as it will almost hit the object if <3 inches detection range before it has stopped and reversed.

All very interesting stuff and i’m now hooked! :slight_smile:

I’ll try the cardboard tubes and let you all know how I get on. I can reduce the ‘read distance’ to a lower value but this has two problems… 1) still getting false readings from the signal bouncing all around the room and reflecting in from an angle that is not directly in front of the thing

I suggest you add in some kind of averaging and ignore any values that are above or below a certain change in distance. The speed of the robot and the speed of the sensor reading will play a big part in how much ‘false’ reading detection you can do.

  1. Ultrasonic is slow in comparison to Infrared so the robot has to move slow as it will almost hit the object if <3 inches detection range before it has stopped and reversed.

Well maybe the method for reading the PING sensor may be slow but I have never found my ultrasonic sensor to be slow. The speed of sound is pretty fast :stuck_out_tongue:

The other thing is if you can get reasonably long distance measurements then you could look for a quick decrease in distance and slow the robot down as soon as it detects it so it is much slower by it gets to the object.

For my UGV/robotics planning, it will be travelling at up to 40mph. No doubt more like 10mph or less autonomously but that is still pretty fast so will require all these techniques to ensure that it functions well.

All very interesting stuff and i’m now hooked!

Good! :wink:

Mowcius

Commercial laser ranging is very expensive

Most certainly! They typically either use high-speed time-of-flight measuring, or a similar system as that homebrew unit.

Interestingly, for a few manufacturers I have looked into of commercial systems, they all seem to use 5mW or smaller lasers! I suspect the expense comes from more accurate timing, higher scan speeds, and likely better (more sensitive) optical detectors, as well as noise rejection.

:)

Interestingly, for a few manufacturers I have looked into of commercial systems, they all seem to use 5mW or smaller lasers! I suspect the expense comes from more accurate timing, higher scan speeds, and likely better (more sensitive) optical detectors, as well as noise rejection.

Now that is interesting.

The other thing is those will be 5mW to keep it legal in most countries but they will no doubt use a decent true 5mW laser rather than a cheap <5mW laser pointer which some of the power will probably be IR and they’re often a lot less than 5mW anyway (or a lot more…)

Mowcius