Range finding/sensor advice

Hi everybody,
I’ve been working on a completely autonomous vehicle based off of a Power Wheels, like the IGVC/mini DARPA vehicles. Right now, everything is controlled by a laptop programmed in Java and two Phidgets interface kits, giving me up to 16 analog inputs, 16 digital ins, and 16 digital outs.
The current sensors are simple potentiometers for PID threads with steering, limit switches, encoders for speed, and IR range sensors for object detection, along with a Sony DV camera.
I recently won a small grant, and wanted to update my whole platform - the next revision should be a tubular aluminum frame with 4hp motor and precision ackerman steering.
Along with the hardware improvements, I’d like to make it smarter. The eight IR range finders don’t seem to be cutting it for navigation of a vehicle this large, as their FOV and range are limited. Sonar is difficult to interface through a Phidget, so I considered a basic stamp, but I do not like the potential for noise from the other sensors and there, perhaps, the FOV is too large.
What I’d really like to do is build/find a laser range finder, or something similar that updates fast enough to allow a decent 5mph speed while still remaining reasonably aware of the environment. I’m looking for at least 90 degrees FOV with maybe 10-15 degree precision, though obviously, more is better (180 degrees for full frontal, or two for 360, allowing easy backups).
Has anyone experimented with this type of technology? Anything that’d be easy to impliment on a USB/serial interface? My budget right now is about $350, so something like a Sick LMS200 is probably out of my range, and I don’t think they do student discounts ;).
Worse comes to worse, I can pick up another four IR sensors and get it to three per side.

On an unrelated topic, has anyone worked on large scale ackerman steering with PID threads? My high traction wheels are causing some trouble for the servo motors (a modified 18V drill), and was wondering what you might suggest. The total vehicle will weigh about 200lbs, I think.

Thanks!

How far of a sensing distance are you looking for? The most recent IR Sharp sensor that I’ve seen has a sensing distance of up to 3 meters, as good or better than many sonar sensors out there.

You may also want to look at the Maxbotix sonar sensor, as it has a 20 degree field of view compared to the usual 45 of sonar sensors, and can be pretty easily interfaced (has an analog output, serial digital output, or pulse width output). Max range of 6.5 meters.

I’ve looked before, but I have yet to find any kind of cheap laser ranging device.

Team 95 attempted a 4 wheel drive crab drive that could do ackerman steering.

It turned out to be a mess. I think we faced the same problem. It was difficult to account for the friction of the wheel against the carpet in the steering motors programing. Basically, we could never get the ramp up and ramp down curves right, so the wheels would over or under shoot their target positions. We got close, but had to forever tweak them, and only really got it to work on a cement floor. Compounding that problem where the poor pots we used. They tended to drift and developed big dead bands at seemingly random points along their range. It was maddening.

The other big problem we had was getting all the trig to work on the BASIC stamp. I couldn’t even begin to explain all the hoops that had to be jumped though to do a lot of trig with out the required trig commands. Suffice to say that after all was said and done the stamp was running at a crawl and there was no programming space left.

My suggestion is to gear the servo motors way down and reduce youre overall speed. At high speed I think you will just have to much stuff moving with to much momentum for the computing side of the bot to keep up. The lower ratios will help your servos ‘sneak up’ on the target position.

I can try to get a hold of that robots programmer if you like. It’s a been a while though…

I’ve also looked for a laser range finder suitible for a robot. I wanted about a 500 ft range on a single target. It turns out that kind of equipment is very, very expensive. If you happen to find something better, please, let us know about it!

-Andy A.

Edit- fixed a few of many spelling errors, I’m sure.

Thanks for the advice, guys… Sonar range wont quite cut it - I’m looking for at a minimum 5m, 10+ would be ideal… Plus, I dont know how I’d interface the sonar to my laptop without an intermediate board. I may just end up getting eight more IR sensors and making a ring of 16, giving 22.5 degrees FOV each with the same range as sonar for about half the cost.
I’m still looking for other options, but nothing that promising has shown up yet. Anyone successfully hack a single object/direction laser ranger? I could forsee hacking it and making it spin, but the refresh rate would be pretty slow.

edit: the gearing down the servo motor is a good idea, I just need to find a (cheap) box with the right reduction.

You could wire a Maxbotix sonar ranger directly to your analog inputs. They are only $30 and work very well. If you want to build a laser range finder, you could do it with a laser pointer, diffraction grating, and video camera. Shine the laser though the diffraction grating and measure the distance between bright spots with the camera. This would probably require a camera with higher resolution than the CMU camera has. Just an idea. Whatever range finder you use, you will probably have to slow your robot down to navigate effectively.

You may be surprised what companies like SICK may do for you. Try preparing a proposal and request for assistance and sent to some of the companies that have the type of hardware or software you need. I think you will be very surprised at the amount of stuff you will receive in the mail.

I know it wont help you now but here are a few ideas that might help you in the future. Instead of ramping up / ramping down the servo (motor) use a 2 (or 3) speed shift on the fly transmission on your Ackerman steering servo. This can give you Gross / (medium) / fine adjustment while giving you the torque you need when friction gets high (due to low speed and high friction surface) and will avoid hunting (classic oscillation). Also widening your deadband will help minimize hunting.

Also, potentiometers (especially multi turn types) do not like side loading and will tend to create dead spots as the wiper arm wears away at the carbon inside. To avoid this you need to support the shaft of the potentiometer with a bearing (a bushing might work but you need to watch for galling).

Your project sounds interesting. Could you tell us more about it? I am have been wanting to do that with one of my traxxas rustlers but dont really know where to start. I want to make it autonomous but autonomous to do what? unless I buy a expensive GPS the car would just drive around randomly

For a rustler, you’ll need a fairly small system.
I’m helping teach a camp where we use a low power, small sized basic stamp (BasicX24-p) to run GPS.
The ideal setup, as best I can tell, would be:
Car + speed controller (servo if gas, ESC otherwise)
basic stamp and development board
GPS receiver
use PWM from the board and GPS/compass via serin/serout of the shift commands to control the speed/steering
toss on an IR sensor or two, and you’re ready to go!

Btw, I ended up getting a good deal on the maxbotix sensors. I picked up 12, and think I’ll do 8 over 180 degrees (front) and 4 over the back. I was thinking I might use a BOE and a stamp for my inputs, unless anyone has a better idea.
I love my Phidgets interface kits, but each can only handle 8 inputs. I’d be looking at a minimum of 13 inputs at this point, and potentially 21 (12 sonar, 8 IR, 1 potentiometer).
What’s out there in my price range? (that’d be ‘cheap’ ;))

Rather than buying a whole new interface kit you could try something that my school’s theater does with video processing. Using an electronic switching system you could ideally input 16 inputs into eight by rotating out which input is being received at the time. I’m not sure how clear this is sounding so I’ll give an example. Inputs one through 4 are wired out to an electronic switching device with 8 outputs. One output is used to control the switching device. You program switches with 4 inputs are being received every 1/X second. so for the first 1/X of a second you will receive data from the first 4 inputs and for the next 1/X of a second you would receive data from the last 4.

I’m not sure how feasible this is for you project, but it’s worth a try and I believe it would be cheaper than a whole new interface device. This would also require a fair amount of aditional programming

I think your going overboard on the sonars. You can’t have all the sonars ping at the same time. Which interface do you intend to use, serial, pulse timing or analog? If you are going to use the serial , are you aware that the signal is at TTL levels but inverted? Sharp does have a new IR sensor that has 5 IR LEDs spaced at 5 degree. You mount the sensor on a servo, step through reading the 5 beams, move the servo, take another 5 readings. You could do the same with the sonars. You could use 4 and measure each 90 degree quadrant. Be aware that out side foliage and organic stuff doesn’t give the hard ping reflections that indoor walls and furniture does. IR is also affected the same way but not as much. As for the controller the VEX for 150$ isn’t really to bad. It’s all packaged and enclosed. Don’t forget the programming kit and easy-c upgrade. I have used Kronos robotics stuff. If you look at the web site there is example code for everything you want to do and there are several functions in the language for the sensors, servo control, etc. You may be interested in the Aires board. There is also an app note on using a PS/2 wireless controller. It uses a Pic 18 like the FRC. I kind of like the basic language. Way better than the stamp.

Multiplexing.

Thank you; I knew there was a word for it. Also Multiplexing is more viable because you’re using sonar and can’t get data from all your sensors at once.

Did you decide on sonars or laser, I have worked with a smaller laser range finder that only works Indoors, http://www.acroname.com/robotics/parts/R283-HOKUYO-LASER1.html
the price tag is still quite high but much more reasonable than SICK for the amount of range detection.

I am interested in how to turn this sensor into an outdoor sensor. I have read papers from the IGVC & Darpa competitions about teams using Indoor SICK lasers in an outdoor environment, therefore I know indoor lasers outdoors is possible. I am also interested in learning about more lasers available on the commercial market. Lecia and other geo-survillence companies usually have this type of equipment.

I’ve put some of my thoughts on this subject into a more streamline and concise (unlike this forum post) webpage on Wiki Trac (great software ! )
http://ras.ece.utexas.edu/trac/wiki/LaserNotes

I went with sonar and IR for close range redundancy… They’ll be interfaced to a PC with a Parallax SX48 with custom software written in assembly, then used by my Java based programs.

Hi, I’ve been working on a project simular to this.

My large scale project is to make a system for autonomous vehicles to use sensors to make autonomous decisions.

First I needed to learn some stuff and try things out. So for the past 2 months every day for about 6 hours my professor and I would meet at Barnes and Noble and work on an autonomous vehicle. So we set out to do a small auton vehicle first. We came up with lets try to make a vehicle that could drive to a light, and follow if it moved. At first I was planning on making my own vehicle but after exploring options I found an rc car from radio shack that would work. Heres a link to the car H2 Car.

So using pic chips and electronics we built our own driving boards and hooked them up to sensors and its working pretty good now. We made H bridges and used op amps and did alot… If you have any questions about how to do anything with the sensors or code email me at [email protected]. Im programming my car in “restricted” assembly.

My first robot was very similar to this. I took the top off a RAD robot and used the base as the base for my autonomous vehicle. I designed the entire control system based on two PIC18F458s (I wasn’t ready to tackle 80 pin TQFPs as a sophomore). It took me five tries to make a motor controller that met my requirements. It was able to navigate effectively in my house using a polaroid ultrasonic ranger on a servo platform and bumper switches. It also had IR proximity sensors but I found the sonar to be more effective. It took me forever to write the code for it in assembly. About a year ago, I decided to rewrite the code using the student version of the microchip C compiler. Took me a half hour to write the code that took me weeks in assembly.