![]() |
Paparazzi UAS v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
|
Standard Digital Camera Control Interface. More...
#include "float.h"
#include "std.h"
#include "state.h"
#include "generated/airframe.h"
#include "modules/gps/gps.h"
Go to the source code of this file.
Macros | |
#define | DC_IGNORE FLT_MAX |
#define | DC_IMAGE_BUFFER 65535 |
#define | dc_Circle(interval) dc_circle(interval, DC_IGNORE) |
#define | dc_Survey(interval) dc_survey(interval, DC_IGNORE, DC_IGNORE) |
#define | dc_Stop(_) dc_stop() |
Enumerations | |
enum | dc_command_type { DC_GET_STATUS = 0 , DC_HOLD = 13 , DC_SHOOT = 32 , DC_WIDER = 'w' , DC_TALLER = 't' , DC_UP = 'u' , DC_DOWN = 'd' , DC_CENTER = 'c' , DC_LEFT = 'l' , DC_RIGHT = 'r' , DC_MENU = 'm' , DC_HOME = 'h' , DC_PLAY = 'p' , DC_ON = 'O' , DC_OFF = 'o' } |
Generic Set of Digital Camera Commands. More... | |
enum | dc_autoshoot_type { DC_AUTOSHOOT_STOP = 0 , DC_AUTOSHOOT_PERIODIC = 1 , DC_AUTOSHOOT_DISTANCE = 2 , DC_AUTOSHOOT_EXT_TRIG = 3 , DC_AUTOSHOOT_SURVEY = 4 , DC_AUTOSHOOT_CIRCLE = 5 } |
Auotmatic Digital Camera Photo Triggering modes. More... | |
Functions | |
void | dc_send_command (uint8_t cmd) |
Send Command To Camera. | |
void | dc_send_command_common (uint8_t cmd) |
Command sending function. | |
void | dc_set_expo (float expo) |
Set camera exposure. | |
void | dc_send_shot_position (void) |
Send Down the coordinates of where the photo was taken. | |
void | dc_init (void) |
initialize settings | |
void | dc_periodic (void) |
periodic function | |
uint8_t | dc_distance (float interval) |
Sets the dc control in distance mode. | |
uint8_t | dc_circle (float interval, float start) |
Sets the dc control in circle mode. | |
uint8_t | dc_survey (float interval, float x, float y) |
Sets the dc control in distance mode. | |
uint8_t | dc_stop (void) |
Stop dc control. | |
uint8_t | dc_info (void) |
Send an info message. | |
Variables | |
uint16_t | dc_photo_nr |
export the number of the last photo | |
uint16_t | dc_gps_count |
number of images taken since the last change of dc_mode | |
float | dc_exposure |
camera exposure | |
float | dc_autoshoot_period |
AutoShoot photos every X seconds. | |
float | dc_distance_interval |
AutoShoot photos on distance to last shot in meters. | |
float | dc_survey_interval |
distance between dc shots in meters | |
float | dc_gps_x |
point of reference for the survey mode | |
float | dc_gps_y |
float | dc_gps_next_dist |
float | dc_circle_start_angle |
angle a where first image will be taken at a + delta | |
float | dc_circle_interval |
angle between dc shots in degree | |
float | dc_circle_max_blocks |
float | dc_circle_last_block |
float | dc_cam_angle |
camera angle | |
uint8_t | dc_cam_tracing |
dc_autoshoot_type | dc_autoshoot |
Standard Digital Camera Control Interface.
-Standard IO -I2C Control
Usage: (from the flight plan, the settings or any airborne code):
Definition in file dc.h.
Sets the dc control in circle mode.
In this mode the dc control assumes a perfect circular course.
The 'start' value is the reference course and 'interval' the minimum angle between shots. If 'start' is DC_IGNORE the current course is used instead.
The first picture is taken at angle start+interval.
interval | minimum angle between shots in deg |
start | reference course in deg (or special DC_IGNORE) |
Definition at line 218 of file dc.c.
References dc_autoshoot, DC_AUTOSHOOT_CIRCLE, dc_circle_interval, dc_circle_last_block, dc_circle_max_blocks, dc_circle_start_angle, dc_gps_count, DC_IGNORE, dc_info(), foo, and stateGetNedToBodyEulers_f().
Sets the dc control in distance mode.
Shoot the next pic if distance to last saved shot position is greater than interval.
The first picture is taken at after interval.
interval | minimum distance between shots in m |
Definition at line 205 of file dc.c.
References dc_autoshoot, DC_AUTOSHOOT_DISTANCE, dc_distance_interval, dc_gps_count, dc_info(), foo, last_shot_pos, FloatVect2::x, and FloatVect2::y.
Send an info message.
Containing information about position, course, buffer and all other internal variables used by the dc control.
Definition at line 166 of file dc.c.
References course, dc_autoshoot, dc_autoshoot_period, dc_circle_interval, dc_circle_last_block, dc_circle_start_angle, dc_gps_count, dc_gps_next_dist, dc_gps_x, dc_gps_y, dc_photo_nr, dc_survey_interval, DefaultChannel, DefaultDevice, foo, mode, stateGetNedToBodyEulers_f(), and stateGetPositionLla_i().
Referenced by dc_circle(), dc_distance(), dc_stop(), and dc_survey().
initialize settings
Definition at line 158 of file dc.c.
References dc_autoshoot, DC_AUTOSHOOT_DISTANCE_INTERVAL, DC_AUTOSHOOT_PERIOD, dc_autoshoot_period, DC_AUTOSHOOT_STOP, dc_distance_interval, and dc_exposure.
periodic function
Definition at line 279 of file dc.c.
References course, dc_autoshoot, DC_AUTOSHOOT_CIRCLE, DC_AUTOSHOOT_DISTANCE, dc_autoshoot_period, DC_AUTOSHOOT_PERIODIC, DC_AUTOSHOOT_STOP, DC_AUTOSHOOT_SURVEY, dc_circle_interval, dc_circle_last_block, dc_circle_max_blocks, dc_circle_start_angle, dc_distance_interval, dc_gps_count, dc_gps_next_dist, dc_gps_x, dc_gps_y, dc_send_command(), DC_SHOOT, dc_survey_interval, dim_mod(), float_vect2_norm(), foo, get_sys_time_float(), last_shot_pos, stateGetNedToBodyEulers_f(), stateGetPositionEnu_f(), VECT2_COPY, VECT2_DIFF, FloatVect2::x, EnuCoor_f::x, and EnuCoor_f::y.
Referenced by atmega_i2c_cam_ctrl_periodic(), dc_ctrl_parrot_mykonos_periodic(), digital_cam_uart_periodic(), digital_cam_video_periodic(), gpio_cam_ctrl_periodic(), pprzlink_cam_ctrl_periodic(), and servo_cam_ctrl_periodic().
Send Command To Camera.
Definition at line 41 of file atmega_i2c_cam_ctrl.c.
References LlaCoor_i::alt, State::alt_agl_f, atmega_i2c_cam_ctrl_send(), dc_shot_union::bin, dc_shot_union::data, DC_OFF, DC_ON, dc_photo_nr, DC_POWER_OFF_DELAY, DC_PUSH, dc_send_command_common(), dc_send_shot_position(), DC_SHOOT, dc_shot_msg, DC_SHUTTER_DELAY, DC_TALLER, dc_timer, dc_timer, DC_WIDER, foo, LlaCoor_i::lat, LlaCoor_i::lon, MORA_SHOOT, MORA_SHOOT_MSG_SIZE, MoraHeader, MoraPutUint8, MoraTrailer, Int32Eulers::phi, POS_BFP_OF_REAL, Int32Eulers::psi, state, stateGetHorizontalSpeedDir_i(), stateGetHorizontalSpeedNorm_i(), stateGetNedToBodyEulers_i(), stateGetPositionLla_i(), Int32Eulers::theta, and video_capture_shoot().
Referenced by atmega_i2c_cam_ctrl_periodic(), dc_periodic(), dc_shoot_rc_periodic(), nav_spiral_run(), nav_survey_hybrid_run(), nav_survey_poly_run(), and nav_survey_rectangle_rotorcraft_run().
Command sending function.
Definition at line 192 of file dc.c.
References extra_pprz_tp, and foo.
Referenced by dc_send_command().
Send Down the coordinates of where the photo was taken.
Definition at line 153 of file dc.c.
Referenced by atmega_i2c_cam_ctrl_send(), dc_send_command(), gpio_cam_ctrl_periodic(), and servo_cam_ctrl_periodic().
Stop dc control.
Sets the dc control in inactive mode, stopping all current actions.
Definition at line 262 of file dc.c.
References dc_autoshoot, DC_AUTOSHOOT_STOP, and dc_info().
Referenced by gvf_nav_survey_polygon_run(), nav_spiral_run(), and nav_survey_polygon_run().
Sets the dc control in distance mode.
In this mode, the dc control assumes a perfect line formed course since the distance is calculated relative to the first given point of reference. So not usable for circles or other comparable shapes.
The values of 'x' and 'y' are the coordinates of the reference point used for the distance calculations. If 'y' is DC_IGNORE the value of 'x' is interpreted as index of a waypoint declared in the flight plan. If both 'x' and 'y' are DC_IGNORE the current position will be used as reference point.
interval | distance between shots in meters |
x | x coordinate of reference point (or special DC_IGNORE) |
y | y coordinate of reference point (or special DC_IGNORE) |
Definition at line 240 of file dc.c.
References dc_autoshoot, DC_AUTOSHOOT_DISTANCE_INIT, DC_AUTOSHOOT_SURVEY, dc_gps_count, dc_gps_next_dist, dc_gps_x, dc_gps_y, DC_IGNORE, dc_info(), dc_survey_interval, foo, stateGetPositionEnu_f(), WaypointX, WaypointY, FloatVect2::x, EnuCoor_f::x, FloatVect2::y, and EnuCoor_f::y.
Referenced by gvf_nav_survey_polygon_run(), and nav_survey_polygon_run().
|
extern |
Definition at line 67 of file dc.c.
Referenced by dc_circle(), dc_distance(), dc_info(), dc_init(), dc_periodic(), dc_stop(), dc_survey(), and nav_survey_poly_osam_run().
|
extern |
AutoShoot photos every X seconds.
Definition at line 86 of file dc.c.
Referenced by dc_info(), dc_init(), and dc_periodic().
|
extern |
|
extern |
Definition at line 69 of file dc.c.
Referenced by nav_spiral_run().
|
extern |
angle between dc shots in degree
Definition at line 74 of file dc.c.
Referenced by dc_circle(), dc_info(), and dc_periodic().
|
extern |
Definition at line 76 of file dc.c.
Referenced by dc_circle(), dc_info(), and dc_periodic().
|
extern |
Definition at line 77 of file dc.c.
Referenced by dc_circle(), and dc_periodic().
|
extern |
angle a where first image will be taken at a + delta
Definition at line 75 of file dc.c.
Referenced by dc_circle(), dc_info(), and dc_periodic().
|
extern |
AutoShoot photos on distance to last shot in meters.
Definition at line 85 of file dc.c.
Referenced by dc_distance(), dc_init(), dc_periodic(), nav_survey_hybrid_run(), nav_survey_poly_run(), and nav_survey_rectangle_rotorcraft_run().
|
extern |
camera exposure
Definition at line 72 of file dc.c.
Referenced by dc_expo_cb(), dc_init(), dc_set_expo(), and pprzlink_cam_ctrl_init().
|
extern |
number of images taken since the last change of dc_mode
Definition at line 68 of file dc.c.
Referenced by dc_circle(), dc_distance(), dc_info(), dc_periodic(), and dc_survey().
|
extern |
Definition at line 80 of file dc.c.
Referenced by dc_info(), dc_periodic(), and dc_survey().
|
extern |
point of reference for the survey mode
Definition at line 81 of file dc.c.
Referenced by dc_info(), dc_periodic(), and dc_survey().
|
extern |
export the number of the last photo
Referenced by dc_info(), and dc_send_command().
|
extern |
distance between dc shots in meters
Definition at line 79 of file dc.c.
Referenced by dc_info(), dc_periodic(), and dc_survey().