Hi Marty, thanks for the prompt follow-up.
I'm following the recommendations in Intel-RealSense-Depth-PostProcess.pdf and BKMs-For-Tuning-RealSense_D4xx_Cameras_WP_1.7.pdf.
- Default visual preset
- Intel.Realsense.CustomRW.exe -g to reset to golden standard factory
- No post-processing. I've tried turning all the post-processors on (except decimation), nothing changes.
As my application needs to recognise thin obstacles (flower stalks), I'd prefer to avoid decimation if at all possible.
I know from the BKM that the error at 3m is around 35mm but the Z is systematically over-estimated, when I would have expected the readings to wander around 3m (above and below).
This isn't a problem per se; if all cameras behave like this it's easily corrected. My worry is that my setup is incorrect in some way.
I've repeated the experiment, logging every measurement, with its timestamp, see attached .XLS.
The true distances 500, 1'000, 1'500 etc are measured from the camera's glass, with a steel ruler.
Here's a screenshot of my test harness whilst measuring at 1'500mm:
FYI, at the bottom, you can see the values for column 424 at 1'000mm; the floor is flat out to 1 metre and then the Y increases almost vertically as expected, indicating the wooden target.
The red cross indicates where the obstacle is, I.E. the first pixel where the next pixel is >30mm higher.
The measurements are the raw range values at row 240 column 424, the centre of the camera (the true camera centre is actually 239.5, 423.5 but half a pixel is insignificant).
The unexpectedly large error seems to increase exponentially:
Interestingly, the intercept of the red trend line is very close to zero, which implies that the Z focal point isn't far from the glass.
So, merging this question with my related focal-point question, https://communities.intel.com/thread/128141
- From this data, where is the Z focal point?
- Why does the error increase with range?
D435RangeProblem.xlsx 32.0 K
The greater the distance that is being measured, the greater the RMS Error factor (or depth noise) of the camera becomes. The RMS Error on the D435 model over distance is larger than the D415 model due to the characteristics of the D435's hardware.
The D435 is the upper line in orange, and the D415 is the lower green line. There are similarities between Intel's RMS Error chart and your own D435 chart's curvature when they are placed beside each other.
The two charts do not measure error the same - the Intel chart measures error amount in mm and you measure it in percent - but the principle is similar.
It seems like I haven't been clear enough between accuracy and precision.
My camera is remarkably precise (RMS deviation from the mean), it's nearly as good as a D415, according to your graph:
It's the accuracy which is the problem, the error is over 425mm at 3 metres:
When measuring a target 3 metres away it reports an average range of 3425.39 over 100 readings with an RMS error of ~17mm.
Statistically, one would expect the measurements to be a gaussian distribution around 3000mm and not around 3425.29mm.
Those numbers equate to an RMS precision of ±17mm (which is stunning) but an inaccuracy of 425.39mm (which is ghastly).
Does that make my issue clearer?
The definitive guide to testing depth results with the 400 Series cameras is Intel's "Depth Testing Methodology" paper. Following the testing procedures in this paper is the best way to test whether there is a problem with the results that you are getting.
I had read that paper, thanks, and used its methods to determine the accuracy, described in my posts above.
My Z-Accuracy (section 1.3.1, page 7) is incorrect by 425mm at 3 metres, whilst your error graph says the Z-Accuracy error should be around 35mm.
The issue remains: Why is my camera's Z-Accuracy an order of magnitude worse than expected?
I see that you calibrated your camera that last time that we discussed unusual measurements in an earlier case. So it is probably not worth suggesting calibration again, unless the camera has taken a hard knock or a drop onto the floor since that case, which could throw off the calibration.