2025-05-20 12:00 AM - last edited on 2025-05-20 8:59 AM by mikequek
Hi
I have been messing around with VL53L4CD for the last few months, and I recently realized that my readings differ significantly, depending on the target color/texture.
Here is my setup: The sensor is set on its side, and directly in front of it, at the 20cm mark, I place a few different gray-level cardboard boxes, ranging from black to white, mostly gloss-textured.
The sensor readings vary by about 10mm (222 shortest, 233 longest) depending on the box.
Performing offset calibration helps to have an accurate reading on a gray target, but the error persists for other colors.
I have tried performing cross-talk calibration, although I don't have a cover glass for this test, but that doesn't seem to help either.
My question is - do we have to know the target reflectivity in advance and calibrate for it? Am I wrong to expect more consistent readings against various targets?
Thanks!
2025-05-20 8:28 AM
This behavior is the reason the accuracy spec is not better.
Specular (mirror-like) targets are the worst. It's because if the target is normal to the sensor, the return signal is absolutely huge, and if the target is a few degrees tilted, the return signal is almost non-existent. Matte finish (or Lambertian) surfaces do not have similar issues.
The sensor is based on a statistical algo. After all, photons move at 3pico seconds per millimeter. 6 if you count the out-and-back nature of the ToF sensor.
But an inexpensive sensor is not that fast. That leaves statistics.
The algo really wants 20Million photon strikes per second. If we have more, we turn off the SPADs (photon detectors). We can go as low as 0.5M or so and still be accurate to the spec sheet, but below that, the Sigma goes up quite a bit.
Too many photons is also a problem. There is a limit to how many SPADs we can turn off.
So, a close specular target will saturate our sensor. And again, the accuracy suffers.
The solution is to get the range and look at the number of photons (signal strength) and number of SPADs. Use these 3 pieces of information and see if you can create a tuning algo.
- john