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;
274 if (!descriptor.custom_name.empty()) {
275 return descriptor.custom_name == candidate.custom_name;
277 if (!descriptor.model_name.empty() || !descriptor.vendor_name.empty()) {
278 return descriptor.model_name == candidate.model_name &&
279 descriptor.vendor_name == candidate.vendor_name;
317 const float yaw_rate_rad_s)
const;
357 std::shared_ptr<GimbalImpl> _impl;
Gimbal control class.
Definition: gimbal.hpp:244
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:272
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