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 Reserved for built-in vehicle emulators

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