Early in 2017 I bought a Phantom 4 drone and started looking at the data it could collect and the data it did collect. Using Map Pilot software for automated mapping missions I noticed that the drone finished the mission a couple of metres in the air. If I took an image once it had landed that photo had an elevation somewhere between 2 and 5 metres below the takeoff altitude. I determined that this was caused by the altimeter being warmed up as the battery warmed.
This was not good for mapping!
Next I took my Emlid Reach RTK unit and strapped it onto the drone to compare altitude traces, it was a short hop from there to building a synchronization chip to allow the Emlid Reach unit to capture the photo trigger events and, in post processing, insert the high accuracy post processed position into the DJI image headers prior to photogrammetric (or SfM if you prefer) processing.
So that's what I have an 'add-on' for a Phantom 4 that allows the capture of the event timing using the blinking of the front LED's, and a python 2.7 Jupyter notebook script that takes the events generated using the Emlid version of the RTKlib software and inserts the positions into the EXIF headers of the images from the drone.
It seems other people also want this, so when I can I get a small batch made up and a bunch of parts 3D printed and you can contact me to purchase one. Un-apologetically this is not a polished product, if you want polished spend US$10-14K, if you are happy with approximately 30ms uncertainty in timing then try my solution.
My kit costs US$200 + US20 P&P, if you read the document below and decide you would like a unit, email me.