waterwingz
But if the APM simply pulses the USB signal for less that 500 mSec then the script might or might not take a picture after each pulse. And shorter pulse widths will be less likely to succeed.
It would be trivial to modify the script to handle the second scenario. I would also be easy to trigger a camera shutdown by using a longer pulse, as suggested in some of the documentation that you linked.
In his tutorial, he sets 4 Camera parameters in the APM:
1) CAM_TRIGG_TYPE - how to trigger the camera to take a picture. Two options; 0=Servo, 1=Relay. In the tutorial he used the value 1 (relay).
2) CAM_DURATION - How long the shutter will be held open in 10ths of a second (i.e. enter 10 for 1second, 50 for 5seconds). Range 0 to 50. In the tutorial he used the value 1 (1/10th of a second).
3) CAM_TRIGG_DIST - Distance in meters between camera triggers. If this value is non-zero then the camera will trigger whenever the GPS position changes by this number of meters regardless of what mode the APM is in. Note that this parameter can also be set in an auto mission using the DO_SET_CAM_TRIGG_DIST command, allowing you to enable/disable the triggering of the camera during the flight. Range: 0 to 1000.
4) RELAY_PIN - Digital pin number for first relay control. This is the pin used for camera control. In the tutorial he used the value 13. This is the A9 pin on the APM that he plugged the USB cable into.
If I interpret this right, it looks like if you set the distance to 10 meters. Every time the vehicle reaches a 10 meter interval, calculated from GPS readings, a pulse that last 1/10th of a second is sent to the camera USB port via the A9 pin on the APM. If this is correct, could it be made to work as the triggering mechanism with your script?
Here's a link to the page that list the CAM_Parameters for the APM:
http://copter.ardupilot.com/wiki/arducopter-parameters/#CAM__Parameters