- SRF02 can’t run at 400kbps I2C baudrate necessary for reading maximum data from the MPU-9250 IMU.
- TeraRanger needs a 12V power supply and provides 5V serial or I2C meaning level shifting to interface with the Raspberry Pi serial / I2C pins
- LEDDAR uses weird and slow modbus protocol over serial meaning the IMU FIFO overflows if I’m sampling it above 500Hz – 1kHz works perfectly without LEDDAR. Essentially, it’s wasting time I’m going to need for Camera, GPS, and Scanse Sweep processing,
- Garmin LiDAR-Lite supports the necessary 400kbps I2C baudrate at 3.3V, but requires low level I2C access requiring a 20ms gap between sending the read request, and reading the response data. Arduino provides this low level access, higher level smbus I2C via Python does not. There are also comments around suggesting no other I2C activity can take place during that 20ms i.e. can’t access IMU during the 20ms!
All the sensors work, it’s just the API to access the data that’s non-standard in every one of these. Did nobody on the design teams consider using a standard API for modern interface technology? FFS!
P.S. Yes, I know there’s a URF that supports 400kbps I2C baudrate at 3.3V, but it has a bloody great potentiometer on the underside meaning it’s nigh on impossible to attach it ground-facing under a quadcopter.
P.P.S. I know I could use the PX4FLOW; I actually have 3 but only one of these (the original) works; the clones both do not. And anyway, where’s the fun in that compared to a vertical rangefinder, the Raspberry Pi Camera and the MPU-9250 gyro i.e. the three components that make up the PX4FLOW?