Files
autopilot/misc/rtsp_ai_player/aienginedefinitions.h
T
2024-07-25 17:49:30 +03:00

87 lines
1.8 KiB
C

#pragma once
#include <QByteArray>
#include <QString>
#include "aienginegimbalserverdefines.h"
// Common geoposition
typedef struct {
float lat;
float lon;
float alt;
} AiEngineGeoPosition;
// AiEngineGimbalClient -> AiEngineGimbalServer is sent when location or position of the drone changes.
typedef struct {
AiEngineGeoPosition position;
float pitch;
float yaw;
} AiEngineDronePosition;
typedef struct {
int left;
int top;
int right;
int bottom;
} AiEngineRectangle;
// AiEngineGimbalClient -> AiEngineGimbalServer when AI finds the target. Index is a new variable to
// keep track of the targets.
typedef struct {
int index;
AiEngineRectangle rectangle;
} AiEngineCameraTarget;
// AiEngineGimbalServer -> AiEngineGimbalClient when AiEngineGimbalServer has zoomed to the target
// defined in AiEngineCameraTarget. Position variable contains calculated geoposition of the target.
typedef struct {
int targetIndex;
AiEngineGeoPosition position;
} AiEngineTargetPosition;
// AiEngineGimbalClient -> AiEngineGimbalServer when AI asks to change camera direction. For example
// nothing interesting was not found. AiEngineGimbalServer -> AiEngineGimbalClient every few second so
// that AI knows the position of the camera.
typedef struct {
float yaw;
float pitch;
float zoom;
} AiEngineCameraPosition;
struct AiEngineRectangleProperties
{
int width;
int height;
int middleX;
int middleY;
};
typedef struct {
// Get these only once
uint resolutionX;
uint resolutionY;
float maxZoom;
// Update these before every command
float currentYaw;
float currentPitch;
float currentRoll;
float currentZoom;
} AiEngineGimbalStatus;
struct AiEngineServerSerialCommandStructure
{
SERIAL_COMMAND_ID id;
QByteArray command;
QString description;
};