1.3.1.1. 激光雷达通信协议–Avia2
文件发布历史 |
||
|---|---|---|
日期 |
版本 |
修改描述 |
20260730 |
v1.0 |
1. 初始版本 |
1.3.1.2. 协议概述
此文档仅作为livox Avia2雷达产品通信协议
1.3.1.2.1. 协议类型
用户和雷达之间有两种类型的数据协议,功能分别如下:
点云数据协议:
雷达采样输出的点云数据;
雷达内部IMU数据
详见(数据类型)
控制指令协议:
配置和查询雷达的参数、雷达复位;
雷达状态推送、查询;
升级相关;
详见(指令详解)
两种协议都被封装在UDP的数据段中,协议数据为小端序。
1.3.1.2.2. 雷达工作状态
当前雷达的状态机如下图所示,雷达产品目前已使用的状态枚举值如下:
雷达状态 |
枚举值 |
是否支持用户设置 |
|---|---|---|
采样状态 |
0x01 |
支持(通过参数配置指令) |
待机状态 |
0x02 |
支持(通过参数配置指令) |
错误状态 |
0x04 |
不支持 |
自检状态 |
0x05 |
不支持 |
电机启动状态 |
0x06 |
不支持 |
就绪状态 |
0x09 |
支持(通过参数配置指令) |

1.3.1.2.3. 端口说明
按照数据类型分类,对应的源端口和目的端口说明:
数据类型 |
传输方向 |
雷达端口 |
上位机端口 |
传输类型 |
传输协议 |
|---|---|---|---|---|---|
设备类型查询 |
雷达 <—->上位机 |
56000 |
任意 |
广播 |
UDP |
56000作为livox雷达固定监听端口,主要用于上位机通过广播查询设备:
1.仅支持设备类型查询命令(cmd_id:0x0000),上位机通过此端口获取雷达具体设备类型。此命令响应通过广播回复,以便于上位机与雷达IP不在同一网段时,上位机仍可识别到雷达。
Avia2通信端口:
数据类型 |
传输方向 |
雷达端口 |
上位机端口 |
传输类型 |
传输协议 |
|---|---|---|---|---|---|
控制指令 |
雷达<—>上位机 |
56100 |
任意(建议56101) |
单播 |
UDP |
推送指令 |
雷达 —>上位机 |
56200 |
可配置(默认56201) |
默认单播 |
UDP |
点云数据 |
雷达 —>上位机 |
56300 |
可配置(默认56301) |
默认单播(支持组播) |
UDP |
IMU数据 |
雷达 —>上位机 |
56400 |
可配置(默认56401) |
默认单播(支持组播) |
UDP |
LOG数据 |
雷达<—>上位机 |
56500 |
任意(建议56501) |
单播 |
UDP |
1.3.1.3. 点云&IMU数据协议
1.3.1.3.1. 协议格式

雷达输出点云数据格式:
字段 |
偏移量(字节) |
大小 (字节) |
详细描述 |
|---|---|---|---|
version |
0 |
1 |
包协议版本:当前为1 |
length |
1 |
2 |
从version开始的整个UDP数据段长度 |
reserved |
3 |
2 |
保留 |
dot_num |
5 |
2 |
当前UDP包data字段包含点数目 |
udp_cnt |
7 |
2 |
点云UDP包计数,每个UDP包依次加1,点云帧起始包清0 |
frame_cnt |
9 |
1 |
此字段暂未启用 |
data_type |
10 |
1 |
数据类型,详见(数据类型) |
time_type |
11 |
1 |
时间戳类型,详见(时间戳) |
reserved1 |
12 |
12 |
保留 |
crc32 |
24 |
4 |
timestamp+data段校验码,使用CRC-32算法(详见(CRC算法说明) ) |
timestamp |
28 |
8 |
点云时间戳,详见(时间戳) |
data |
36 |
– |
数据信息,详见(数据类型) |
1.3.1.3.2. 时间戳
每100ms内的点为一帧,此100ms内数据包使用相同时间戳
时间戳类型:
时间戳类型 |
同步源类型 |
数据格式 |
说明 |
|---|---|---|---|
0 |
无同步源,时间戳为雷达开机时间 |
uint64_t |
Unit单位: ns |
1 |
gPTP/PTP同步,时间戳为master时钟源时间 |
uint64_t |
Unit单位: ns |
2 |
GPS时间同步 |
uint64_t |
Unit单位: ns |
5 |
NTP时间同步 |
uint64_t |
Unit单位: ns |
注意: |
GPS时间同步的时间限制范围为2000年-1月1日-00:00到2037年-12月31日
PTP时间同步不支持IEEE1588v2.1
不推荐应用于IEEE1588v2.0与gPTP同时存在的场景中;
1.3.1.3.3. 数据类型
在每个数据包中有N个采样值。N的大小取决于数据类型。
数据类型有以下3种,默认点云数据类型为1:
数据类型 |
采样类型 |
回波模式 |
坐标系模式 |
|---|---|---|---|
0 |
IMU数据 |
||
1 |
点云数据 |
单回波模式 |
直角坐标系 |
17 |
点云数据 |
双回波模式 |
直角坐标系 |
数据类型 0
IMU数据:
字段 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|
gyro_x |
0 |
float |
Unit: rad/s |
gyro_y |
4 |
float |
Unit: rad/s |
gyro_z |
8 |
float |
Unit: rad/s |
acc_x |
12 |
float |
Unit: g |
acc_y |
16 |
float |
Unit: g |
acc_z |
20 |
float |
Unit: g |
数据类型 1
单回波直角坐标数据格式:
字段 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|
x |
0 |
int32_t |
X 轴,单位: mm |
y |
4 |
int32_t |
Y 轴,单位: mm |
z |
8 |
int32_t |
Z 轴,单位: mm |
intensity |
12 |
uint8_t |
信号强度 |
标签 |
13 |
uint8_t |
当前暂未启用 |
数据类型 17
双回波直角坐标数据格式:
字段 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|
x_1 |
0 |
int32_t |
回波1 X 轴,单位: mm |
y_1 |
4 |
int32_t |
回波1 Y 轴,单位: mm |
z_1 |
8 |
int32_t |
回波1 Z 轴,单位: mm |
intensity1 |
12 |
uint8_t |
信号强度1 |
标签1 |
13 |
uint8_t |
当前暂未启用 |
x_2 |
14 |
int32_t |
回波2 X 轴,单位: mm |
y_2 |
18 |
int32_t |
回波2 Y 轴,单位: mm |
z_2 |
22 |
int32_t |
回波2 Z 轴,单位: mm |
intensity2 |
26 |
uint8_t |
信号强度2 |
标签2 |
27 |
uint8_t |
当前暂未启用 |
1.3.1.4. 控制协议
1.3.1.4.1. 协议格式

控制消息协议格式如下:
字段 |
偏移(字节) |
大小 (字节) |
描述 |
|---|---|---|---|
sof |
0 |
1 |
起始字节,固定为 0xAA |
version |
1 |
1 |
协议版本,当前为0 |
length |
2 |
2 |
数据帧长度 |
seq_num |
4 |
4 |
每条新的REQ请求消息此字段递增1; |
cmd_id |
8 |
2 |
不同类型的消息通过此字段进行区分,详见(指令ID) |
cmd_type |
10 |
1 |
消息类型: |
sender_type |
11 |
1 |
消息发送设备类型:0:表示上位机发送消息,1表示雷达发送消息 |
resv |
12 |
6 |
预留拓展字段,可以不关心 |
crc_16 |
18 |
2 |
包头校验码,校验内容为从 |
crc32 |
20 |
4 |
crc32校验码:data字段校验码, 使用CRC-32算法(详见(CRC算法说明) ) |
data |
24 |
n |
详见(指令详解) |
1.3.1.4.2. 指令ID
雷达指令ID列表:
功能分类 |
指令ID |
功能 |
|---|---|---|
设备类型查询 |
0x0000 |
广播发现 |
雷达信息 |
0x0100 |
参数信息配置 |
0x0101 |
雷达信息查询 |
|
0x0102 |
雷达信息推送 |
|
控制相关 |
0x0200 |
请求设备重启 |
0x0201 |
恢复出厂设置 |
|
0x0202 |
设置雷达GPS时间同步时间戳 |
|
log相关 |
0x0300 |
log文件推送 |
0x0301 |
log采集配置 |
|
0x0302 |
log系统时间同步 |
|
0x0303 |
debug点云采集配置 |
|
通用升级 |
0x0400 |
请求开始升级 |
0x0401 |
固件数据传输 |
|
0x0402 |
固件传输结束 |
|
0x0403 |
获取固件升级状态 |
1.3.1.4.3. 交互流程

1.3.1.5. 指令详解
1.3.1.5.1. 设备类型查询
1.3.1.5.1.1. 0x0000 广播发现
请求
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
NULL |
应答
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
dev_type |
1 |
uint8_t |
雷达类型 |
|
serial_number |
2 |
uint8_t[16] |
雷达SN |
|
lidar_ip |
18 |
uint8_t[4] |
雷达IP地址 |
|
cmd_port |
22 |
uint16_t |
雷达当前控制指令端口 |
1.3.1.5.2. 雷达信息
1.3.1.5.2.1. 0x0100 参数信息配置
请求
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
key_num |
0 |
uint16_t |
需要设置的key_value_list信息个数 |
rsvd |
2 |
uint16_t |
||
key_value_list |
4 |
key_value_list[N] |
key内容列表; |
key_value_list 中每个配置参数的格式如下:
数据域 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|
key |
0 |
uint16_t |
key编号,见下表key编号 |
length |
2 |
uint16_t |
key对应的value长度 |
value |
4 |
– |
key对应的value内容 |
应答
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
error_key |
1 |
uint16_t |
配置出错的第一个雷达key |
1.3.1.5.2.2. 0x0101 雷达信息查询
请求
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
key_num |
0 |
uint16_t |
key_list信息个数 |
rsvd |
2 |
uint16_t |
||
key_list |
4 |
– |
key编号列表 |
key_list 中每个key的格式如下:
数据域 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|
key |
0 |
uint16_t |
key编号 |
应答
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
key_num |
1 |
uint16_t |
key_value_list数量 |
|
key_value_list |
3 |
– |
查询成功的key信息内容 |
1.3.1.5.2.3. 0x0102 雷达信息推送
雷达主动推送
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
key_num |
0 |
uint16_t |
key_value_list数量 |
rsvd |
2 |
uint16_t |
||
key_value_list |
4 |
– |
info_list列表 |
key_value_list 中每个配置参数的格式如下:
数据域 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|
key |
0 |
uint16_t |
key编号,见下表key编号 |
length |
2 |
uint16_t |
key对应的value长度 |
value |
4 |
– |
推送key信息内容 |
key_value_list对应的具体含义如下:
参数编号(key) |
名称 |
参数长度 |
参数类型 |
参数内容 |
是否支持参数信息配置命令(cmd_id为0x0100)进行设置 |
|---|---|---|---|---|---|
0x0000 |
pcl_data_type |
1 |
uint8_t |
雷达点云格式,详见(数据类型): |
是 |
0x0004 |
lidar_ipcfg |
12 |
uint8_t[12] |
雷达IP地址配置 |
是 |
0x0005 |
state_info_host_ipcfg |
8 |
uint8_t[8] |
雷达状态推送信息的ip地址配置 |
是 |
0x0006 |
pointcloud_host_ipcfg |
8 |
uint8_t[8] |
雷达点云数据推送的ip地址配置 |
是 |
0x0007 |
imu_host_ipcfg |
8 |
uint8_t[8] |
雷达IMU数据推送的ip地址配置 |
是 |
0x001A |
work_tgt_mode |
1 |
uint8_t |
雷达目标工作模式(即目标工作状态),详见(雷达状态) |
是 |
0x001C |
imu_data_en |
1 |
uint8_t |
0: IMU数据推送关闭 |
是 |
0x0022 |
fov_mode |
1 |
uint8_t |
0: Focus Detection Mode |
是 |
0x0024 |
echo_mode |
1 |
uint8_t |
0: 按照回波强度排序输出单回波输出最强回波 |
是 |
0x0025 |
NTP_server_ip |
4 |
uint8_t[4] |
NTP服务器的IP地址 |
是 |
0x0027 |
ITO_ctrl |
1 |
uint8_t |
窗口玻璃加热使能: |
是 |
0x0028 |
fog_noise_filter |
1 |
uint8_t |
雨雾滤噪使能: |
是 |
0x8000 |
sn |
16 |
uint8_t[16] |
字符串类型(不足16位使用 ‘\0’ 补齐) |
否 |
0x8002 |
version_app |
4 |
uint8_t[4] |
App固件版本号:aa.bb.cc.dd |
否 |
0x8003 |
version_loader |
4 |
uint8_t[4] |
Loader固件版本号 |
否 |
0x8006 |
cur_work_state |
1 |
uint8_t |
雷达当前工作状态 |
否 |
0x8007 |
core_temp |
4 |
int32_t |
内核温度(unit: 0.01℃) |
否 |
0x8010 |
FW_TYPE |
1 |
uint8_t |
固件类型: |
否 |
0x0811 |
hms_code |
32 |
uint32_t[8] |
故障诊断码,每一条非0值代表一条诊断信息,当雷达工作异常时,可通过查询该诊断码确认问题原因; |
否 |
1.3.1.5.3. 控制相关
1.3.1.5.3.1. 0x0200 请求设备重启
请求
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
timeout |
0 |
uint16_t |
重启延迟时间:ms |
应答
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
1.3.1.5.3.2. 0x0201 恢复出厂设置
此命令发出后,雷达将恢复出厂设置,回复成功后,雷达将立即重启生效
请求
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
SN |
0 |
uint8_t[16] |
预留字段 |
应答
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
1.3.1.5.3.3. 0x0202 设置GPS时间同步时间戳
请求
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
type |
0 |
uint8_t |
时间同步方式: |
time_set |
1 |
uint64_t |
若采用GPS同步,此字段应为最近一次PPS信号上升沿的时间,类型为uint64_t,单位为ns |
应答
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
1.3.1.5.4. log相关
1.3.1.5.4.1. 0x0300 log文件推送
请求方:雷达
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
log_type |
0 |
uint8_t |
日志类型: |
file_index |
1 |
uint8_t |
文件索引号 |
|
file_num |
2 |
uint8_t |
log_type为flash log此字段有效,表示flash log文件数目 |
|
flag |
3 |
uint8_t |
bit 0: |
|
timestamp |
4 |
uint32_t |
unix时间戳,表示从1970年1月1日00:00:00所经过的秒数。 |
|
rsvd |
8 |
uint16_t |
||
trans_index |
10 |
uint32_t |
传输索引号 |
|
log_data_len |
14 |
uint16_t |
日志内容长度 |
|
log_data |
16 |
– |
日志内容: |
应答方:上位机
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
log_type |
1 |
uint8_t |
||
file_index |
2 |
uint8_t |
||
trans_index |
3 |
uint32_t |
1.3.1.5.4.2. 0x0301 log采集配置
请求方:上位机
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
log_type |
0 |
uint8_t |
日志类型: |
enable |
1 |
uint8_t |
0 : 关闭 |
应答方:雷达
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
1.3.1.5.4.3. 0x0302 log系统时间同步
请求方:上位机
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
timestamp |
0 |
uint32_t |
unix时间戳,表示从1970年1月1日00:00:00所经过的秒数 |
应答方:雷达
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
1.3.1.5.4.4. 0x0303 Debug点云采集配置
请求方:上位机
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
enable |
0 |
uint8_t |
0:关闭 |
host_ip |
1 |
uint8_t[4] |
Debug点云目的IP地址:AA.BB.CC.DD |
|
host_port |
5 |
uint16_t |
Debug点云目的端口 |
|
reserved |
7 |
uint16_t |
预留 |
应答方:雷达
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
1.3.1.5.5. 通用升级
1.3.1.5.5.1. 0x0400 请求开始升级
请求
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
firmware_type |
0 |
uint8_t |
固件类型: |
encrypt_type |
1 |
uint8_t |
固件加密类型: |
|
firmware_length |
2 |
uint32_t |
固件总长度 |
|
dev_type |
6 |
uint8_t |
设备类型: |
应答
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
1.3.1.5.5.2. 0x0401 固件数据传输
请求
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
firmware_offset |
0 |
uint32_t |
|
current_length |
4 |
uint32_t |
||
encrypt_type |
8 |
uint8_t |
||
rsvd |
9 |
uint8_t[3] |
||
data |
12 |
uint8_t[n] |
固件内容 |
应答
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
current_offset |
1 |
uint32_t |
||
received_length |
5 |
uint32_t |
1.3.1.5.5.3. 0x0402 固件传输结束
请求
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
checksum_type |
0 |
uint8_t |
|
checksum_length |
1 |
uint8_t |
||
checksum_data |
2 |
uint8_t[n] |
应答
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
1.3.1.5.5.4. 0x0403 获取固件升级状态
请求
CMD |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
NULL |
|||
应答
ACK |
名称 |
偏移(字节) |
数据类型 |
描述 |
|---|---|---|---|---|
data |
ret_code |
0 |
uint8_t |
返回码: |
upgrade_progress |
1 |
uint8_t |
升级进度: |
1.3.1.6. 返回码说明
名称 |
返回值 |
说明 |
|---|---|---|
LVX_RET_SUCCESS |
0x00 |
执行成功 |
LVX_RET_FAILURE |
0x01 |
执行失败 |
LVX_RET_NOT_PERMIT_NOW |
0x02 |
当前状态不支持 |
LVX_RET_OUT_OF_RANGE |
0x03 |
设置值超出范围 |
LVX_RET_PARAM_NOTSUPPORT |
0x20 |
参数不支持 |
LVX_RET_PARAM_REBOOT_EFFECT |
0x21 |
参数需重启生效 |
LVX_RET_PARAM_RD_ONLY |
0x22 |
参数只读,不支持写入 |
LVX_RET_PARAM_INVALID_LEN |
0x23 |
请求参数长度错误,或ack数据包超过最大长度 |
LVX_RET_PARAM_KEY_NUM_ERR |
0x24 |
参数key_num和key_list不匹配 |
LVX_RET_UPGRADE_PUB_KEY_ERROR |
0x30 |
公钥签名验证错误 |
LVX_RET_UPGRADE_DIGEST_ERROR |
0x31 |
固件摘要签名验证错误 |
LVX_RET_UPGRADE_FW_TYPE_ERROR |
0x32 |
固件类型不匹配 |
LVX_RET_UPGRADE_FW_OUT_OF_RANGE |
0x33 |
固件长度超出范围 |
LVX_RET_UPGRADE_FW_ERASING |
0x34 |
固件擦除中 |
1.3.1.7. CRC算法说明
CRC算法名称 |
多项式公式 |
宽度 |
多项式 |
初始值 |
结果异或值 |
输入反转 |
输出反转 |
|---|---|---|---|---|---|---|---|
CRC-16/CCITT-FALSE |
x^16^ + x^12^ + x^5^ + 1 |
16 |
0x1021 |
0xFFFF |
0x0000 |
false |
false |
CRC-32 |
x^32^ + x^26^ + x^23^ + x^22^ + x^16^ + x^12^ + x^11^ + x^10^ + x^8^ + x^7^ + x^5^ + x^4^ + x^2^ + x + 1 |
32 |
0x04C11DB7 |
0xFFFFFFFF |
0xFFFFFFFF |
true |
true |