# ULS-Heli-G2 Interface Control Document

> Electrical, mechanical and communication interfaces of ULS-Heli-G2 — precision landing for large VTOL drones and helicopters, up to 50 m range.

---

Site [llms.txt](/llms.txt)

---

> **ULSDC-PBICD210925** · version 1.0.1 · issued September 22, 2025  
> The numbered PDF is the controlled copy: [download it from the portal](https://downloads.uavlas.com).

## Introduction

### Purpose

This document outlines the interfaces between the ULS-Heli-G2 system components, including the transmitter, receiver, and autopilot systems (Ardupilot and PX4 and similar).

### Scope

This document is intended for use by system engineers, integrators, and developers working with ULS-Heli-G2 systems. It provides detailed information on the interfaces between the system components, ensuring seamless integration and operation.

## System Components


### Transmitter (Ground Unit)
![ULS-Heli-G2 Transmitter](/library-assets/images/uls-heli-g2/uls-hl-g2-tx-noted.png)

*Figure: ULS-Heli-G2 Transmitter*
A transmitter is a device placed on the ground (platform, moving object). It emits a signal in the Infrared range and serves as a kind of beacon. Transmitter marks position for drone landing. 
The primary function of the transmitter is to continuously send out a coded signal that can be detected and interpreted by the receiver unit onboard the XCopter. This signal contains critical information needed for the operation of the system, such as positional data, commands, and status. 

### Receiver (Onboard Unit)
![ULS-Heli-G2 Receiver](/library-assets/images/uls-heli-g2/uls-heli-g2-rxm-rxs.png)

*Figure: ULS-Heli-G2 Receiver*
A receiver is a device that is placed on board an aircraft. 
The receiver decodes this signal to derive flight information such as positional coordinates, real-time transmitter status updates, and landing guidance. It interprets the data to navigate accurately and ensure drone follows the intended flight path. It provides feedback to the autopilot systems, such as Ardupilot and PX4, to adjust the flight parameters as needed for optimal and safety landing or hovering above.


## Interface Overview

![System Interfaces Overview](/library-assets/images/uls-heli-g2/interfaces-overview.png)

*Figure: ULS-Heli-G2 System Interfaces Overview*

### Transmitter to Control PC Interface (External Sensors)

The transmitter can be connected to a control PC or external equipment for configuration, status monitoring, and data exchange.

#### Data Types
- Status information
- Control signals  
- Transmitter configuration
- External IMU/COMPASS data

#### Connection Types
- **CAN Bus** - For network communication
- **USB** - For configuration and firmware updates
- **RS422** - For serial communication with external sensors

#### Transmitter Pinout

![10 pin connector](/library-assets/images/uls-heli-g2/uls-hl-g2-tx-connector10.png)

| Pin | Function |
|-----|----------|
| 1 | Vin +18V – +28V |
| 2 | RS422A |
| 3 | RS422B |
| 4 | RS422Y |
| 5 | RS422Z |
| 6 | CAN-L |
| 7 | CAN-H |
| 8 | USB-D- |
| 9 | USB-D+ |
| 10 | GND |

*Table: Transmitter 10 Pin Connector Pinout*
<div class="warning">
Please DO NOT "HOT-PLUG" Transmitter cable. Apply power on transmitter only when connector connected to transmitter.
Please check pin numbers on connector. 
Incorrect wiring or connection under voltage can damage the device and USB interface of connected PC !
</div>


### Transmitter to Receiver Interface

The transmitter and receiver use an **optical interface** to exchange data. Transmission uses **IR emission at 940 nanometers**. Data transmission is only in the direction from the transmitter to the receiver.

#### Data Types
- Position encoded
- Status encoded data (Transmitter orientation and instructions)

#### Connection Type
- **Optical IR 940nm** - Infrared optical link

### Receiver to Autopilot and Receiver to PC Interfaces

#### Data Types
- MAVLink messages
- ULS-Blitz frames
- ASCII protocol

#### Connection Types
- **UART** - Serial communication with autopilot
- **CAN** - Network communication
- **USB** - Direct PC connection

#### Receiver Pinout

![Receiver pin connectors](/library-assets/images/uls-heli-g2/uls-hl-g2-rx-connectors.png)

| Pin | Function |
|-----|----------|
| 1 | Vin (+5V) |
| 2 | CANH |
| 3 | CANL |
| 4 | GND |

*Table: 4 Pin Connector Pinout*
| Pin | Function |
|-----|----------|
| 1 | Vin (+5V) |
| 2 | CANH |
| 3 | CANL |
| 4 | UART_TX (OUT) |
| 5 | UART_RX(IN) |
| 6 | USB_D- |
| 7 | USB_D+ |
| 8 | GND |

*Table: 8 Pin Connector Pinout*
## Powering Interfaces

![Powering Interfaces](/library-assets/images/uls-heli-g2/powering-interfaces.png)

*Figure: Power Distribution and Connections*

### Transmitter Electrical Characteristics

| Parameter | Value | Unit | Notes |
|-----------|-------|------|-------|
| Supply Voltage | 22.0 - 26.0 | V | Nominal 24V |
| Supply Current | 4 | A | Peak |
| Power Consumption | 18.1 | W | Typical |

*Table: Transmitter Electrical Specifications*
### Receiver Electrical Characteristics

| Parameter | Value | Unit | Notes |
|-----------|-------|------|-------|
| Supply Voltage | 5.0 | V | From flight controller |
| Supply Current | 1 | A | Peak |
| Power Consumption | 3 | W | Typical |

*Table: Receiver Electrical Specifications*
## Functional Interfaces

![Functional Interfaces Diagram](/library-assets/images/uls-heli-g2/functional-interfaces.png)

*Figure: Data Flow and Functional Interfaces*

### Data Exchange

The ULS-Heli-G2 system implements several data exchange mechanisms:

**Control PC Functions:**
- Configure and view status of transmitter
- Set configuration of receivers
- Send control signals (On/off, compass override information)

**External Equipment:**
- External IMU/Compass equipment can be used to override internal IMU/compass information

**Receiver Functions:**
- Accept data from transmitter over IR signal (position field information and ground unit IMU data)
- Accept NED and Attitude information from autopilot to convert coordinate system
- Multiple receivers can communicate to calculate vehicle orientation (YAW)
- Send position offset data to autopilot


## Mechanical Interfaces


![uls-hl-rxs dimensions](/library-assets/images/uls-heli-g2/uls-hl-g2-rxs-dimensions.png)

*Figure: Slave receiver Mechanical Dimensions*

![uls-hl-rxm dimensions](/library-assets/images/uls-heli-g2/uls-hl-g2-rxm-dimensions.png)

*Figure: Master receiver Mechanical Dimensions*

![Transmitter dimensions](/library-assets/images/uls-heli-g2/uls-hl-g2-tx-dimensions.png)

*Figure: Transmitter Mechanical Dimensions*


### Transmitter Mounting

Use 16 mounting holes to mount transmitter to panel. 3D model of the transmitter can be provided upon request.

### Receiver Mounting

Both master and slave receivers have mounting provisions for secure installation. 3D models of the receivers can be provided upon request.

## Communication Protocols


### Overview

The protocol used by devices for configuration is proprietary and is described in other documents. However, the protocol implements the possibility of transmitting messages (**Blitz messages**) that can be used by the user to control the device and obtain information. These messages are universal, and the format describes the data that is transmitted by various devices in our system connected to a single network.

**Use CMD=6** to send Blitz messages.

In this document, the CAN protocol is specified. RS485 is used to implement custom protocols that can be defined in the future.

### CAN Bus Protocol Frame Format

```mermaid
flowchart LR
  A[Sender Device] --> B[GLOBAL]
  B --> C[CMD = 6]
  C --> D[ID]
  D --> E[dsn_lid]
  E --> F[msg_id]
  F --> G[Blitz Payload data <= 8 bytes]
  G --> H[Receiver Device]
```

The CAN protocol uses the following frame structure:

| Field | Description |
|-------|-------------|
| **GLOBAL** | Flag used to send packets over several local networks |
| **CMD** | Command field (Use CMD=6 to send Blitz messages) |
| **ID** | Packet sender ID (local id `src_lid` for local packets and device id for global packets `src_did`) |
| **dsn_lid** | Destination local ID address |
| **msg_id** | Message ID used to identify Blitz packet types |

*Table: CAN Protocol Frame Fields*
### Status Bit Definitions

Most messages include a status byte with the following bit definitions:

| Bit | Flag | Description |
|-----|------|-------------|
| 0 | ULS_STATUS_RX_CARRIER_OK | IR signal detected |
| 1 | ULS_STATUS_RX_SQ_OK | Signal quality OK |
| 2 | ULS_STATUS_RX_POS_OK | Position estimated |
| 3 | ULS_STATUS_RX_VEL_OK | Velocity estimated |
| 4 | ULS_STATUS_RX_GU_IMU_OK | Ground Unit IMU OK |
| 5 | ULS_STATUS_RX_MRX_OK | MRX message received (secondary receiver) |
| 6 | ULS_STATUS_RX_MRXDATA_OK | MRX Yaw and Distance calculated OK |

*Table: Status Bit Definitions*
### Common Data Structure

**Blitz Common Data Structure**

Structure: `__blitz_common_data_struct`

| Field | Type | Description |
|-------|------|-------------|
| `src_lid` | uint8_t | Source logical ID |
| `msg_id` | uint16_t | Message ID (see message types below) |
| `data` | union | Message-specific data (8 bytes max) |

*Table: Blitz Common Data Structure*
The union contains all possible message structures:
- `xcg1_rx_raw_measurmet`
- `rx_raw_measurmet`
- `rx_pos_in_tx_frame`
- `rx_mrx`
- `rx_dacs`

**Usage:** Universal container for all ULS Blitz message types.

### Implementation Notes

1. **Packed Structures:** All structures use `__attribute__((packed))` to ensure no padding bytes are added by the compiler.
2. **Endianness:** The protocol assumes little-endian byte order for multi-byte fields.
3. **Angular Precision:** Angular measurements use 16-bit signed integers with specific scaling factors for different ranges.
4. **Distance Units:** Distance measurements may use different units (cm, 10cm increments) depending on the message type.

### Message Types

#### XCG1 Raw Measurement (0x0010)

**Message ID:** `ULS_BLITZ_MSG_ID_XCG1_RX_RAW_MEASURMENT` (0x0010)

**Structure:** `__uls_blitz_xcg1_rx_raw_measurmet`

| Field | Type | Description |
|-------|------|-------------|
| `status` | uint8_t | Status bits (see Status Bit Definitions above) |
| `d` | uint8_t | Distance in 10 cm increments |
| `aX` | int16_t | Angular information X-axis, proportional [-30000 = -30°, +30000 = +30°] |
| `aY` | int16_t | Angular information Y-axis, proportional [-30000 = -30°, +30000 = +30°] |
| `oF` | int8_t | Sensor offset Forward in cm |
| `oR` | int8_t | Sensor offset Right in cm |

*Table: XCG1 Raw Measurement Message Format*
**Purpose:** Legacy raw measurement data for XCG1 systems with limited angular range.

#### Raw Measurement (0x0011)

**Message ID:** `ULS_BLITZ_MSG_ID_RX_RAW_MEASURMENT` (0x0011)

**Structure:** `__uls_blitz_msg_rx_raw_measurmet`

| Field | Type | Description |
|-------|------|-------------|
| `status` | uint8_t | Status bits (see Status Bit Definitions above) |
| `counter` | uint8_t | Message counter for tracking |
| `aX` | int16_t | Angular information X-axis [-180° to +180°] |
| `aY` | int16_t | Angular information Y-axis [-180° to +180°] |
| `distance` | uint16_t | Distance measurement |

*Table: Raw Measurement Message Format*
**Angular Conversion Formula:**
```
degrees = (value_int16 * 180.0f) / 32767.0f
```

**Purpose:** Standard raw measurement data with full angular range.

#### Position in TX Frame (0x0012)

**Message ID:** `ULS_BLITZ_MSG_ID_RX_POS_IN_TX_FRAME` (0x0012)

**Structure:** `__uls_blitz_msg_rx_pos_in_tx_frame`

| Field | Type | Description |
|-------|------|-------------|
| `status` | uint8_t | Status bits (see Status Bit Definitions above) |
| `counter` | uint8_t | Message counter for tracking |
| `posX` | int16_t | Position X-coordinate in transmitter frame (cm) |
| `posY` | int16_t | Position Y-coordinate in transmitter frame (cm) |
| `posZ` | int16_t | Position Z-coordinate in transmitter frame (cm) |

*Table: Position in TX Frame Message Format*
**Purpose:** 3D position data relative to the transmitter coordinate system.

#### MRX Information (0x0013)

**Message ID:** `ULS_BLITZ_MSG_ID_RX_MRX` (0x0013)

**Structure:** `__uls_blitz_msg_rx_mrx`

| Field | Type | Description |
|-------|------|-------------|
| `status` | uint8_t | Status bits (see Status Bit Definitions above) |
| `counter` | uint8_t | Message counter for tracking |
| `yaw` | int16_t | Yaw angle [-180° to +180°] |
| `distance` | uint16_t | Distance measurement in cm |

*Table: MRX Information Message Format*
**Purpose:** Multi-receiver (MRX) information for secondary receiver data.

#### DACS Information (0x0014)

**Message ID:** `ULS_BLITZ_MSG_ID_RX_DACS` (0x0014)

**Structure:** `__uls_blitz_msg_rx_dacs`

| Field | Type | Description |
|-------|------|-------------|
| `status` | uint8_t | Status bits (see Status Bit Definitions above) |
| `counter` | uint8_t | Message counter for tracking |
| `yaw` | int16_t | Yaw angle [-180° to +180°] |
| `distance` | uint16_t | Distance measurement |
| `yawContinuous` | int16_t | Continuous yaw angle ±32768° |

*Table: DACS Information Message Format*
**Purpose:** DACS (Distance and Azimuth Correction System) data with continuous yaw tracking. Available on VTOL systems only.

#### Ground IMU Measurement (0x0020)

**Message ID:** `ULS_BLITZ_MSG_ID_GIMU_MEASUREMENT` (0x0020)

**Structure:** `__uls_blitz_msg_gimu_data`

| Field | Type | Description |
|-------|------|-------------|
| `status` | uint8_t | Status bits (see Status Bit Definitions above) |
| `counter` | uint8_t | Message counter for tracking |
| `roll` | int16_t | Roll angle [-180° to +180°] |
| `pitch` | int16_t | Pitch angle [-180° to +180°] |
| `yaw` | int16_t | Yaw angle [-180° to +180°] |

*Table: Ground IMU Measurement Message Format*
**Angular Conversion Formula:**
```
degrees = (value_int16 * 180.0f) / 32767.0f
```

**Purpose:** Ground unit IMU (Inertial Measurement Unit) orientation data.

#### IMU Override (0x0030)

**Message ID:** `ULS_BLITZ_MSG_ID_XX_TXC_IMU_OVERRIDE` (0x0030)

**Structure:** `__uls_blitz_msg_xx_txc_imu_override`

| Field | Type | Description |
|-------|------|-------------|
| `control` | uint8_t | Control bits (see Control Bits below) |
| `counter` | uint8_t | Message counter for tracking |
| `roll` | int16_t | Override roll angle [-180° to +180°] |
| `pitch` | int16_t | Override pitch angle [-180° to +180°] |
| `yaw` | int16_t | Override yaw angle [-180° to +180°] |

*Table: IMU Override Message Format*
**Control Bits:**

| Bit | Description |
|-----|-------------|
| 0 | SET Roll - Enable roll angle override |
| 1 | SET Pitch - Enable pitch angle override |
| 2 | SET Yaw - Enable yaw angle override |
| 3-7 | Reserved |

*Table: IMU Override Control Bits*
**Angular Conversion Formula:**
```
degrees = (value_int16 * 180.0f) / 32767.0f
```

**Purpose:** Override IMU data on ground unit for external orientation control.

#### Magnetometer Override (0x0031)

**Message ID:** `ULS_BLITZ_MSG_ID_XX_TXC_MAG_OVERRIDE` (0x0031)

**Structure:** `__uls_blitz_msg_xx_txc_mag_override`

| Field | Type | Description |
|-------|------|-------------|
| `control` | uint8_t | Control bits (see Control Bits below) |
| `counter` | uint8_t | Message counter for tracking |
| `mx` | int16_t | Magnetic field X-component |
| `my` | int16_t | Magnetic field Y-component |
| `mz` | int16_t | Magnetic field Z-component |

*Table: Magnetometer Override Message Format*
**Control Bits:**

| Bit | Description |
|-----|-------------|
| 0 | SET override - Enable magnetometer override |
| 1-7 | Reserved |

*Table: Magnetometer Override Control Bits*
**Magnetic Field Conversion Formula:**
```
mag_value = (value_int16 * 1.0f) / 32767.0f
```

**Purpose:** Override magnetometer data on ground unit for external compass control.


## Environmental Conditions
**For the Receiver Unit**

- **Operating temperature range:** -40°C to +85°C
- **Humidity range:** Less than 70%
- **Dust and moisture protection:** IP67
  - **6** - Complete protection against dust ingress
  - **7** - Protected against temporary immersion in water (up to 1 meter depth for 30 minutes)

**For the Transmitter Unit**

- **Operating temperature range:** -40°C to +85°C
- **Humidity range:** Less than 70%
- **Dust and moisture protection:** IP67
  - **6** - Complete protection against dust ingress
  - **7** - Protected against temporary immersion in water (up to 1 meter depth for 30 minutes)

**Storage Conditions**

- **Storage temperature:** -40°C to +85°C
- **Relative humidity:** Up to 70% (non-condensing)

<div class="note">
- The receiver unit does not requires additional protective measures in dusty or moist environments
- The transmitter unit can operate in harsh outdoor conditions without additional protection
- Extended temperature range (-40°C to +85°C) enables operation in extreme climates
</div>



## Part Numbering

| Part Number | Description |
|-------------|-------------|
| ULS-HELI-G2 | System set with 3 receivers. |
| ULSDV-HL-TX-G2 | Transmitter unit. |
| ULSDV-HL-RXM-G2 | Master receiver unit. |
| ULSDV-HL-RXS-G2 | Slave receiver unit. |
| SA610/P4IB | 4 Pin Connector for receiver. Manufacturer Weipu. |
| SA810/P8IIB | 8 Pin Connector for receiver. Manufacturer Weipu. |
| SA1610/P10IIB-1 | 10 Pin Connector for transmitter. Manufacturer Weipu. |

*Table: Part Numbering*
## Specifications


| Parameter | Value |
|-----------|-------|
| Distance range m.: | 50.0 |
| Working angle (deg): | 60 |
| Data update frequency (Hz): | 20 |

*Table: Common Specification*
| Parameter | Value |
|-----------|-------|
| Field of view (deg): | 90 |
| Dimensions mm : | 46x26x12 |
| Weight g.: | 40 |
| Power Consumption (W): | 3 |
| Voltage supply (V): | 5 |
| Interfaces: | USB, CAN, UART |

*Table: Receiver (Slave) Specifications*
| Parameter | Value |
|-----------|-------|
| Field of view (deg): | 90 |
| Dimensions mm : | 50x50x14 |
| Weight g. : | 60 |
| Power Consumption (W): | 3 |
| Voltage supply (V): | 5 |
| Interfaces: | USB, CAN, UART |

*Table: Receiver (Master) Specifications*
| Parameter | Value |
|-----------|-------|
| Field of emitting (deg): | 60 |
| Dimensions mm. : | 290x215x48 |
| Weight g.: | 4100 |
| Power Consumption (W): | 10 |
| Voltage supply (V): | 22.0-26.0 |
| Interfaces : | USB, CAN, UART |

*Table: Transmitter (Ground) Specifications*
## Change Control
All changes to this document must be reviewed and approved by the relevant technical leads and stakeholders

---
