The DJI XMP metadata you reference is all data that DJI stores in the EXIF if evert image captured by the camera. DJI stores much more data in the EXIF of each photo than is available from ArduPilot.
On ArduPilot drones, data can be stored on the photo EXIF in several ways. I use what I believe is the simplest method.
I use the Mission Planner geotag utility. This utility takes the geotag data from the DataFlash BIN file, and stores it on all the image files in a specified directory.
There are several options. One option is which altitude to use - ASEL or GPS. The ASEL is the altitude detected by the flight controller’s barometer. GPS is the altitude reported from the GPS.
I find that when not flying RTK, the ASEL altitude is the most accurate. However when flying RTK, the GPS altitude is more accurate.
When I posted this thread, I had a misunderstanding about how CAM ant TRIG messages worked on ArduPilot. I hope I clarified my mistake. Just in case - here’s how I learned that it works:
a) When using a hot-shoe, a “TRIG” message will be stored every time the flight controller commands a photo to be taken. A “CAM” message will be stored every time the flight controller receives a hot-shoe signal - indicating that the shutter was released. If the camera fails to take the picture, the “TRIG” message is recorded, but no “CAM” message is recorded.
b) When not using a hot-shoe, only “CAM” messages are stored. There are no “TRIG” messages. Without the hot-shoe input, a “CAM” message is stored every time the flight controller commands a photo to be taken. If the camera fails to take the picture, the “CAM” message is still stored.
Regarding my camera. I use a Foxtech Map-02 - which is a super lightweight version of the Sony a5100 camera.
I have written several technical articles about my camera and photo survey setup. You can find a list of my articles here: Technical Articles | Copter Cam Tech