Additional apps

Veronte UDP Telemetry CLI

../_images/shortcut_icon.png

Veronte UDP Telemetry CLI

Veronte UDP Telemetry CLI is an additional command-line tool which allows Veronte Link to send Autopilot 1x telemetry over UDP.

Download

Once the Veronte Autopilot 1x has been purchased, a GitHub release should be created for the customer with the application.

To access to the release and download the software, read the Releases section of the Joint Collaboration Framework manual.

Installation

To install Veronte UDP Telemetry CLI on Windows just execute “veronte-udp-telemetry-cli.exe” and follow the indications of the Setup Wizard.

Warning

If users have any problems with the installation, please disable the antivirus and the Windows firewall. Disabling the antivirus depends on the antivirus software.

To disable the firewall, go to “Control Panel” \(\rightarrow\) “System and Security” \(\rightarrow\) “Windows Defender Firewall” and then, click on “Turn windows Defender Firewall on or off”.

../_images/firewall-windows-menu.png

Windows Defender Firewall

../_images/turn-off-firewall.png

Windows Defender Firewall: Customize Settings

Configuration

The following sections detail the steps to configure the Veronte system to transmit telemetry UDP messages through Veronte UDP Telemetry CLI, after it is installed.

1x PDI Builder

First, in 1x PDI Builder, the intended variables to send must be added to the corresponding telemetry vector.

To do this:

  1. Go to Telemetry menu \(\rightarrow\) Telemetry panel.

  2. By clicking the corresponding add button, add the desired telemetry variables to one of the telemetry vectors Data to VApp.

    ../_images/add_variable.png

    Add variables

    Note

    For further information about this Telemetry menu, please refer to the Telemetry section of 1x PDI Builder user manual.

  3. Configure the Data to VApp vector where the variables have been added as follows:

    • Frequency: Desired frequency of data transmission

    • Address: App 2 (Veronte apps address)

    Note

    Hash parameter is not configurable, it is automatically calculated by the system based on the telemetry vector configured by the user. It is a hexadecimal representation of the CRC of the fieldset.

    ../_images/data_vector_parameters.png

    Data vector parameters

  4. Save the changes by clicking save button.

Veronte UDP Telemetry CLI

Veronte UDP Telemetry CLI has a configuration file (tudp.config) where users must specify which telemetry variables to send. Once the app is installed, this file can be found in C:/Users/user/AppData/Roaming/VeronteUDPTelemetryCli:

../_images/configuration_file.png

Configuration file

Caution

On Windows, the AppData folder is hidden by default, if it is not visible in C:\Users\user, users can “show” it by checking the “Hidden Items” checkbox:

../_images/appdata.png

Windows File Explorer

This configuration file consists of 3 parts:

  • &HEAD hex. This establishes the header of the UDP messsages sent.

  • &LVARSEND_LVARS. Defines the LVARS, which are complex variables defined by the user, as expressions in which autopilot variables may or may not be used. Each new line between &LVARS and END_LVARS is a LVAR. LVARs can be boolean or number type.

    white

    Each LVAR has the following structure: L[id] = [default value] = [expression]

    • id: It is any integer to identify the LVAR and is used in the entries to indicate the LVAR to send.

    • default value: The default value is the initial value that the LVAR will have the first time it is set.

    • expression: For each UDP packet sent, the LVAR values are updated with the result by evaluating the expression.

      white

    Example

    L40 = false = (u1599_RVAR_1021 > (0.5)) && (u1599_BIT_1053 > (0))

    LVAR L40, initialized as false, and for each UDP packet sent, the LVAR value is updated with the result of the expression (u1599_RVAR_1021 > (0.5)) && (u1599_BIT_1053 > (0)).

    Where, u1599_RVAR_1021 refers to RVAR 1021 of the autopilot with address 1599, and u1599_BIT_1053 refers to BIT 1053 of the same autopilot.

  • Offsets/Entries. This is the information that is sent via UDP for each telemetry variable.

    Users must fill in for each entry (except bits) the following fields of the table in this order:

    1. MULT (float): Scaling factor by which the variable obtained from the autopilot is multiplied.

      Note

      Only used for the following VVARs (VERVARs): L_EQ, RVAR, UVAR, CUSTOM and LVAR.

      This field does not affect the bits, but must be set nonetheless.

    2. OFFSET (float): Offset factor to be added to the variable value obtained from the autopilot, before being multiplied by the MULT value.

      Note

      This field does not affect the bits, but must be set nonetheless.

    3. TVAR: Type of variable representing the value sent via UDP. It can be:

      Important

      The variables configured in the tudp.config file must match the previous configuration from 1x PDI Builder configuration section of this manual, so each variable is parsed according to the organization of the bits.

      • byte: Unsigned byte (0 to 255)

      • bit: A desired number of bits

      • UInt16: Unsigned 16-bit integer (0 to 65.536)

      • Int16: Signed 16-bit integer (-32.768 to 32.768)

      • UInt32: Unsigned 32-bit integer (-2.147.483.648 to 2.147.483.648)

      • Int32: Signed 32-bit integer (0 to 4.294.967.295)

      • Float: 32 bit single-precision floating-point ( \(3.4028237 \cdot 10^{38}\) to \(1.175494 \cdot 10^{-38}\) )

      Note

      Unlike the other TVARs, bits allows users to define several variables that are packed as only one within the UDP message. To do this, each new line is a variable that is included in the bits entry, until the &END_BIT line is read.

    4. UAV (int): Serial Number of the Autopilot 1x where the variables come from.

      Note

      UAV address does not matter for LVARs, since it is either already indicated in the LVAR expression or it is a value that does not come from any autopilot.

    5. VERVAR/VVAR: Type of variable in Veronte system.

      • RVAR: Real variables obtained directly from the autopilot

      • UVAR: Integer variables obtained directly from the autopilot

      • BIT: Bit variables obtained directly from the autopilot

      • CUSTOM

      • NONE: Equivalent to 0

      • L_EQ: Linear equation. Similar to TVAR bits, it allows defining several variables in a single entry.

        The resulting value of this type of entry is the addition of all the consequent variables, multiplied by COEFFICIENT, to which the unit conversion (UNIT), addition (OFFSET) and multiplication (MULT) are finally applied.

        The linear equation continues to wait for more variables until the &END_L_EQ line is read.

        Note

        As implemented, there is no use for the ID field when defining an L_EQ, since the IDs used are those of the following lines.

      • LVAR: It must be previously defined as explained above.

    6. ID (int): Identifier of the variable in Veronte. Refer to the Lists of Variables - Lists of interest section of 1x Software Manual for Index-Variable correspondence or check it on the Variables panel of the UI menu of 1x PDI Builder app.

    7. UNIT (int): Index of the unit of measurement of the variable in case a conversion has to be made. Please, see the Index-Unit correspondence table for detailed information.

    8. LIMITS (optional) (Only for BITs): It is optional and its format is [min&max], both are of float type.

    1. COEFFICIENT (Only for L_EQ): It is a coefficient of the linear equation.

Below are several examples of the configuration file depending on the type of variable to be sent.

  • RVARs. Example with Relative Timestamp, Longitude and Latitude variables:

    #HEAD HEX
    &HEAD       0AA0
    
    #MULT       OFFSET      TVAR            UAV         VERVAR      ID      UNIT
    1000        0           UInt32          1599        RVAR        300     NONE
    1           0           Float           1599        RVAR        500     NONE
    1           0           Float           1599        RVAR        501     NONE
    
    # First row: Send Time Since Hardware Start-Up (Milliseconds) as an UInt32 (4 bytes)
    # Second row: Send Longitude as a Float (4 bytes)
    # Third row: Send Latitude as a Float (4 bytes)
    
  • LVARs:

    #HEAD HEX
    &HEAD       1FB9
    
    &LVARS
    L1 = 0 = L1 + 1
    L70 = 20 = L70 + L1
    L45 = false = L70 % 2 == 0
    L80 = false = (u1599_RVAR_1021 > (0.5)) && (u1599_BIT_1053 > (0))
    &END_LVARS
    
    # L80 initially has a value of false. Next values are obtained from the expression
    # (u1599_RVAR_1021 > (0.5)) && (u1599_BIT_1053 > (0))
    # u1599_RVAR_1021 = value of RVAR 1021 (stky21, Stick Input y21)
    # from autopilot with address 1599.
    # The value of this variable is also updated every time
    
    # Use of Lvars
    #MULT       OFFSET      TVAR            UAV         VERVAR      ID      UNIT
    1           0           Int16           0000        LVAR        1       NONE
    1           0           Float           0000        LVAR        70      NONE
    1           0           byte            0000        LVAR        45      NONE
    
    # UAV address does not matter for these LVARs since they do not come from an autopilot.
    
    # First row: Send L1 as an Int16 (2 bytes)
    # Second row: Send L70 as a Float (4 bytes)
    # Third row: Send L45 as a byte (1 byte)
    
  • BITs:

    #HEAD HEX
    &HEAD       0AA0
    
    #MULT       OFFSET      TVAR            UAV         VERVAR      ID      UNIT
    1           0           bits
    #UAV        VERVAR      ID          UNIT        LIMITS(optional)
    1599        RVAR        501         NONE
    1599        RVAR        500         NONE        [-1000&1000]
    &END_BIT
    
    # Mult and Offset do not affect bits, but they must be set regardless.
    # Any int value is valid and acts the same.
    
  • BITs with LVARs. Taking the LVARs defined in the previous example:

    #HEAD HEX
    &HEAD       1FB9
    
    #Definition of LVARs
    &LVARS
    L1 = 0 = L1 + 1
    L70 = 20 = L70 + L1
    L45 = false = L70 % 2 == 0
    &END_LVARS
    
    #Bits example with lvars
    #MULT       OFFSET      TVAR            UAV         VERVAR      ID      UNIT
    1           0           bits
    #UAV        VERVAR      ID          UNIT        LIMITS(optional)
    0000        LVAR        1           NONE        [0&10]
    0000        LVAR        70          NONE        [100&500]
    0000        LVAR        45          NONE
    &END_BIT
    
    # Mult and Offset do not affect bits, but they must be set regardless.
    # Any int value is valid and acts the same.
    
    # In this example, each one of the variables occupies one bit in the resulting message.
    # L1, which is incremented by one, is checked if it is within the set limit 0&10,
    # i.e., for values strictly greater than 0 and strictly less than 10,
    # the bit will be 1, and for all other values, it will be 0.
    
    # The same applies to L70, when 100<L70>500, the bit is 1, and for the rest it is 0.
    
    # L45 on the other hand doesn't have a limit.
    # When no limit is established, it compares it to 1.
    # Since L45 is a boolean that checks that L70 is even,
    # the bit will be one when the value is 1, and 0 when not.
    
    # Concrete example: L1 = 16, L70 = 156, L45 = true (because L70 is even)
    # The UDP packet will be:
    # HEADER: 31 -71
    # L1: 16 0
    # L70: 0 0 28 67
    # L45: 1
    # bits: 6 = bits[1 1 0] because:
    # L1 is not in the limits (0), L70 is (middle 1), and L45 is 1/true (left 1).
    # The order is from least to most significant in the order indicated in the bits list.
    
  • L_EQ:

    #HEAD HEX
    &HEAD       0AA0
    
    #MULT       OFFSET      TVAR            UAV         VERVAR      ID      UNIT
    1           0          Int16           0000        L_EQ        NONE     NONE
    #UAV        VERVAR      ID          UNIT        COEFFICIENT
    1001        RVAR        1           NONE        2.3
    1001        UVAR        1           NONE        2.3
    &END_L_EQ
    
    # LINEAR EQUATION:
    # ((COEFFICIENT*RVAR(1) + COEFFICIENT*UVAR(1)) + Offset) * Mult
    # ((2.3*RVAR(1) + 2.3*UVAR(1)) + 0) * 1
    
  • L_EQ with LVARs. Taking the LVARs defined in the previous example:

    #HEAD HEX
    &HEAD       1FB9
    
    #Definition of LVARs
    &LVARS
    L1 = 0 = L1 + 1
    L70 = 20 = L70 + L1
    &END_LVARS
    
    #Linear equation example with lvars
    #MULT       OFFSET      TVAR            UAV         VERVAR      ID      UNIT
    2           13          Float           0000        L_EQ        0       NONE
    #UAV        VERVAR      ID          UNIT        COEFFICIENT
    0000        LVAR        1           NONE        50
    0000        LVAR        70          NONE        25
    &END_L_EQ
    
    # Concrete example: L1 = 1, L70 = 21
    # ((50*L1 + 25*L70) + Offset) * Mult = ((50*1 + 25*21) + 13) * 2 = 1176
    # Sent as a Float, therefore in the udp packet it will be:
    # 1176 = [0 0 -109 68]
    

Index-Unit correspondence table

Unit ID

Unit

0

m/s

1

kt

2

km/h

3

mph

4

ft/s

121

ft/m

321

mm/s

5

m

6

km

62

mm

63

cm

7

mi

8

NM

9

yd

10

ft

11

in

12

m/s²

13

ft/s²

14

in/s²

15

g (gravity)

202

rad

16

rad [\(-\pi, \pi\)]

203

rad [0, \(2\pi\)]

205

º

17

º [-180,180]

101

º [0,360]

102

º ‘ ‘’

103

º ‘ ‘’ (N/S)

104

º ‘ ‘’ (E/W)

21

T

160

nT

23

G

22

mG

24

V

25

mV

26

A

27

mA

340

kA

28

Pa

29

kPa

30

bar

31

mbar

32

psi

33

mmHg

34

at

35

atm

147

Pa²

36

K

37

ºC

38

ºF

39

s

120

Time

40

min

41

h

330

ns

108

\(\mu\) s

109

ms

42

rad/s

117

º/s

43

rad/min

44

rad/h

45

rps

46

rpm

47

rph

57

m³/s

58

gal/s

54

gal/h

59

l/s

55

l/h

56

60

x1

64

%

61

pkts/s

105

Hz

106

mHz

107

kHz

140

Bd

141

kBd

142

MBd

110

111

cm²

112

mm²

113

km²

114

mile²

115

ft²

116

yd²

118

bit

119

byte

131

KB

132

GB

122

kg

123

g

124

tonnes

125

lbs

126

oz

127

N

128

kN

129

lbf

130

pdl

134

rad/s²

135

rad/min²

136

rad/h²

137

º/s²

138

º/m²

139

º/h²

329

rpm/s

143

144

(m/s)²

145

(cm/s)²

146

(mm/s)²

327

\(\Omega\)

328

Henrios

322

watios

323

kW

324

Kgm/s

325

erg/s

326

cv

331

332

dm³

333

mm³

334

L

335

mL

Operation

This section details the steps to transmit telemetry UDP messages through Veronte UDP Telemetry CLI.

Sending UDP messages

Veronte UDP Telemetry CLI connects to Veronte Link to send the previously configured Autopilot 1x telemetry via UDP messages. For this reason, the connection between the autopilot and Veronte Link must be properly established, and Veronte Link needs to be opened.

Note

For more information about this connection, please refer to Connection - Operation section of this manual.

These are the options to send the configured variables:

  1. Launching Veronte UDP Telemetry CLI by double-clicking on the App shortcut or the .exe file:

    ../_images/shortcut_icon.png

    Veronte UDP Telemetry CLI shorcut

    This will send the UDP messages with the following default configuration:

    • Host url: 127.0.0.1

    • UDP port: 3000

    • Frequency: 10 Hz

    Note

    These installation files location will vary depending on the location selected during installation.

    Note that Veronte UDP Telemetry CLI Installer .exe is not the Veronte UDP Telemetry CLI .exe to launch.

  2. Launching Veronte UDP Telemetry CLI .exe from terminal, where it is possible to specify the parameters of the trasmission using the following command-line options:

    • - u: UDP address

    • - p: UDP port

    • - f: Desired frequency of data transmission (Hz)

    This is an example:

    ../_images/launching_from_terminal.png

    Launching from terminal example

The expected outcome is the following:

../_images/succesful_connection.png

Expected outcome

Note

Veronte UDP Telemetry CLI always adds the matcher 0x0A 0xA0 at the beginning of each sent UDP packet before the variable data.

Therefore the received UDP packet will be: 0x0A 0xA0 followed by the consecutive stream of data in the order and byte width configured in tudp.config.

If users have any doubts about the UDP packets that are generated, please refer to Viewing UDP data - Troubleshooting section of this manual.