Summary of ARDUINO Laser 3D Tracking or Range Finder
This project uses triangulation with lasers and a CMOS camera, leveraging the camera's blooming effect as a power-control feedback instead of ADC, plus an Arduino-based 1-bit comparator timestamp map to compute distance (Z) from laser spot horizontal offsets. Current range ~0.2–10 m without zoom; accuracy depends on laser base spacing; optical zoom and green lasers planned.
Parts used in the Laser 3D Tracking or Range Finder:
- CMOS camera (Velleman CAMCOLMBLAHU MINI COLOR CMOS CAMERA WITH AUDIO + POWER ADAPTER)
- Arduino microcontroller
- Laser diodes (two or more for baseline spacing)
- Comparator (1-bit comparator for visual map)
- Resistor for manual adjustment of comparator trigger level
- Power adapter for camera
- Mechanical mounting for lasers and camera (baseline spacing)
- Optional optical zooming device
- Cabling/wiring for power and signals
The idea of using triangulation for distance measurements is well known since Pythagorean time, when his brilliant formula become available for mathematicians.
What is new in this design, is lasers power control via “blooming” effect of CMOS camera. Here this “negative” effect was put to work instead of ADC. No need high price “no-blooming” camera! (More information on this link: http://dpanswers.com/content/tech_defects.php ) There are few others design approach, that I was trying to make in hardware/software, and some of them not fully implemented yet ( project just started ).
Power Control Loop (PCL) allows to get stable readings of the reflected back light beams, doesn’t matter what is reflectivity of the object’s surface, how well illuminated background and what distance range !!! edited: / (Regarding stability measurements in varying illumination conditions, right now there is a resistor for manual adjustment comparator trigger level, depends on average “black-fixed” video. Gonna get rid off it shortly)./
Probably, someone could “hack” a camera, and redesign build-in AGC to provide stable, “fixed-white” level of video signal. But it would be extremely difficult to do with this SMD components, lack of documentation and too complicated for average hobbyist. Plus after that camera is not “in use” anymore for it’s main purpose.
Arduino has low size of RAM memory and 8-bit low power microprocessor, so full image processing could not be done. Instead, “build-in” 1-bit comparator forms visual map, where each cell stores time stamp, when events was captured. As video frame created from top to bottom line by line, line number corresponds to Y coordinate, and time of events on this line – X consequently. At this stage project is more like test bench, than final solution -);.
Right now I’m looking for optical zooming devices, to cover long / short distances automatically. Green lasers, I’m sure ‘d bring better resolution, just have to find couple of them for affordable price.
Approximate range with low cost CMOS camera and w/o optical zoom: 0.2 – 10 meters. Accuracy would greatly depends on lasers base/spacing. Lasers base also defines minimum size of the tracking object in Z coordinate. NTSC camera:
Velleman CAMCOLMBLAHU MINI COLOR CMOS CAMERA WITH AUDIO + POWER ADAPTER
has viewing angle 52 degrees. Forget about pixels resolution for a moment, we are in analog television world -); Math to calculate the distance (I call it Z coordinate) is pretty simple: D = B / tan ( phi ), where D is distance, B is lasers base, and phi is an angle what camera reports. Phi = 52 degree / 832 = 0.0625 degree per coordinate difference.(See below where 832 comes from). D = B / tan (( X1 – X2 ) * 0.0625). For example, B = 6 cm, X1 = 500, X2 = 512, than: D = 0.06 / tan ( ( 512 – 500) * 0.0625) = 4.58 meters.
( http://en.wikipedia.org/wiki/Tangent_(trigonometric_function)
For more detail: ARDUINO Laser 3D Tracking or Range Finder
- How does the design control laser power without ADC?
By using the CMOS camera blooming effect as a feedback in a Power Control Loop to stabilize reflected beam readings instead of using ADC. - Can this work with a low-cost CMOS camera?
Yes, the design intentionally uses a low-cost CMOS camera and uses its blooming effect rather than needing a no-blooming camera. - What role does the Arduino play in the system?
The Arduino uses a 1-bit comparator to form a visual map where each cell stores a timestamp of events; full image processing is not done due to limited RAM and 8-bit MCU. - Does the system provide stable readings across different object reflectivities and illumination?
Yes, the Power Control Loop (PCL) is intended to provide stable readings regardless of object reflectivity, background illumination, or distance range. - What is the approximate operating range without optical zoom?
Approximately 0.2 to 10 meters with a low-cost CMOS camera and without optical zoom. - How is distance (Z) calculated in this project?
Distance is calculated by D = B / tan(phi) where phi is the angular difference derived from horizontal coordinate difference times 0.0625 degrees per coordinate. - What determines accuracy and minimum detectable object size in Z?
Accuracy and minimum Z object size depend greatly on the lasers base (spacing) and camera resolution in angular terms. - Are there plans to improve resolution?
Yes, the author plans to use optical zoom devices and possibly green lasers to improve resolution.
