Paparazzi UAS  v5.14.0_stable-0-g3f680d1
Paparazzi is a free software Unmanned Aircraft System.
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
digital_cam_uart module

Digital Photo Camera Triggering (using a UART link)

This module controls triggering of an attached external digital camera via UART commands. It can trigger photos based on GPS distance, time or circle radius in both fixedwings and rotorcraft.

This module fullfilss 4 functions: 1) send shoot commands over UART 2) Besides triggering the shooting of images, the module also sends attitude and other relevant data. Typically an external linux camera or linux computer will receive the attitude and position data and add it to the photos. 3) The module will also parse the replies received over the UART. This contains status but can also contain computer vision results to able to interact with the flightplan. 4) Finally, the module will also relay over telemetry all data it receives from the attached computer or camera using the PAYLOAD message. This can for instance be used to downlink thumbnails.

The linux program used to parse the UART command is given in the subdirectory.

Example for airframe file

Add to your firmware section: This example contains all possible configuration options, not all of them are mandatory!

1 <module name="digital_cam_uart">
2  <define name="DC_AUTOSHOOT_PERIOD" value="0.5" />
3  <define name="DC_AUTOSHOOT_DISTANCE_INTERVAL" value="50" />
4  <define name="DC_SHOT_SYNC_SEND" value="TRUE|FALSE" />
5 </module>

Module configuration options

Define Options

  • name: DC_AUTOSHOOT_PERIOD value: 0.5
    Description: time period for DC_AUTOSHOOT_PERIODIC in seconds
  • name: DC_AUTOSHOOT_DISTANCE_INTERVAL value: 50
    Description: grid in meters
  • name: DC_SHOT_SYNC_SEND value: TRUE|FALSE
    Description: send DC_SHOT message when photo was taken (default: TRUE)

Conflicts

Module functions

Init Functions

These initialization functions are called once on startup.

Event Functions

These event functions are called in each cycle of the module event loop.

Periodic Functions

These functions are called periodically at the specified frequency from the module periodic loop.

Files

Header Files

The following headers are automatically included in modules.h

Source Files

Raw digital_cam_uart.xml file:

<!DOCTYPE module SYSTEM "module.dtd">
<module name="uart_cam_ctrl" dir="digital_cam">
<doc>
<description>
Digital Photo Camera Triggering (using a UART link)
This module controls triggering of an attached external digital camera via UART commands.
It can trigger photos based on GPS distance, time or circle radius in both fixedwings and rotorcraft.
This module fullfilss 4 functions:
1) send shoot commands over UART
2) Besides triggering the shooting of images, the module also sends attitude and other relevant data.
Typically an external linux camera or linux computer will receive the attitude and position data and add
it to the photos.
3) The module will also parse the replies received over the UART. This contains status but can also
contain computer vision results to able to interact with the flightplan.
4) Finally, the module will also relay over telemetry all data it receives from the attached computer
or camera using the PAYLOAD message. This can for instance be used to downlink thumbnails.
The linux program used to parse the UART command is given in the subdirectory.
</description>
<define name="DC_AUTOSHOOT_PERIOD" value="0.5" description="time period for DC_AUTOSHOOT_PERIODIC in seconds"/>
<define name="DC_AUTOSHOOT_DISTANCE_INTERVAL" value="50" description="grid in meters"/>
<define name="DC_SHOT_SYNC_SEND" value="TRUE|FALSE" description="send DC_SHOT message when photo was taken (default: TRUE)"/>
</doc>
<settings>
<dl_settings name="control">
<dl_settings name="dc">
<dl_setting max="255" min="0" step="1" module="digital_cam/dc" var="0" handler="send_command" shortname="Shutter">
<strip_button name="Photo" icon="digital-camera.png" value="32" group="maindc"/>
</dl_setting>
<dl_setting max="3" min="0" step="1" var="dc_autoshoot" values="STOP|PERIODIC|DISTANCE|EXT_TRIG">
<strip_button name="Start Autoshoot" icon="dcstart.png" value="1" group="dcauto"/>
<strip_button name="Stop Autoshoot" icon="dcstop.png" value="0" group="dcauto"/>
</dl_setting>
<dl_setting max="60" min="0.1" step="0.5" var="dc_autoshoot_period" shortname="Periodic" param="DC_AUTOSHOOT_PERIOD" unit="sec"/>
<dl_setting max="255" min="0" step="1" var="dc_distance_interval" shortname="dist" param="DC_AUTOSHOOT_DISTANCE_INTERVAL" unit="meter"/>
<dl_setting max="250" min="0" step="5" module="digital_cam/dc" var="dc_survey_interval" handler="Survey" shortname="Survey-Interval"/>
<dl_setting max="90" min="5" step="5" module="digital_cam/dc" var="dc_circle_interval" handler="Circle" shortname="Circle-Interval"/>
<dl_setting max="1" min="0" step="1" var="dc_cam_tracing" shortname="Cam-Tracing"/>
</dl_settings>
<dl_settings name="tb">
<dl_setting max="2" min="0" step="1" var="digital_cam_uart_thumbnails" shortname="thumbs">
<strip_button name="DL Thumbs High" icon="on.png" value="2" group="ticket"/>
<strip_button name="DL Thumbs Low" icon="on.png" value="1" group="ticket"/>
<strip_button name="DL Thumbs STOP" icon="off.png" value="0" group="ticket"/>
</dl_setting>
<dl_setting max="2" min="0" step="1" var="digital_cam_uart_status" shortname="status" />
</dl_settings>
</dl_settings>
</settings>
<conflicts>digital_cam,digital_cam_servo,digital_cam_i2c</conflicts>
<header>
<file name="uart_cam_ctrl.h"/>
<file name="dc.h"/>
</header>
<init fun="digital_cam_uart_init()"/>
<periodic fun="digital_cam_uart_periodic()" freq="10" autorun="TRUE"/>
<event fun="digital_cam_uart_event()"/>
<makefile target="sim|nps">
<file name="catia/serial.c"/>
<define name="UART5_DEV" value="ttyUSB0"/>
</makefile>
<makefile target="ap|sim|nps">
<define name="DIGITAL_CAM" />
<file name="uart_cam_ctrl.c"/>
<file name="catia/protocol.c"/>
<file name="dc.c"/>
<configure name="CAMERA_PORT" case="upper|lower"/>
<define name="USE_$(CAMERA_PORT_UPPER)"/>
<define name="CAMERA_LINK" value="$(CAMERA_PORT_LOWER)"/>
<define name="$(CAMERA_PORT_UPPER)_BAUD" value="B115200"/>
</makefile>
</module>