From 052f7578bb6801c0b9b2b5fad87a5b9627fc5076 Mon Sep 17 00:00:00 2001 From: Kush Makkapati Date: Sun, 30 Mar 2025 19:36:00 +0100 Subject: [PATCH 1/5] Add lists for vehicle classification --- radio/app/customTypes.py | 7 +++++++ radio/app/utils.py | 31 +++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/radio/app/customTypes.py b/radio/app/customTypes.py index 1d0b19398..3b60459e0 100644 --- a/radio/app/customTypes.py +++ b/radio/app/customTypes.py @@ -1,3 +1,4 @@ +from enum import Enum from typing import Any, Union from typing_extensions import NotRequired, TypedDict @@ -37,3 +38,9 @@ class MotorTestAllValues(TypedDict): class SetFlightModeValueAndNumber(TypedDict): mode_number: int flight_mode: int + + +class VehicleType(Enum): + UNKNOWN: int = 0 + FIXED_WING: int = 1 + MULTIROTOR: int = 2 diff --git a/radio/app/utils.py b/radio/app/utils.py index 3fc9bd87a..8617c5cf3 100644 --- a/radio/app/utils.py +++ b/radio/app/utils.py @@ -1,6 +1,7 @@ import sys from typing import Any, List +from customTypes import VehicleType from pymavlink import mavutil from serial.tools import list_ports @@ -207,3 +208,33 @@ def wpToMissionItemInt( wp.mission_type, ) return wp_int + + +FIXED_WING_TYPES = [ + mavutil.mavlink.MAV_TYPE_FIXED_WING, + mavutil.mavlink.MAV_TYPE_VTOL_TAILSITTER_DUOROTOR, + mavutil.mavlink.MAV_TYPE_VTOL_TAILSITTER_QUADROTOR, + mavutil.mavlink.MAV_TYPE_VTOL_TILTROTOR, + mavutil.mavlink.MAV_TYPE_VTOL_FIXEDROTOR, + mavutil.mavlink.MAV_TYPE_VTOL_TAILSITTER, + mavutil.mavlink.MAV_TYPE_VTOL_TILTWING, +] + +MULTIROTOR_TYPES = [ + mavutil.mavlink.MAV_TYPE_QUADROTOR, + mavutil.mavlink.MAV_TYPE_HEXAROTOR, + mavutil.mavlink.MAV_TYPE_OCTOROTOR, + mavutil.mavlink.MAV_TYPE_TRICOPTER, + mavutil.mavlink.MAV_TYPE_DODECAROTOR, + mavutil.mavlink.MAV_TYPE_ADSB, # For cube orange (?) + mavutil.mavlink.MAV_TYPE_GENERIC_MULTIROTOR, +] + + +def getVehicleType(typeId: int) -> VehicleType: + if typeId in FIXED_WING_TYPES: + return VehicleType.FIXED_WING + elif typeId in MULTIROTOR_TYPES: + return VehicleType.MULTIROTOR + else: + return VehicleType.UNKNOWN From 9ef45f7f70dc821d34b17e3af46d2e25bfe3d9cc Mon Sep 17 00:00:00 2001 From: Kush Makkapati Date: Wed, 9 Apr 2025 13:24:45 +0100 Subject: [PATCH 2/5] Allow different vehicle classifications for connection --- radio/app/drone.py | 11 +++++++---- radio/app/utils.py | 6 +++--- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/radio/app/drone.py b/radio/app/drone.py index 697b39294..fbb318bdf 100644 --- a/radio/app/drone.py +++ b/radio/app/drone.py @@ -22,8 +22,8 @@ from app.controllers.navController import NavController from app.controllers.paramsController import ParamsController from app.controllers.rcController import RcController -from app.customTypes import Number, Response -from app.utils import commandAccepted +from app.customTypes import Number, Response, VehicleType +from app.utils import commandAccepted, getVehicleType # Constants @@ -132,8 +132,11 @@ def __init__( self.sendConnectionStatusUpdate("Received heartbeat") - self.aircraft_type = initial_heartbeat.type - if self.aircraft_type not in (1, 2): + self.aircraft_type = getVehicleType(initial_heartbeat.type) + if self.aircraft_type not in ( + VehicleType.FIXED_WING.value, + VehicleType.MULTIROTOR.value, + ): self.logger.error("Aircraft not plane or quadcopter") self.master.close() self.master = None diff --git a/radio/app/utils.py b/radio/app/utils.py index 8617c5cf3..fb9f374c3 100644 --- a/radio/app/utils.py +++ b/radio/app/utils.py @@ -233,8 +233,8 @@ def wpToMissionItemInt( def getVehicleType(typeId: int) -> VehicleType: if typeId in FIXED_WING_TYPES: - return VehicleType.FIXED_WING + return VehicleType.FIXED_WING.value elif typeId in MULTIROTOR_TYPES: - return VehicleType.MULTIROTOR + return VehicleType.MULTIROTOR.value else: - return VehicleType.UNKNOWN + return VehicleType.UNKNOWN.value From d81ec9e42f8457c22d86766593fcbfedbc5054ee Mon Sep 17 00:00:00 2001 From: Kush Makkapati Date: Wed, 9 Apr 2025 13:29:16 +0100 Subject: [PATCH 3/5] Remove typehint from enum --- radio/app/customTypes.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/radio/app/customTypes.py b/radio/app/customTypes.py index 3b60459e0..b47db3ad5 100644 --- a/radio/app/customTypes.py +++ b/radio/app/customTypes.py @@ -41,6 +41,6 @@ class SetFlightModeValueAndNumber(TypedDict): class VehicleType(Enum): - UNKNOWN: int = 0 - FIXED_WING: int = 1 - MULTIROTOR: int = 2 + UNKNOWN = 0 + FIXED_WING = 1 + MULTIROTOR = 2 From a5b0f3202da26805c9b60d1c00401657e447ef85 Mon Sep 17 00:00:00 2001 From: Kush Makkapati Date: Wed, 9 Apr 2025 13:35:35 +0100 Subject: [PATCH 4/5] Update types list --- radio/app/utils.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/radio/app/utils.py b/radio/app/utils.py index fb9f374c3..37d5d329f 100644 --- a/radio/app/utils.py +++ b/radio/app/utils.py @@ -1,10 +1,11 @@ import sys from typing import Any, List -from customTypes import VehicleType from pymavlink import mavutil from serial.tools import list_ports +from app.customTypes import VehicleType + from . import socketio @@ -212,12 +213,15 @@ def wpToMissionItemInt( FIXED_WING_TYPES = [ mavutil.mavlink.MAV_TYPE_FIXED_WING, - mavutil.mavlink.MAV_TYPE_VTOL_TAILSITTER_DUOROTOR, - mavutil.mavlink.MAV_TYPE_VTOL_TAILSITTER_QUADROTOR, + mavutil.mavlink.MAV_TYPE_VTOL_DUOROTOR, + mavutil.mavlink.MAV_TYPE_VTOL_QUADROTOR, mavutil.mavlink.MAV_TYPE_VTOL_TILTROTOR, - mavutil.mavlink.MAV_TYPE_VTOL_FIXEDROTOR, - mavutil.mavlink.MAV_TYPE_VTOL_TAILSITTER, - mavutil.mavlink.MAV_TYPE_VTOL_TILTWING, + # mavutil.mavlink.MAV_TYPE_VTOL_TAILSITTER, + # mavutil.mavlink.MAV_TYPE_VTOL_TILTWING, + mavutil.mavlink.MAV_TYPE_VTOL_RESERVED2, + mavutil.mavlink.MAV_TYPE_VTOL_RESERVED3, + mavutil.mavlink.MAV_TYPE_VTOL_RESERVED4, + mavutil.mavlink.MAV_TYPE_VTOL_RESERVED5, ] MULTIROTOR_TYPES = [ @@ -227,7 +231,6 @@ def wpToMissionItemInt( mavutil.mavlink.MAV_TYPE_TRICOPTER, mavutil.mavlink.MAV_TYPE_DODECAROTOR, mavutil.mavlink.MAV_TYPE_ADSB, # For cube orange (?) - mavutil.mavlink.MAV_TYPE_GENERIC_MULTIROTOR, ] From f37ed76401c5772a3e875829d1bda94e84f7d628 Mon Sep 17 00:00:00 2001 From: Kush Makkapati Date: Wed, 9 Apr 2025 13:38:27 +0100 Subject: [PATCH 5/5] Fixed typing issue --- radio/app/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/app/utils.py b/radio/app/utils.py index 37d5d329f..da7522d8f 100644 --- a/radio/app/utils.py +++ b/radio/app/utils.py @@ -234,7 +234,7 @@ def wpToMissionItemInt( ] -def getVehicleType(typeId: int) -> VehicleType: +def getVehicleType(typeId: int) -> int: if typeId in FIXED_WING_TYPES: return VehicleType.FIXED_WING.value elif typeId in MULTIROTOR_TYPES: