There are two (mutually exclusive) ways to trigger the camera on Ardupilot.
1) By default camera triggering is done via the DO_DIGICAM_CONTROL command.
This allows trigger by distance (typically used in aerial photo missions) and single shot. Trigger by time WP action is not possible with this command.
The camera interface must be configured via MissionPlanner or via "vehicle.ardupilot.parameter" settings before this command can be used.
Make sure that SERVO∗_FUNCTION is set to 10 (camera trigger). Please refer to the Ardupilot manual for details.
2) If the camera triggers "by time" in the mission is required, then it should be specially configured via vehicle.ardupilot.camera_servo_idx parameter in vsm-ardupilot.conf.
For configuration parameters see Camera control parameters.
In this case, the camera is triggered via the DO_REPEAT_SERVO command. This allows trigger by time and single shot. Trigger by distance WP action is not possible with this command.
When the camera trigger command is issued then the specified servo is moved to the value specified by camera_servo_pwm and held there for half of the specified interval. The servo then moves back to the value specified by the corresponding RC<camera_servo_idx>_TRIM parameter. Make sure that SERVO<camera_servo_idx>_FUNCTION is set to 0 (servo controlled by mission). Both parameters RC_TRIM and SERVO_FUNCTION should be configured via MissionPlanner or via "vehicle.ardupilot.parameter" settings.
3) Usage of both camera trigger actions "by time" and "by distance" in the same mission is not supported.
Updated 9 months ago