Onboard-SDK-ROS
DJI_Flight.h
Go to the documentation of this file.
1 
11 #ifndef DJI_FLIGHT_H
12 #define DJI_FLIGHT_H
13 
14 #include "DJI_API.h"
15 
16 namespace DJI
17 {
18 namespace onboardSDK
19 {
20 #pragma pack(1)
21 
22 typedef struct FlightData
23 {
24  uint8_t flag;
25  float32_t x;
26  float32_t y;
27  float32_t z;
28  float32_t yaw;
29 } FlightData;
30 
31 #pragma pack()
32 
34 class Flight
35 {
36  public:
37  enum TASK
38  {
39  TASK_GOHOME = 1,
40  TASK_TAKEOFF = 4,
41  TASK_LANDING = 6
42  };
43 
44  enum VerticalLogic
45  {
46  VERTICAL_VELOCITY = 0x00,
47  VERTICAL_POSITION = 0x10,
48  VERTICAL_THRUST = 0x20,
49  };
50 
51  enum HorizontalLogic
52  {
53  HORIZONTAL_ANGLE = 0x00,
54  HORIZONTAL_VELOCITY = 0x40,
55  HORIZONTAL_POSITION = 0X80,
56  };
57 
58  enum YawLogic
59  {
60  YAW_ANGLE = 0x00,
61  YAW_RATE = 0x08
62  };
63 
64  enum HorizontalCoordinate
65  {
66  HORIZONTAL_GROUND = 0x00,
67  HORIZONTAL_BODY = 0x02
68  };
69 
72  {
73  YAW_GROUND = 0x00,
74  YAW_BODY = 0X01
75  };
78  {
79  SMOOTH_DISABLE = 0x00,
80  SMOOTH_ENABLE = 0x01
81  };
82 
83  enum Status
84  {
85  STATUS_GROUND_STANDBY = 1,
86  STATUS_TAKE_OFF = 2,
87  STATUS_SKY_STANDBY = 3,
88  STATUS_LANDING = 4,
89  STATUS_FINISHING_LANDING = 5,
90  };
91 
92  enum Device
93  {
94  DEVICE_RC = 0,
95  DEVICE_APP = 1,
96  DEVICE_SDK = 2,
97  };
98 
100  enum Mode
101  {
102  ATTI_STOP = 0,
103  HORIZ_ANG_VERT_VEL_YAW_ANG = 1,
104  HORIZ_ANG_VERT_VEL_YAW_RATE = 2,
105  HORIZ_VEL_VERT_VEL_YAW_ANG = 3,
106  HORIZ_VEL_VERT_VEL_YAW_RATE = 4,
107  HORIZ_POS_VERT_VEL_YAW_ANG = 5,
108  HORIZ_POS_VERT_VEL_YAW_RATE = 6,
109  HORIZ_ANG_VERT_POS_YAW_ANG = 7,
110  HORIZ_ANG_VERT_POS_YAW_RATE = 8,
111  HORIZ_VEL_VERT_POS_YAW_ANG = 9,
112  HORIZ_VEL_VERT_POS_YAW_RATE = 10,
113  HORIZ_POS_VERT_POS_YAW_ANG = 11,
114  HORIZ_POS_VERT_POS_YAW_RATE = 12,
115  HORIZ_ANG_VERT_THR_YAW_ANG = 13,
116  HORIZ_ANG_VERT_THR_YAW_RATE = 14,
117  HORIZ_VEL_VERT_THR_YAW_ANG = 15,
118  HORIZ_VEL_VERT_THR_YAW_RATE = 16,
119  HORIZ_POS_VERT_THR_YAW_ANG = 17,
120  HORIZ_POS_VERT_THR_YAW_RATE = 18,
121  GPS_ATII_CTRL_CL_YAW_RATE = 97,
122  GPS_ATTI_CTRL_YAW_RATE = 98,
123  ATTI_CTRL_YAW_RATE = 99,
124  ATTI_CTRL_STOP = 100,
125  MODE_NOT_SUPPORTED = 0xFF
126  };
127 
136  public:
137  Flight(CoreAPI *ControlAPI = 0);
138 
139  void task(TASK taskname, CallBack TaskCallback = 0, UserData userData = 0);
140  void setArm(bool enable, CallBack ArmCallback = 0, UserData userData = 0);
141  void control(uint8_t flag, float32_t x, float32_t y, float32_t z, float32_t yaw);
142  void setMovementControl(uint8_t flag, float32_t x, float32_t y, float32_t z, float32_t yaw);
143  void setFlight(FlightData *data);
144 
145  QuaternionData getQuaternion() const;
146 
147  EulerAngle getEulerAngle() const;
148 
149  PositionData getPosition() const;
150  VelocityData getVelocity() const;
152  CommonData getAcceleration() const;
153  CommonData getYawRate() const;
154 
156  MagnetData getMagnet() const;
157 
158  Device getControlDevice() const;
159  Status getStatus() const;
160  Mode getControlMode() const;
161 
162  Angle getYaw() const;
163  Angle getRoll() const;
164  Angle getPitch() const;
165 
166  public:
167  static void armCallback(CoreAPI *api, Header *protoclHeader, UserData userData = 0);
168  static void taskCallback(CoreAPI *api, Header *protocolHeader, UserData userData = 0);
169 
170  public:
171 
173  static EulerianAngle toEulerianAngle(QuaternionData data);
174  static EulerAngle toEulerAngle(QuaternionData quaternionData);
175  static QuaternionData toQuaternion(EulerianAngle eulerAngleData);
176 
177  public:
178  CoreAPI *getApi() const;
179  void setApi(CoreAPI *value);
180 
181  private:
182  CoreAPI *api;
183  TaskData taskData;
184 
191 #ifdef USE_SIMULATION
192  public:
193  bool isSimulating() const;
194  void setSimulating(bool value);
195 
196  private:
197  bool simulating;
198  Vector3dData position;
199  Vector3dData speed;
200  EulerAngle AngularSim;
201 #endif // USE_SIMULATION
202 };
203 
204 } //namespace OnboardSDK
205 } //namespace DJI
206 #endif // DJI_FLIGHT_H
Definition: DJICommonType.h:81
Definition: DJI_Type.h:309
Core API for DJI onboardSDK library.
YawCoordinate
Definition: DJI_Flight.h:71
CoreAPI implements core Open Protocol communication between M100/M600/A3 and your onboard embedded pl...
Definition: DJI_API.h:195
Definition: DJICommonType.h:60
Definition: DJI_Type.h:366
Definition: DJI_Type.h:269
Definition: DJI_Flight.h:22
Mode
Definition: DJI_Flight.h:100
double Angle
Definition: DJICommonType.h:78
SmoothMode
Definition: DJI_Flight.h:77
Definition: DJI_Type.h:259
Definition: DJI_Type.h:118
Flight class encapsulates all flight control related functions provided by the DJI OnboardSDK...
Definition: DJI_Flight.h:34
Definition: DJI_Type.h:234
Definition: DJI_Mission.cpp:16
Definition: DJI_Type.h:243
Definition: DJICommonType.h:89