35 #include <Eigen/Eigen> 
   36 #include <auterion_sdk/auterion.hpp> 
   37 #include <auterion_sdk/system_state/system_state.hpp> 
   57     Eigen::Quaternionf q_flu;
 
   58     Eigen::Quaternionf q_enu;
 
   84         : roll(roll_mode), pitch(pitch_mode), yaw(yaw_mode) {}
 
   86     std::string toString() 
const;
 
  115     std::string toString() 
const;
 
  125     GimbalCapabilities& canRoll() {
 
  129     GimbalCapabilities& canRollFollow() {
 
  130         can_roll_follow = 
true;
 
  133     GimbalCapabilities& canRollLock() {
 
  134         can_roll_lock = 
true;
 
  137     GimbalCapabilities& canPitch() {
 
  141     GimbalCapabilities& canPitchFollow() {
 
  142         can_pitch_follow = 
true;
 
  145     GimbalCapabilities& canPitchLock() {
 
  146         can_pitch_lock = 
true;
 
  149     GimbalCapabilities& canYaw() {
 
  153     GimbalCapabilities& canYawFollow() {
 
  154         can_yaw_follow = 
true;
 
  157     GimbalCapabilities& canYawLock() {
 
  161     GimbalCapabilities& canInfiniteYaw() {
 
  162         can_infinite_yaw = 
true;
 
  165     GimbalCapabilities& canPointLocationLocal() {
 
  166         can_point_location_local = 
true;
 
  169     GimbalCapabilities& canPointLocationGlobal() {
 
  170         can_point_location_global = 
true;
 
  174     GimbalCapabilities& RollRangeDeg(
float min_deg, 
float max_deg) {
 
  179     GimbalCapabilities& PitchRangeDeg(
float min_deg, 
float max_deg) {
 
  184     GimbalCapabilities& YawRangeDeg(
float min_deg, 
float max_deg) {
 
  190     bool can_retract{
false};
 
  191     bool can_neutral{
false};
 
  192     bool can_roll{
false};
 
  193     bool can_roll_follow{
false};
 
  194     bool can_roll_lock{
false};
 
  195     bool can_pitch{
false};
 
  196     bool can_pitch_follow{
false};
 
  197     bool can_pitch_lock{
false};
 
  199     bool can_yaw_follow{
false};
 
  200     bool can_yaw_lock{
false};
 
  201     bool can_infinite_yaw{
false};
 
  202     bool can_point_location_local{
false};
 
  203     bool can_point_location_global{
false};
 
  224         : capabilities(capabilities) {}
 
  225     explicit GimbalDescriptor(
const std::string& custom_name, 
const std::string& vendor_name,
 
  227         : custom_name(custom_name),
 
  228           vendor_name(vendor_name),
 
  229           model_name(model_name),
 
  230           capabilities(capabilities) {}
 
  232     std::string custom_name{};
 
  233     std::string vendor_name{};
 
  234     std::string model_name{};
 
  237     std::string toString() 
const;
 
  278               if (!descriptor.custom_name.empty()) {
 
  279                   return descriptor.custom_name == candidate.custom_name;
 
  281               if (!descriptor.model_name.empty() || !descriptor.vendor_name.empty()) {
 
  282                   return descriptor.model_name == candidate.model_name &&
 
  283                          descriptor.vendor_name == candidate.vendor_name;
 
  330                         const float yaw_rate_rad_s) 
const;
 
  370     std::shared_ptr<GimbalImpl> _impl;
 
Gimbal control class.
Definition: gimbal.hpp:244
 
bool isInControl() const
Check control of the gimbal.
 
void setAttitudeControl(const float roll_deg, const float pitch_deg, const float yaw_deg) const
Set attitude control using Euler angles.
 
void setRoiLocationNone() const
Clear Region of Interest (ROI) location.
 
void setRateControl(const float roll_rate_rad_s, const float pitch_rate_rad_s, const float yaw_rate_rad_s) const
Set rate control.
 
bool takeControl(const bool force_takeover=false)
Take control of the gimbal.
 
void subscribeAttitude(std::function< void(const GimbalAttitude &)> callback)
Subscribe to gimbal attitude updates.
 
void setRoiLocation(const auterion::GlobalPosition &position) const
Set Region of Interest (ROI) location.
 
void setAttitudeControl(const Eigen::Quaternionf &q) const
Set attitude control using quaternion.
 
void setGimbalMode(const GimbalMode &gimbal_mode)
Sets gimbal mode.
 
Gimbal(SDK &sdk, const GimbalDescriptor &descriptor=GimbalDescriptor{})
Constructs a gimbal object based on a descriptor.
Definition: gimbal.hpp:276
 
Gimbal(SDK &sdk, const std::function< bool(const GimbalDescriptor &candidate)> &find_callback)
Constructs a gimbal object based on a selection function.
 
void releaseControl()
Release control of the gimbal.
 
SDK execution class. All callbacks are called on the same thread.
Definition: auterion.hpp:97
 
AxisMode
Enum defining the axis modes.
Definition: gimbal.hpp:77
 
@ VehicleFollow
Axis follows the vehicle's motion.
 
@ WorldLock
Axis maintains a fixed world orientation.
 
Represents the attitude of a gimbal.
Definition: gimbal.hpp:56
 
Represents the capabilities of a gimbal.
Definition: gimbal.hpp:97
 
bool meetsRequirements(const GimbalCapabilities &requirements) const
Check if the given requirements are met by the current capabilities.
 
float roll_min_deg
Minimal roll range (degrees)
Definition: gimbal.hpp:205
 
bool supportsMode(const GimbalMode &mode) const
Check if a given gimbal mode is supported by the current capabilities.
 
float yaw_min_deg
Minimal yaw range (degrees)
Definition: gimbal.hpp:209
 
float roll_max_deg
Maximal roll range (degrees)
Definition: gimbal.hpp:206
 
float pitch_max_deg
Maximal pitch range (degrees)
Definition: gimbal.hpp:208
 
float pitch_min_deg
Minimal pitch range (degrees)
Definition: gimbal.hpp:207
 
float yaw_max_deg
Maximal yaw range (degrees)
Definition: gimbal.hpp:210
 
Describes a gimbal object.
Definition: gimbal.hpp:220
 
Represents the gimbal mode with different axis settings.
Definition: gimbal.hpp:71
 
Represents global position using latitude, longitude, and altitude.
Definition: system_state.hpp:87