I’m wondering if anyone else has had this problem…,
We’ve looked into using ultrasonic sensors from maxbotix to go ahead and try distance sensing for aiming. We did some benchmarks under very optimal conditions (hard target surface, no objects to the side to accidentally detect, and so on) and the results aren’t stunning. After a very short distance ( 1 - 2 meters), it seems that the distance readings tend to break down. After a couple of meters, it’ll return the correct distance half the time and then return something way to short. Has anyone else had this problems with the Ultrasonic sensors? If so, how did you over come it?
I’m not sure from your description which sensors you’re using, or whether you’re having trouble at ranges longer than 1-2 meters or shorter than 1-2 meters. Most inexpensive ultrasonic sensors have a minimum effective range of several feet. If you want short ranges, look into optical sensors; Sharp makes a number of short-range optical sensors (presumably designed for copiers) that they market as standalone sensors (Pololu, RobotShop, and SparkFun carry some of them, as well as many other vendors). We’ve had performance fully up to the specifications with several of these.
We had an ultrasonic that worked great up to 15’ or so, unless the robot was moving. The readings would be 1/2 to 1/4 the actual value. Couldn’t figure out why. Had to scrap the idea.
There are issues when more than robot is using the same type of ultrasonic sensor on the field. They can interfere with each other if they use the same frequencies.
Also, you should implement a circular buffer that takes median readings to filter out noisy/bad reads:
We used to use these ultrasonics on our robot with some success, but don’t expect really great precision. Often you just aren’t sure which surface you are measuring distance to, as the detection cone can be pretty wide. To use this year’s field as an example, are you detecting the wall of the tower? back of a goal? lip on the batter? batter divider? hanging bar? any of those surfaces will give you slightly different distance reads.
You may wish to consider this: https://acroname.com/products/SHARP-GP2Y0A710YK0F-PACKAGE?sku=R316-GP2Y0A710YK
We’ve had some good results using IR sensors for distance measurement. This sensor has a pretty decent range though we’ve not used them yet. Ours have been much shorter in range for detecting objects on the robot itself. If you decide to try it let us know how it worked out for you.
These IR distance sensors look like quite the feasible alternative. Does anyone have some info on how to implement them? Wiring and programming wise? The ultra sonics are easy as you just read the milivolts back and do the conversion with the multiplication values offered by maxbotix. Is it possible that anyone could give me a code snippit that would give me back a readable distance from one of these sensors?
To sort of tie a bunch of things together - the ranges and clutter threshold at which ultrasonic works well does not have a lot of overlap with FRC conditions. IR or visual rangefinders usually work better than ultrasonic at shorter ranges (up to about 2 meters/6 feet), and vision processing is better than ultrasonic at longer ranges, especially if there is retroreflective tape on the target. Use green light; FRC fields usually abound in red and blue LEDs (2016 is no exception). Use the color info from your camera: at simplest, just use the blue channel; even better may be a calculation which considers red and blue light as being of a negative value.
To be honest, we use them to sense the presence of an object on the robot. We just look for a certain threshold voltage to sense this. While they can be used to measure distances the response curve is non-linear so some kind of table look-up function might be needed to convert a measured voltage to the distance measured.
I’m not sure which ultrasonic sensor you have observed this with, but we have used multiple maxBotix ultrasonic sensors over the past two years and they have all had extremely linear responses over their recommended ranges.