mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-01-03 06:28:27 -04:00
AP_Mount: add camera controls
This commit is contained in:
parent
5b929b3de5
commit
f6056a4734
@ -425,6 +425,64 @@ void AP_Mount::set_roi_target(uint8_t instance, const Location &target_loc)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// camera controls for gimbals that include a camera
|
||||||
|
//
|
||||||
|
|
||||||
|
// take a picture. returns true on success
|
||||||
|
bool AP_Mount::take_picture(uint8_t instance)
|
||||||
|
{
|
||||||
|
// call instance's take_picture
|
||||||
|
if (!check_instance(instance)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return _backends[instance]->take_picture();
|
||||||
|
}
|
||||||
|
|
||||||
|
// start or stop video recording. returns true on success
|
||||||
|
// set start_recording = true to start record, false to stop recording
|
||||||
|
bool AP_Mount::record_video(uint8_t instance, bool start_recording)
|
||||||
|
{
|
||||||
|
// call instance's record_video
|
||||||
|
if (!check_instance(instance)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return _backends[instance]->record_video(start_recording);
|
||||||
|
}
|
||||||
|
|
||||||
|
// set camera zoom step. returns true on success
|
||||||
|
// zoom out = -1, hold = 0, zoom in = 1
|
||||||
|
bool AP_Mount::set_zoom_step(uint8_t instance, int8_t zoom_step)
|
||||||
|
{
|
||||||
|
// call instance's set_zoom_step
|
||||||
|
if (!check_instance(instance)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return _backends[instance]->set_zoom_step(zoom_step);
|
||||||
|
}
|
||||||
|
|
||||||
|
// set focus in, out or hold. returns true on success
|
||||||
|
// focus in = -1, focus hold = 0, focus out = 1
|
||||||
|
bool AP_Mount::set_manual_focus_step(uint8_t instance, int8_t focus_step)
|
||||||
|
{
|
||||||
|
// call instance's set_manual_focus_step
|
||||||
|
if (!check_instance(instance)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return _backends[instance]->set_manual_focus_step(focus_step);
|
||||||
|
}
|
||||||
|
|
||||||
|
// auto focus. returns true on success
|
||||||
|
bool AP_Mount::set_auto_focus(uint8_t instance)
|
||||||
|
{
|
||||||
|
// call instance's set_auto_focus
|
||||||
|
if (!check_instance(instance)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return _backends[instance]->set_auto_focus();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool AP_Mount::check_primary() const
|
bool AP_Mount::check_primary() const
|
||||||
{
|
{
|
||||||
return check_instance(_primary);
|
return check_instance(_primary);
|
||||||
|
@ -158,6 +158,28 @@ public:
|
|||||||
// any failure_msg returned will not include a prefix
|
// any failure_msg returned will not include a prefix
|
||||||
bool pre_arm_checks(char *failure_msg, uint8_t failure_msg_len);
|
bool pre_arm_checks(char *failure_msg, uint8_t failure_msg_len);
|
||||||
|
|
||||||
|
//
|
||||||
|
// camera controls for gimbals that include a camera
|
||||||
|
//
|
||||||
|
|
||||||
|
// take a picture
|
||||||
|
bool take_picture(uint8_t instance);
|
||||||
|
|
||||||
|
// start or stop video recording
|
||||||
|
// set start_recording = true to start record, false to stop recording
|
||||||
|
bool record_video(uint8_t instance, bool start_recording);
|
||||||
|
|
||||||
|
// set camera zoom step
|
||||||
|
// zoom out = -1, hold = 0, zoom in = 1
|
||||||
|
bool set_zoom_step(uint8_t instance, int8_t zoom_step);
|
||||||
|
|
||||||
|
// set focus in, out or hold
|
||||||
|
// focus in = -1, focus hold = 0, focus out = 1
|
||||||
|
bool set_manual_focus_step(uint8_t instance, int8_t focus_step);
|
||||||
|
|
||||||
|
// auto focus
|
||||||
|
bool set_auto_focus(uint8_t instance);
|
||||||
|
|
||||||
// parameter var table
|
// parameter var table
|
||||||
static const struct AP_Param::GroupInfo var_info[];
|
static const struct AP_Param::GroupInfo var_info[];
|
||||||
|
|
||||||
|
@ -100,6 +100,28 @@ public:
|
|||||||
// handle GIMBAL_DEVICE_ATTITUDE_STATUS message
|
// handle GIMBAL_DEVICE_ATTITUDE_STATUS message
|
||||||
virtual void handle_gimbal_device_attitude_status(const mavlink_message_t &msg) {}
|
virtual void handle_gimbal_device_attitude_status(const mavlink_message_t &msg) {}
|
||||||
|
|
||||||
|
//
|
||||||
|
// camera controls for gimbals that include a camera
|
||||||
|
//
|
||||||
|
|
||||||
|
// take a picture. returns true on success
|
||||||
|
virtual bool take_picture() { return false; }
|
||||||
|
|
||||||
|
// start or stop video recording. returns true on success
|
||||||
|
// set start_recording = true to start record, false to stop recording
|
||||||
|
virtual bool record_video(bool start_recording) { return false; }
|
||||||
|
|
||||||
|
// set camera zoom step. returns true on success
|
||||||
|
// zoom out = -1, hold = 0, zoom in = 1
|
||||||
|
virtual bool set_zoom_step(int8_t zoom_step) { return false; }
|
||||||
|
|
||||||
|
// set focus in, out or hold. returns true on success
|
||||||
|
// focus in = -1, focus hold = 0, focus out = 1
|
||||||
|
virtual bool set_manual_focus_step(int8_t focus_step) { return false; }
|
||||||
|
|
||||||
|
// auto focus. returns true on success
|
||||||
|
virtual bool set_auto_focus() { return false; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
enum class MountTargetType {
|
enum class MountTargetType {
|
||||||
|
Loading…
Reference in New Issue
Block a user