I'm looking for an arduino compatible depth sensor NOT for water. What I need is a sensor very similar to an Xbox kinect (but much smaller) that will tell me what is in front of the sensor and also the shape of the object. For example, if I place a cylindrical water bottle in front of the sensor I would like to be able to figure out how far away the bottle is and also the shape of the object (in 2d, I don't need to know whether it is actually a cylinder only the general shape). The sensor only needs to be accurate at most 1 meter away. Does this exist and if so where can I purchase one. If it does not exist wholly what pieces do I need to buy to put it together? Thanks.
-
$\begingroup$ The Kinect is a particular brand of RGB-D camera. You might be able to find a smaller one elsewhere. $\endgroup$– apnortonDec 21, 2014 at 23:44
-
$\begingroup$ Most inexpensive solutions are going to require a computer. A cheaper and simpler solution is to put a narrow band Ultrasonic sensor on a servo to get you ~255 steps of resolution in 180 deg (approx .7 deg resolution). $\endgroup$– Mark OmoApr 26, 2015 at 15:27
3 Answers
I am not sure the Arduino has the "horse power" for this. You might be better off going with a RaspberryPi, BeagleBone, or some other embedded board that can run a real operating system...
For 2D depth sensors, the main contenders are SICK and Hokuyo. The interface for these is typically USB. But i know older model SICKs used RS232 which might actually work with an 8 bit microcontroller.
Other types of depth sensors that typically play nicer with microcontrollers are ultrasonic rangers, and infrared proximity sensors. However, these have a much wider beam, are much more noisy, and can adversely interact with each other if you try to make an array out of them. (For example, an ultrasonic pinger will hear the response of the one next to it if they are turned on at the same time.)
Lastly, another option that is not Arduino compatible, but is cheap and might work with your system depending on what you want to do, is to use a camera and a laser line for structured light. You can do some image processing and determine the depth to the line. This paper: "High-Accuracy 3D Sensing for Mobile Manipulation: Improving Object Detection and Door Opening" has more info.
Arduino or other microcontrollers is not enough for image or video processing. So you can try it with scanners (like LIDAR) or sensor arrays like this link. The link contains only 4 sensors but you can increase the number of sensor for increase measuring angle( angle of HC SR04 is 15 degree)
If your trying to get the most for your money I would buy used 1st gen Kinect (you can get them really cheap) and take it apart from it's housing to reduce size and weight.
Another option is Asus Xtion which is similar to Kinect only smaller and does not require external power supply.
And you could always just use 2 identical cameras (maybe webcams) for stereo vision.