Added server side code.

This commit is contained in:
Nffj84
2024-07-25 17:49:30 +03:00
parent 8e88cb6fe1
commit 147213cec6
15 changed files with 951 additions and 11 deletions
@@ -0,0 +1,68 @@
#pragma once
#include <QDebug>
#include "aienginedefinitions.h"
#include "aienginegimbalserverserialcommand.h"
#include "aienginegimbalserverserialport.h"
#include "aienginegimbalserverserialresponse.h"
const double EARTH_RADIUS = 6371000.0; // Earth's radius in meters
struct GPSData
{
float altitude; // Meters
float latitude; // Decimal degrees
float longitude; // Decimal degrees
};
struct CameraData
{
uint16_t height; // Pixels
uint16_t width; // Pixels
float pitch; // Degrees
float yaw; // Degrees
float fow; // Degrees
};
struct DroneData
{
GPSData gps;
float yaw; // Degrees
float pitch; // Degrees
float roll; // Degrees
};
class AiEngineGimbalServerActions : public QObject
{
Q_OBJECT
public:
explicit AiEngineGimbalServerActions(QObject *parent = nullptr);
public:
void setup(AiEngineGimbalServerSerialPort *serialPort, AiEngineGimbalServerSerialCommand *serialCommand, AiEngineGimbalServerSerialResponse *serialResponse, AiEngineGimbalStatus *gimbalStatus);
AiEngineRectangleProperties calculateRectangleProperties(int top, int left, int bottom, int right);
void turnToTarget(AiEngineRectangleProperties rectangle);
void zoomToTarget(AiEngineRectangleProperties rectangle);
void getLocation(AiEngineDronePosition dronePosition, int targetIndex);
void restoreOrientationAndZoom(AiEngineGimbalStatus gimbalStatus);
signals:
void aiTargetZoomed(AiEngineTargetPosition);
private:
AiEngineGimbalServerSerialPort *mSerialPort;
AiEngineGimbalServerSerialCommand *mSerialCommand;
AiEngineGimbalServerSerialResponse *mSerialResponse;
AiEngineGimbalStatus *mGimbalStatus;
CameraData getCameraData(void);
void getAnglesToOnScreenTarget(int targetX, int targetY, float &resultYaw, float &resultPitch);
AiEngineGeoPosition calculateTargetLocation(DroneData drone, CameraData camera);
void calculateDistancesToTarget(float altitude, float cameraPitch, float &slantDistance, float &horizontalDistance);
float degreesToRadians(float degrees);
};