Skip to content

Compact format

Compatible with: picoScan100

The picoScan streams measurement data as SICK Compact Format telegrams: binary UDP datagrams, one telegram per datagram. This page covers the frame layout, the three payload types, and the RSSI/MSGPACK details you need to get correct values. To inspect a captured Compact telegram field by field, paste it into the Kaitai Web IDE alongside the definition - a free, browser-based tool that needs no installation.

Applies to picoScan100 and picoScan150 devices that output Compact Format.

The outer frame

The authoritative Kaitai Struct definition is available as compact_frame.ksy on GitHub.

The telegram_type selects the payload parser: 1 for scan data, 2 for IMU data, and 4 for encoder data. Verify the CRC32 before processing the payload.

Type 1: scan data

The scan payload is a header followed by one or more modules. Each module covers a contiguous angular range and carries per-layer metadata plus the raw beam data for every point in that range.

The authoritative Type 1 primary-data definition is available as type_1_primary_data_spherical_coordinates.ksy on GitHub.

Read data_content_echos / data_content_beams before reading optional fields, since they guard which fields are present. The sensor also streams segmented frames (5 or 10 segments per full ~276° revolution depending on the performance profile); all segments of one scan share frame_number and differ by segment index. Collect every segment before processing a frame.

To convert a beam to a 3D point, use phi (elevation), theta (azimuth), and distance d:

x = d · cos(phi) · cos(theta)
y = d · cos(phi) · sin(theta)
z = d · sin(phi)

The device generates 8-bit RSSI internally, then scales it depending on the output format:

Format Bit depth Conversion
Compact Type 1 16-bit 16bit = (8bit / 255) × 65535
MSGPACK 16-bit 16bit = (8bit / 255) × 65535
LMDscandata (CoLa) 8-bit none; value 254 = reflector detected

In 16-bit output the low byte equals the high byte (e.g. 0xe6e6); this is expected.

Type 2: IMU

A flat, fixed-size payload (no modules, no conditional fields) from the integrated Bosch BHI360. The authoritative definition is available as type_2_imu.ksy on GitHub.

Type 4: encoder

Reports an external rotary encoder attached to a moving axis; emitted alongside each scan frame and linked by frame_number. See 3D point clouds for how to fuse it with scan data. Header fields mirror Type 1 (telegram_counter, timestamp_transmit, telegram_version, payload_length, sender_id) followed by the tick counter and reference tick.

The authoritative definition is available as type_4_encoder.ksy on GitHub.

Transport options

Set with ScanDataEthSettings { Protocol, IPAddress, Port }:

UDP unicast (default) has the lowest overhead. UDP multicast uses the same API, but with a multicast group address; multiple hosts receive one stream. TCP: the device connects as a client to your configured endpoint; use it when UDP loss is a problem.

Transport configuration

picoScan100 can transmit measurement data by UDP unicast, UDP multicast, or TCP. Choose the transport based on the number of receivers and the delivery guarantees your application requires.

Transport Connection Delivery guarantee Best for
UDP unicast One sender to one receiver None; packets can be lost or arrive out of order Low-latency data to one host
UDP multicast One sender to a receiver group None; packets can be lost or arrive out of order Efficiently distributing the same data to multiple hosts
TCP One sender to one receiver Ordered and error-checked delivery Applications where data integrity is more important than latency

UDP multicast transmits one Compact-format stream to every receiver that has joined the selected multicast group. The sensor sends only one copy of each packet, avoiding duplicated traffic from separate unicast streams.

In the sensor's data-output settings, select Compact as the format and set the measurement-data output IP address to a multicast address in the range 224.0.0.0 through 239.255.255.255. Configure every receiving host to join the same multicast group and listen on the configured UDP port.

Multicast is connectionless, so it does not guarantee delivery, ordering, or error recovery. Ensure that the network infrastructure permits multicast traffic and use appropriate multicast management when several receivers are connected.

For UDP unicast, select Compact and configure the measurement-data output IP address as the address of the single data receiver. This is suitable when the receiving application can tolerate occasional packet loss.

For TCP, select LMDscandata as the data format and configure the receiver endpoint. TCP establishes a connection and retransmits lost data, at the cost of connection-management overhead and potentially higher latency.

See CoLa / LMDscandata for the TCP telegram format.