Use raw missions in AutoPilot

- uses MAVSDK::MissionRaw objects for missions
- added new state AZ_DRONE_STATE_MISSION_UPLOADED
- new state is used in AzDroneControllerPlane before waiting for AUTO switch

TODO!!
- move to AzMissionController
- use JSON file instead of hard coded mission items
This commit is contained in:
Tuomas Järvinen
2024-11-30 17:09:00 +01:00
parent be36fc5c50
commit 37e8cfd3fe
4 changed files with 182 additions and 16 deletions
+15
View File
@@ -5,6 +5,7 @@
#include <mavsdk/mavsdk.h>
#include <mavsdk/plugins/action/action.h>
#include <mavsdk/plugins/mission_raw/mission_raw.h>
#include <mavsdk/plugins/telemetry/telemetry.h>
#include "az_mission.h"
@@ -19,6 +20,7 @@ typedef enum {
AZ_DRONE_STATE_GOT_TELEMETRY_MODULE,
AZ_DRONE_STATE_GOT_ACTION_MODULE,
AZ_DRONE_STATE_HEALTH_OK,
AZ_DRONE_STATE_MISSION_UPLOADED,
AZ_DRONE_STATE_ARMED,
AZ_DRONE_STATE_TAKE_OFF,
AZ_DRONE_STATE_AUTO_MODE_ACTIVATED,
@@ -44,8 +46,18 @@ protected:
bool stateGetActionModule(void);
bool stateHealthOk(void);
bool stateArm(void);
bool stateUploadMission(void);
bool stateTakeoff(void);
bool stateFlyMission(void);
void setRawMission(void);
MissionRaw::MissionItem makeRawMissionItem(float latitude_deg1e7,
float longitude_deg1e7,
int32_t altitude_m,
float do_photo,
MAV_FRAME frame,
MAV_CMD command,
float p2 = 0,
float p3 = 0);
// Slots that are called by the emitted Qt signals.
protected slots:
@@ -93,7 +105,10 @@ protected:
shared_ptr<System> mSystem;
Telemetry *mTelemetry;
Action *mAction;
MissionRaw *mMissionRaw;
Telemetry::Position mFirstPosition;
Telemetry::Position mCurrentPosition;
AzMissionController *mMissionController;
bool isCopterType;
int mMissionItemSeqNum;
};