It looks like the real issue is "we wrote all the camera code ourself rather than using battle tested libraries".

The android camera API for example will tag every frame with the timestamps and exposure settings it was captured with. Unit and integration tests can simulate dropped frames and verify the algorithm still runs as it should.

I would guess they tried to go for direct camera hardware access and ended up writing their own logic to schedule frames, and it contained a bug.

I can't say for the camera code, but it looks like a lot of the project is reliant on open source software:

- https://github.com/nasa/fprime

- https://github.com/readme/nasa-ingenuity-helicopter