Vehicle Specific Modules SDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Vehicle registration with UCS


Upon detecting a vehicle VSM sends Vsm_message with Register_device payload. This request serves for several purposes:

  • Associate Device with ID which will be used to reference this device instance during the session.
  • Define time origin for subsequent telemetry messages
  • Tell server the subsystems supported by device
  • Tell server the telemetry fields supported by device
  • Tell server the mission items supported by device
  • Tell server the commands supported by device

Register_device message

Field nameTypeDescription
begin_of_epochuint64, millisecondsStart of epoch since 1970-01-01 00:00:00 UTC. All timestamps in telemetry fields will be relative to this value.
type Device_type Type of device (Vehicle, ADSB receiver, etc...)
propertiesProperty_field User defined list of key-value pairs used to tell ucs additional information about vehicle.
subsystems Register_subsystem

Register_subsystem message

Device is a set of subsystems of different types. Vehicle registration should register at least a flight controller (autopilot). Other subsystems are optional. There can be multiple instances of the same type (for example: two cameras).

Field nameTypeDescription
typeSubsystem_type Value from Subsystem types
properties Property_field key-value pairs for device specific information
telemetry_fieldsRegister_field List of telemetry fields sent by the VSM. See Telemetry protocol for details.
commands Register_command List of available commands and mission items accepted by device. See vehicle_commands and mission_items for details

Subsystem types

Name Description
SUBSYSTEM_TYPE_USERUser defined subsystem. Used to register unspecified subsystem.

Flight controller subsystem

There is one required property and one optional property for flight controller subsystem:

Subsystem propertyTypeRequiredDescription
autopilot_typestring yesAny user defined name. UgCS natively supports values from Autopilot names.
autopilot_serialstring no Autopilot serial number if it can be read from autopilot

Register_command message

Register_command message is used to register feature supported by vehicle with UgCS. Later VSM can dynamically enable/disable all previously registered commands via Command_availability message.

Field name Field typeDescription
namestring Name of command. Either telemetry field or mission item or command.
iduint32 Session specific ID mapped to this command.
parametersRegister_fieldList of parameters supported by given command. (See also Register_field message)
available_in_missionbool this command is available as part of mission
available_as_commandbool this command is available standalone command

Formal definition is found in Register_command message in ucs_vsm.proto file.

Autopilot names

List of autopilots which can be reported by VSM when registering subsystem of type SUBSYSTEM_TYPE_FLIGHT_CONTROLLER and UgCS will know how to display them.

ardupilot ArdupilotMega, Ardupilot on Pixhawk
px4 PX4
dji_a2 DJI A2
dji_a3 DJI A3
dji_wkm DJI Wookong
dji_naza DJI NAZA V2
dji_phantom2DJI Phantom2
dji_phantom2_vpDJI Phantom2 Vision Plus
dji_phantom3DJI Phantom3
dji_phantom4DJI Phantom4
dji_phantom4_proDJI Phantom4 Pro
dji_phantom4_pro_v2DJI Phantom4 Pro V2.0
dji_inspire1DJI Inspire1
dji_inspire2DJI Inspire2
dji_matrice100DJI Matrice 100
dji_matrice600DJI Matrice 600
dji_aceDJI ACE
dji_mavicDJI Mavic
dji_sparkDJI Spark
dji_n3DJI N3
microdrones Microdrones MD200, MD1000
mikrokopter Mikrokopter
micropilot Micropilot
kestrel Kestrel
emulator Built in vehicle emulator

VSM can report other values here. In that case user will need to select the vehicle profile manually.

Vehicle frames

VSM should tell the frame type upon vehicle registration. VSM can report any string as frame name. If non built-in values are reporthed then user will need to select the frame avatar for the vehicle manually. List of built-in frame names which can be reported by VSM Register_vehicle.frame_type field.

generic_fixed_wing Plane
generic_heli Classic heli frame
generic_tri_y Three leg (Y type) frame with two legs in front
generic_quad_i Four leg frame with one leg in front
generic_quad_x Four leg frame with two legs in front
generic_hexa_i Six leg frame with one leg in front
generic_hexa_v Six leg frame with two legs in front
generic_hexa_y Three leg (Y type) frame with double rotors two legs in front
generic_hexa_yi Three leg (Y type) frame with double rotors one leg in front
generic_octa_x Four leg (X type) frame with double rotors two legs in front
generic_octa_xi Four leg (+ type) frame with double rotors one leg in front
generic_octa_i Eight leg frame with one leg in front
generic_octa_v Eight leg frame with two legs in front
generic_tilt_rotor Tilt rotor
generic_vtol_duo VTOL plane with 2 rotors
generic_vtol_quad VTOL plane with 4 rotors
generic_vtol Generic VTOL capable vehicle
3dr_iris 3DR Iris frame (quad)
dji_phantom DJI Phantom2/3/4
dji_matrice DJI Matrice 100
dji_inspire DJI Inspire1
yuneec_h520 Yuneec Typhoon H520