2019-05-05 11:36 AM
When comparing the data sent from VL53L1X ULD and from VL53L1X_Gui I can see some differences.
In particular, I was comparing values sent to registers 0x005e and 0x0061 that are used to configure timing budget. I'm not going to write all measurements here, but e.g. for long distance mode and 50 ms budget the ULD sends 0x00ad and 0x00c6, while GUI sends 0x02f9 and 0x038e. Why such a difference? Which one is correct?
Same problem applies to some other registers:
Solved! Go to Solution.
2019-05-06 08:06 AM
The GUI was written before the chip was built and we used it to test the chip's performance. The ULD was written a year later when people asked for a much smaller driver.
Inside the timing budgets are bits to turn on some modes of the chip and how much time to spend of these. VHV is one of the modes. This adjusts for temperature changes. The decision was made in the ULD to only adjust for changes within a +/- 2 degree change per range as it was faster. The GUI allows a much bigger change. But we determined it would be a strange setup indeed that the temp could change that much from range to range, so we 'cheated' a little bit to make the driver smaller.
In Lidar - as in Radar there is a concept of Aliasing. (Google 'Radar Aliasing' if my explanation is lacking.) This is where light from pulse N comes back after pulse N+1 goes out. So a distance of 5M would read 1M if your max range was 4M. To lessen this effect there is a range A with one pulse repetition rate and a range B with a different rate. How long one spends in A and B and VHV and a couple of other things are all tied up in the Timing Budget.
But you shouldn't have to go through the pain of knowing which combinations work and which do not. We did that work for you. And we chose the best numbers. And apparently the designers of the ULD had the benefit of a lot of testing.
Both work.
And before you ask for how to set those numbers, the spread sheet we use is really, really complex. You don't want to get into it.
2019-05-06 08:06 AM
The GUI was written before the chip was built and we used it to test the chip's performance. The ULD was written a year later when people asked for a much smaller driver.
Inside the timing budgets are bits to turn on some modes of the chip and how much time to spend of these. VHV is one of the modes. This adjusts for temperature changes. The decision was made in the ULD to only adjust for changes within a +/- 2 degree change per range as it was faster. The GUI allows a much bigger change. But we determined it would be a strange setup indeed that the temp could change that much from range to range, so we 'cheated' a little bit to make the driver smaller.
In Lidar - as in Radar there is a concept of Aliasing. (Google 'Radar Aliasing' if my explanation is lacking.) This is where light from pulse N comes back after pulse N+1 goes out. So a distance of 5M would read 1M if your max range was 4M. To lessen this effect there is a range A with one pulse repetition rate and a range B with a different rate. How long one spends in A and B and VHV and a couple of other things are all tied up in the Timing Budget.
But you shouldn't have to go through the pain of knowing which combinations work and which do not. We did that work for you. And we chose the best numbers. And apparently the designers of the ULD had the benefit of a lot of testing.
Both work.
And before you ask for how to set those numbers, the spread sheet we use is really, really complex. You don't want to get into it.
2019-05-06 08:31 AM
Thank you John for the explanation. I take the answer as I should stick with ULD register values and ignore those from GUI. We use GUI to test various settings to get reliable measurements with shortest TB (and therefore lowest power consumption). But your answer indicates that it's not possible to transfer the findings easily into the code, because the sensor could behave differently due to different TB to register setting transformation.
Does the 2 degree max change assumption apply just to those two measurements that the sensor is performing together or to any two consecutive measurements? Because in our use case we can have minutes or even tens of them between measurements. And it is performed outdoors (without direct sunlight though), so the temperature could vary a lot.