Table of Contents
- 1 概述
- 2 控制指令
- 3 采样数据包协议
- 4 配置参数
- 5 控制指令详情
- 5.1 通用命令集
- 0x00 广播消息
- 0x01 网络握手确认指令
- 0x02 设备信息查询
- 0x03 心跳数据
- 0x04 开始/停止采样
- 0x05 更改点云坐标系模式
- 0x06 断开连接
- 0x07 推送异常状态信息
- 0x08 配置静态/动态IP
- 0x09 获取设备IP信息
- 0x0A 重启设备
- 0x0B 写设备参数
- 0x0C 读配置参数
- 5.2 雷达指令集
- 0x00 模式切换指令
- 0x01 写入雷达外部参数
- 0x02 读取雷达外部参数
- 0x03 开启/关闭抗雨雾功能
- 0x04 开启/关闭风扇
- 0x05 读取风扇开/关状态
- 0x06 设置雷达回波模式
- 0x07 获取雷达回波模式
- 0x08 设置IMU数据推送频率
- 0x09 获取IMU数据推送频率
- 0x0A 更新UTC同步时间
- 5.3 Hub 指令集
览沃SDK通信协议(Livox SDK Comunication Protocol)
| 文件发布历史 | ||
|---|---|---|
| 日期 | 版本 | 修改描述 |
| 2020/10/26 | V1.3.0 | 1.增加对MId-70/Avia雷达的支持 |
| 2020/06/10 | v1.2.0 | 1. 增加读/写配置参数指令 |
| 2019/10/22 | v1.1.1 | 1.更新状态码,增加了时间同步状态码(Horizon: v06.05.00.00+, Mid-40/Mid-100: v03.07.00.00+) 2. 修改IMU数据推送频率 |
| 2019/9/25 | v1.1.0 | 1. 增加对Tele-15/Horizon雷达的支持 |
| 2019/7/08 | v1.0.6 | 1. 修正crc32错误 2. 增加系统状态码的描述 |
| 2019/5/17 | v1.0.5 | 修改部分描述错误 |
| 2019/4/18 | v1.0.4 | 1. 更新雷达状态码 (v03.05.00.00+) 2. 增加查询Hub插槽电源状态的指令 (v08.05.00.00+) |
| 2019/4/17 | v1.0.3 | 更新了Hub读取雷达外部参数的描述 |
| 2019/3/25 | v1.0.2 | 更新3.2 时间戳描述 |
| 2019/2/25 | v1.0.1 | 更新3.2 时间戳描述 |
| 2019/1/16 | v1.0.0 | 初始发布 |
1 概述
1.1 数据类型
用户和雷达之间有两种通信方式,且这两种通信的数据协议格式是不相同的。不同点和相应功能如下:
控制指令数据:配置和查询雷达的参数和状态信息。
采样数据:采样数据由雷达产生,包括点云数据和IMU数据(Mid40/100/70不支持);
目前,两种协议都被封装在UDP的数据段中,且协议数据为小端序。
1.2 模式和状态描述
用户可以切换这些雷达模式:
当用户设置雷达模式且雷达切换完成后,雷达将处于相应的状态。
2 控制指令
2.1 帧格式
协议帧是控制指令的最小单元,格式如下:
| 字段 | 偏移(字节) | 大小 (字节) | Description |
|---|---|---|---|
| sof | 0 | 1 | 起始字节,固定为 0xAA |
| version | 1 | 1 | 协议版本, 当前为1 |
| length | 2 | 2 | 数据帧长度,最大值: 1400 |
| cmd_type | 4 | 1 | 命令类型: 0x00: CMD 0x01: ACK 0x02: MSG |
| seq_num | 5 | 2 | 数据帧序列号 |
| crc_16 | 7 | 2 | 包头校验码 |
| data | 9 | n | 数据域 |
| crc_32 | 9+n | 4 | 整个数据帧校验码 |
命令类型描述:
- CMD (请求): ACK主动发送数据请求-需要返回相应的应答ACK;
- ACK (响应): 响应 CMD 数据;
- MSG (消息): 主动推送消息数据-不需要返回响应数据,
e.g.广播数据,当发生错误时推送消息;
CRC校验初始值:
| crc16 初始值 | crc32 初始值 |
|---|---|
| 0x4c49 | 0x564f580a |
2.2 帧数据
2.2.1 数据段格式
协议帧中数据段格式如下:
| 字段 | 偏移 (字节) | 大小 (字节) |
|---|---|---|
| cmd_set | 0 | 1 |
| cmd_id | 1 | 1 |
| cmd_data | 2 | 随命令变化 |
2.2.2 CMD Set & CMD ID
共有三种指令集:
- 通用指令集:包括Livox雷达和Hub在内的所有Livox设备均支持的通用指令集。
- 雷达指令集:只有Livox雷达支持雷达指令集。
- Hub指令集:只有Livox Hub支持的指令集
| CMD Set | CMD ID | 功能 |
|---|---|---|
| 0x00 通用指令集 | 0x00 | 广播信息 |
| 0x01 | 网络握手确认指令 | |
| 0x02 | 查询设备信息 | |
| 0x03 | 心跳指令 | |
| 0x04 | 开始/停止采样 | |
| 0x05 | 更改点云坐标模式 | |
| 0x06 | 断开连接指令 | |
| 0x07 | 设备异常推送 | |
| 0x08 | 设置静态/动态IP模式 | |
| 0x09 | 读取设备的IP模式 | |
| 0x0A | 重启设备 | |
| 0x0B | 设置设备配置参数 | |
| 0x0C | 读取设备配置参数 | |
| 0x01 雷达指令集 | 0x00 | 设置模式指令 |
| 0x01 | 设置雷达外部参数 | |
| 0x02 | 读取雷达外部参数 | |
| 0x03 | 开启/关闭抗雨雾功能 | |
| 0x04 | 设置开启/关闭风扇 | |
| 0x05 | 获取风扇开/关状态 | |
| 0x06 | 设置点云回波模式 | |
| 0x07 | 读取点云回波模式 | |
| 0x08 | 设置IMU数据推送频率 | |
| 0x09 | 读取IMU推送频率 | |
| 0x0A | 更新UTC同步时间 | |
| 0x02 Hub指令集 | 0x00 | 查询已连接雷达设备 |
| 0x01 | 设置子雷达模式 | |
| 0x02 | 开启/关闭指定端口的电源 | |
| 0x03 | 设置雷达的外部参数 | |
| 0x04 | 读取雷达的外部参数 | |
| 0x05 | 读取子雷达状态信息 | |
| 0x06 | 开启/关闭Hub外部参数实时计算 | |
| 0x07 | 开启/关闭子雷达抗雨雾功能 | |
| 0x08 | 查询Hub端口电源使能状态 | |
| 0x09 | 设置开启/关闭雷达风扇 | |
| 0x0A | 读取雷达风扇开关状态 | |
| 0x0B | 设置雷达点云回波模式 | |
| 0x0C | 读取雷达点云回波模式 | |
| 0x0D | 设置雷达IMU数据推送频率 | |
| 0x0E | 获取雷达IMU数据推送频率 |
2.3 SDK 连接
在通信的过程中,雷达或中心板被定义为从设备,接收点云数据的电脑被被定义为主设备。
主设备与从设备通信的流程如下:
1.当从设备上电后,将会从65000端口向局域网中的55000端口广播设备信息数据。
2.接收到广播数据后,主设备向65000端口发送数据请求,请求数据中包含源端口。
3.从设备接收到连接请求后向这个源端口回复ACK数据。
4.当用户接收到ACK数据,握手完成。可以开始发送心跳维持连接,并进行命令和数据的传输。
注意:如果心跳超时,Livox雷达/Hub将会重新回到广播状态。
流程图:
3 采样数据包协议
3.1 包格式
雷达输出点云数据格式:
3.2 时间戳
雷达系统支持三种同步方式:
- PTP: IEEE 1588v2.0 PTP 网络协议同步.
- GPS:为了实现GPS同步,雷达/Hub需要同时接收PPS和UTC时间戳。对于Horizon/Tele-15/Mid-70/Avia,雷达单元可以通过以太网在控制指令中获得UTC时间戳。Livox Hub可以通过RS485串口在$GPRMC信息中获得UTC时间戳。
- PPS: 脉冲同步(只有雷达支持).
同步优先级: PTP > GPS > PPS,当系统中有多个同步源存在时,选择最高优先级的同步模式 。当最高优先级同步源离线时,同步类型将会持续而不会回退到低优先级, 并且状态码中的time_sync_status 将会被设置为4(最高优先级同步标志异常.
每个数据包中包含着指明数据包中第一个点云时间的时间戳。数据包中每个点的时间间隔是相等的。
以Mid-40为例,采用频率为100KHz,因此每个点云的的时间间隔为10us.
| 点云数 | 时间戳 |
|---|---|
| 1 | T1 |
| 2 | T1 + 10 us |
| 3 | T1 + 20 us |
| ... | ... |
| 100 | T1 + 990us |
时间戳类型:
| 时间戳类型 | 同步源类型 | 数据格式 | 说明 |
|---|---|---|---|
| 0 | No sync source无同步源 | uint64_t | Unit单位: ns |
| 1 | PTP | uint64_t | Unit单位: ns |
| 2 | 保留 | ||
| 3 | GPS | UTC | UTC |
| 4 | PPS | int64_t | 单位: ns, 只有雷达支持 |
时间戳类型 0
当系统中没有同步信号时,时间戳表明系统上电时间。
时间戳类型 1
IEEE 1588v2.0 PTP network protocol synchronization网络协议同步 1588 网络同步模式具有最高优先级.
时间戳类型 3
时间戳类型3表明雷达/Hub利用GPS实现同步. 对于雷达单元, RS485电平中的PPS和SDK控制指令中的UTC时间时间戳均需要(详见 [**更新UTC同步时间 **](#0x0A 更新UTC同步时间) ) . 时序图如下:

对于Hub,需要RS485中的PPS和$GPRMC信息。时序图如下:
$GPRMC 信息的样例如下: $GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A
| 123519 | 修改后为12:35:19 UTC |
|---|---|
| A | 状态A=可用或者 V=空. |
| 4807.038 | 当前纬度 |
| N | N 北/S 南 |
| 01131.000 | 当前精度 |
| E | E 东/W 西 |
| 022.4 | 航速 |
| 084.4 | 真实方位角 |
| 230394 | 日期, 1994年3月23日 |
| 003.1 | 磁偏角 |
| W | W 西/E 东 |
| *6A | 校验数据, 以 *开始 |
点云数据包中UTC时间戳格式为:
| 字节0 | 字节1 | 字节 2 | 字节 3 | 字节4 ~ 7 |
|---|---|---|---|---|
| 年 | 月 | 日 | 小时 | 小时内偏差, 单位: us |
时间戳 4
PPS 同步源使用RS485电平信号. 时序图如下. PPS的上升沿将会把时间戳复位为0,所以点云数据的时间戳表明了点云采样和PPS上升沿的间隔。在IMU数据包中,由于补偿延迟,时间偏移可能为负。

3.3 点云/IMU数据
在每个数据包中有N个采样值。N的大小取决于数据类型。采样数据可以是以下数据格式之一。
数据类型:
| 数据类型 | 采样类型 | 回波模式 | 坐标系模式 | N | 数据频率 | 支持设备 |
|---|---|---|---|---|---|---|
| 0 | 点云数据 | 单回波模式 | 直角坐标系 | 100 | 100,000 点/s | Mid-40 |
| 1 | 点云数据 | 单回波模式 | 球坐标系 | 100 | 100,000 点/s | Mid-40 |
| 2 | 点云数据 | 单回波模式 | 直角坐标系 | 96 | Horizon/Tele-15/Avia: 240,000 点/s Mid-70: 100,000 points/s |
Horizon Tele-15 Mid-70 Avia |
| 3 | 点云数据 | 单回波模式 | 球坐标系 | 96 | Horizon/Tele-15/Avia: 240,000 点/s Mid-70: 100,000 points/s |
Horizon Tele-15 Mid-70 Avia |
| 4 | 点云数据 | 双回波模式 | 直角坐标系 | 48 | Horizon/Tele-15/Avia: 480,000 点/s Mid-70: 200,000 points/s |
Horizon Tele-15 Mid-70 Avia |
| 5 | 点云数据 | 双回波模式 | 球坐标系 | 48 | Horizon/Tele-15/Avia: 480,000 点/s Mid-70: 200,000 points/s |
Horizon Tele-15 Mid-70 Avia |
| 6 | IMU 数据 | --- | --- | 1 | 见 [IMU 数据推送频率 ](#0x08 设置IMU数据推送频率) | Horizon Tele-15 Avia |
| 7 | 点云数据 | 三回波模式 | 直角坐标系 | 30 | Avia: 720,000 points/s |
Avia |
| 8 | 点云数据 | 三回波模式 | 球坐标系 | 30 | Avia: 720,000 points/s |
Avia |
数据类型 0
单回波直角坐标数据格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| x | 0 | int32_t | X 轴, 单位: mm |
| y | 4 | int32_t | Y 轴, 单位: mm |
| z | 8 | int32_t | Z 轴, 单位: mm |
| 反射率 | 12 | uint8_t | 反射率 |
数据类型 1
单回波球坐标数据格式:
| 字段 | 偏移(byte) | 数据类型 | 描述 |
|---|---|---|---|
| 深度 | 0 | uint32_t | 深度, 单位: mm |
| 天顶角 | 4 | uint16_t | 天顶角[0, 18000], Unit: 0.01 度 |
| 方位角 | 6 | uint16_t | 方位角[0, 36000], Unit: 0.01 度 |
| 反射率 | 8 | uint8_t | 反射率 |
数据类型 2
单回波直角坐标数据格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| x | 0 | int32_t | X 轴, 单位: mm |
| y | 4 | int32_t | Y 轴, 单位: mm |
| z | 8 | int32_t | Z 轴, 单位: mm |
| 反射率 | 12 | uint8_t | 反射率 |
| 标签 | 13 | uint8_t | 详见 [标签信息](#3.4 标签信息 {#tag_info}) |
数据类型 3
单回波球坐标数据格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| 深度 | 0 | uint32_t | 深度, 单位: mm |
| 天顶角 | 4 | uint16_t | 天顶角[0, 18000], Unit: 0.01 度 |
| 方位角 | 6 | uint16_t | 方位角[0, 36000], Unit: 0.01 度 |
| 反射率 | 8 | uint8_t | 反射率 |
| 标签 | 9 | uint8_t | 详见 [标签信息](#3.4 标签信息 {#tag_info) |
数据类型4
双回波直角坐标数据格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| x1 | 0 | int32_t | X 轴, 单位: mm |
| y1 | 4 | int32_t | Y 轴, 单位: mm |
| z1 | 8 | int32_t | Z 轴, 单位: mm |
| 反射率1 | 12 | uint8_t | 反射率 |
| 标签1 | 13 | uint8_t | 详见 [标签信息](#3.4 标签信息 {#tag_info) |
| x2 | 14 | int32_t | X 轴, 单位: mm |
| y2 | 18 | int32_t | Y 轴, 单位: mm |
| z2 | 22 | int32_t | Z 轴, 单位: mm |
| 反射率2 | 26 | uint8_t | 反射率 |
| 标签2 | 27 | uint8_t | 详见 [标签信息](#3.4 标签信息 {#tag_info}) |
数据类型 5
双回波球坐标数据格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| 天顶角 | 4 | uint16_t | 天顶角[0, 18000], Unit: 0.01 度 |
| 方位角 | 6 | uint16_t | 方位角[0, 36000], Unit: 0.01 度 |
| 深度1 | 4 | uint32_t | 深度, 单位: mm |
| 反射率1 | 8 | uint8_t | 反射率 |
| 标签1 | 9 | uint8_t | 详见 [标签信息](#3.4 标签信息 {#tag_info}) |
| 深度2 | 10 | uint32_t | 深度, 单位: mm |
| 反射率2 | 14 | uint8_t | 反射率 |
| 标签2 | 15 | uint8_t | 详见 [标签信息](#3.4 标签信息 {#tag_info}) |
数据类型6
IMU数据格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| gyro_x | 0 | float | 单位: rad/s |
| gyro_y | 4 | float | 单位: rad/s |
| gyro_z | 8 | float | 单位: rad/s |
| acc_x | 12 | float | 单位: g |
| acc_y | 16 | float | 单位: g |
| acc_z | 20 | float | 单位: g |
数据类型7
三回波直角坐标数据格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| x1 | 0 | int32_t | X 轴, 单位: mm |
| y1 | 4 | int32_t | Y 轴, 单位: mm |
| z1 | 8 | int32_t | Z 轴, 单位: mm |
| 反射率1 | 12 | uint8_t | 反射率 |
| 标签1 | 13 | uint8_t | 详见 [标签信息](#3.4 标签信息 {#tag_info) |
| x2 | 14 | int32_t | X 轴, 单位: mm |
| y2 | 18 | int32_t | Y 轴, 单位: mm |
| z2 | 22 | int32_t | Z 轴, 单位: mm |
| 反射率2 | 26 | uint8_t | 反射率 |
| 标签2 | 27 | uint8_t | 详见 [标签信息](#3.4 标签信息 {#tag_info}) |
| x3 | 28 | int32_t | X 轴, 单位: mm |
| y3 | 32 | int32_t | Y 轴, 单位: mm |
| z3 | 36 | int32_t | Z 轴, 单位: mm |
| 反射率3 | 40 | uint8_t | 反射率 |
| 标签3 | 41 | uint8_t | 详见 [标签信息](#3.4 标签信息 {#tag_info}) |
数据类型 8
三回波球坐标数据格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| 天顶角 | 0 | uint16_t | 天顶角[0, 18000], Unit: 0.01 度 |
| 方位角 | 2 | uint16_t | 方位角[0, 36000], Unit: 0.01 度 |
| 深度1 | 4 | uint32_t | 深度1, 单位: mm |
| 反射率1 | 8 | uint8_t | 反射率1 |
| 标签1 | 9 | uint8_t | 详见 [标签信息](#3.4 标签信息 {#tag_info}) |
| 深度2 | 10 | uint32_t | 深度, 单位: mm |
| 反射率2 | 14 | uint8_t | 反射率2 |
| 标签2 | 15 | uint8_t | 详见 [标签信息](#3.4 标签信息 {#tag_info}) |
| 深度3 | 16 | uint32_t | 深度3, 单位: mm |
| 反射率3 | 20 | uint8_t | 反射率3 |
| 标签3 | 21 | uint8_t | 详见 [标签信息](#3.4 标签信息 {#tag_info}) |
3.4 标签信息
| 位 | 描述 |
|---|---|
| 7:6 | 保留 |
| 5:4 | 回波数: 00: 回波0 01: 回波1 02: 回波2 03: 回波3 |
| 3:2 | 基于强度的点属性: 00: 正常点 01: 回波能量噪点置信度高 02: 回波能量噪点置信度中 03: 保留位 |
| 1:0 | 基于空间位置的点属性: 0: 正常点 1: 空间噪点置信度高 2: 空间噪点置信度中 3: 空间噪点置信度低 |
详见Livox Horizon/Tele-15/Mid70/Avia用户手册。
3.5 状态码
3.5.1雷达状态码
雷达状态码由32bits组成,相应的bit含义如下:
| 位 | 数据 | 描述 |
|---|---|---|
| Bit0:1 | temp_status | 0: 温度正常 1: 偏高或偏低 2: 极高或极低 |
| Bit2:3 | volt_status | 内部模组电压状态 0: 电压正常 1:电压偏高 2: 电压极高 |
| Bit4:5 | motor_status | 0: 电机正常 1: 电机警告 2: 电机错误,无法工作 |
| Bit6:7 | dirty_warn | 0: 无脏污和遮挡 1: 有脏污和遮挡 |
| Bit8 | firmware_status | 0: 固件正常 1: 固件出错,需要升级 |
| Bit9 | pps_status | 0: 无PPS信号 1: PPS信号正常 |
| Bit10 | device_status | 0: 正常 1: 设备寿命警告 |
| Bit11 | fan_status | 0: 风扇正常 1: 风扇警告(异常或用户设置停止) 支持设备: Mid-40/03.07.0000+ Horizon/06.04.0000+ Tele-15/07.03.0000+ |
| Bit12 | self_heating | 0: 低温自加热关闭 1: 低温自加热开启 支持设备: Horizon/06.04.0000+ Tele-15/07.03.0000+ Mid-70/10.03.0000+ Avia/11.06.0000+ |
| Bit13 | ptp_status | 0:无1588信号 1: 1588信号正常 |
| Bit14:16 | time_sync_status | 0: 未开始时间同步 1: 使用PTP 1588同步 2: 使用GPS同步 3: 使用PPS同步 4: 系统时间同步异常(最高优先级信号异常) |
| Bit17:29 | RSVD | |
| Bit30:31 | system_status | 0: 正常 1: 警告 以下任何情况之一均会触发警告: 1.1 temp_status 为 1;1.2 volt_status 为1;1.3 motor_status 为1;1.4 dirty_warn 为1;1.5 device_status 为1; 1.6 fan_status 为1;2:错误 雷达将会停机并进入错误状态 以下任何情况之一均会触发错误: 2.1 temp_status 为 2;2.2 volt_status 为2;2.3 motor_status 为 2;2.4 firmware_status 为1; |
3.5.2 Hub 状态码
Hub状态码由32bits组成,相应的bit含义如下:
| 位 | 数据 | 描述 |
|---|---|---|
| Bit0:1 | sync_status | 0: 未开始时间同步 1: 使用PTP1588同步 2: 使用GPS同步 3: 系统时间同步异常(最高优先级信号异常) |
| Bit2:3 | temp_status | 0: 温度正常 1: 偏高或偏低 2: 极高或极低 |
| Bit4 | LiDAR_status | 0: 子雷达正常 1: 子雷达状态异常 |
| Bit5 | LiDAR_link_status | 0: 雷达连接正常 1: 雷达连接异常 |
| Bit6 | firmware_status | 0: 雷达固件正常 1: 雷达固件出错,需要升级 |
| Bit7:29 | RSVD | |
| Bit30:31 | system_status | 0: 正常 1:警告 以下任何状况都会触发警告: 1.1 temp_status 为 1;2: 错误 以下任何状况都会触发错误: 2.1 temp_status 为2;2.2 LiDAR_status 为1;2.3 firmware_status 为1; |
4 配置参数
4.1 描述
配置参数表的设计是为了更方便的配置livox的设备。参数表存储在设备非易失性介质中,所以设备断电重启以后不会丢失。
每个配置参数都有一个唯一的键值,以下是当前支持的参数:
| 关键字 | 名称 | 支持设备 | 键值长度 | 键值类型 | 键值描述 |
|---|---|---|---|---|---|
| 0x00 | 保留 | -- | 无效关键字 | ||
| 0x01 | 高灵敏度功能 | Tele-15/07.09.0000+ Avia/11.06.0000+ |
1 | uint8_t | 0:高灵敏度功能关闭 1:高灵敏度功能开启(默认) |
| 0x02 | 重复/非重复扫描模式 | Avia/11.06.0000+ | 1 | uint8_t | 0:非重复扫描模式(默认) 1:重复扫描模式 |
| 0x03 | slot id配置 | Mid-70/10.03.0000+ Avia/11.06.0000+ |
1 | uint8_t | 修改雷达slot id,范围1-9,默认为1 |
- 写配置参数详见 [写配置参数](#0x0B 写设备参数);
- 读配置参数详见 [读配置参数](#0x0C 读配置参数) ;
5 控制指令详情
5.1 通用命令集
0x00 广播消息
消息
| 消息 | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 通用命令: 0x00 |
| cmd_id | 1 | uint8_t | 指令ID: 0x00 | |
| broadcast_code | 2 | uint8_t[16] | 设备广播码,以'\0'结束的字符串 每个设备的广播码特有. |
|
| dev_type | 18 | uint8_t | 设备类型: 0: Livox Hub 1: Mid-40 2: Tele-15 3: Horizon 6: Mid-70 7:Avia |
|
| reserved | 19 | uint16_t | 保留 |
0x01 网络握手确认指令
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 通用指令: 0x00 |
| cmd_id | 1 | uint8_t | 指令ID: 0x01 | |
| user_ip | 2 | uint8_t[4] | 主机IP地址 样例: AA.BB.CC.DD user_ip[0] = AA user_ip[1] = BB user_ip[2] = CC user_ip[3] = DD |
|
| data_port | 6 | uint16_t | 主机点云数据UDP目的端口 | |
| cmd_port | 8 | uint16_t | 主机控制指令UDP目的端口 | |
| imu_port | 10 | uint16_t | 主机控制IMU UDP目的端口, 支持设备: Horizon/06.04.0000+ Tele-15/07.03.0000+ |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 通用指令: 0x00 |
| cmd_id | 1 | uint8_t | 指令ID: 0x01 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
0x02 设备信息查询
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 通用指令: 0x00 |
| cmd_id | 1 | uint8_t | 指令ID: 0x02 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 通用指令: 0x00 |
| cmd_id | 1 | uint8_t | 指令ID: 0x02 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
|
| version | 3 | uint8_t[4] | 固件版本: 样例: AA.BB.CC.DD 版本号组成[0] = AA 版本号组成[1] = BB 版本号组成[2] = CC 版本号组成[3] = DD |
0x03 心跳数据
主机端需要以1Hz频率发送请求数据,以维持与设备的正常通信。
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 通用指令: 0x00 |
| cmd_id | 1 | uint8_t | 指令ID: 0x03 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 通用指令: 0x00 |
| cmd_id | 1 | uint8_t | 指令ID: 0x03 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
|
| work_state | 3 | uint8_t | 雷达状态: 0x00: 初始化 0x01: 正常 0x02: 低功耗 0x03: 待机 0x04: 异常 Hub 状态: 0x00: 初始化 0x01: 正常 0x04: 异常 |
|
| feature_msg | 4 | uint8_t | 雷达特有信息: Bit0: 抗雨雾功能状态 0x00: 关闭 0x01: 开启 Bit1 ~ Bit7: 保留 Hub保留 |
|
| ack_msg | 5 | uint32_t | ACK 信息: 与工作状态有关: 工作状态为 0x00: 初始化百分比 工作状态为其他r: 状态码 |
0x04 开始/停止采样
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 通用指令: 0x00 |
| cmd_id | 1 | uint8_t | 指令ID: 0x04 | |
| sample_ctrl | 2 | uint8_t | 0x00: 停止采样 0x01: 开始采样 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 通用指令: 0x00 |
| cmd_id | 1 | uint8_t | 指令ID: 0x04 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
0x05 更改点云坐标系模式
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 通用指令: 0x00 |
| cmd_id | 1 | uint8_t | 指令ID: 0x05 | |
| coordinate_type | 2 | uint8_t | 0x00: 直角坐标系 0x01: 球坐标系 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 通用指令: 0x00 |
| cmd_id | 1 | uint8_t | 指令ID: 0x05 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
注意: 该指令只会在RAM中起效,重启后系统坐标系会复位为直角坐标系.
0x06 断开连接
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 通用指令: 0x00 |
| cmd_id | 1 | uint8_t | 指令ID: 0x06 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 通用指令: 0x00 |
| cmd_id | 1 | uint8_t | 指令ID: 0x06 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
0x07 推送异常状态信息
信息
在设备发生异常后,立刻以10Hz频率发送异常信息。
| MSG | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 通用指令: 0x00 |
| cmd_id | 1 | uint8_t | 指令ID: 0x07 | |
| status_code | 2 | uint32_t | 状态码 |
0x08 配置静态/动态IP
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 通用指令: 0x00 |
| cmd_id | 1 | uint8_t | 指令ID: 0x08 | |
| ip_mode | 2 | uint8_t | 0x00: 动态IP 0x01: 静态IP |
|
| ip_addr | 3 | uint8_t[4] | 详见: IP地址信息 | |
| net_mask | 7 | uint8_t[4] | IPV4 子网掩码 当 ‘ip_mode’ 为0x01(静态IP),IP掩码有效 例如: AA.BB.CC.DD net_mask[0]: AA net_mask[1]: BB net_mask[2]: CC net_mask[3]: DD 支持设备: Horizon/06.04.0000+ Tele-15/07.03.0000+ Mid-70/10.03.0000+ Avia/11.06.0000+ |
|
| gw_addr | 11 | uint8_t[4] | IPV4 网关 当 ‘ip_mode’ 为0x01(静态IP),IP网关有效 例如: AA.BB.CC.DD gw_addr[0]: AA gw_addr[1]: BB gw_addr[2]: CC gw_addr[3]: DD 支持设备: Horizon/06.04.0000+ Tele-15/07.03.0000+ Mid-70/10.03.0000+ Avia/11.06.0000+ |
IP地址信息:
| 设备信息/固件版本 | IP地址信息 |
|---|---|
| Livox Hub Mid-40 |
IPV4 地址 当 ‘ip_mode’ 为0x01(静态IP),IP地址有效 ip_addr[0]: 192 ip_addr[1]: 168 ip_addr[2]: 1 ip_addr[3]: 具体范围如下 广播码最后一位内容: 1: 11 ~ 80 2: 81 ~ 150 3: 151 ~ 220 |
| Horizon/06.04.0000+ Tele-15/07.03.0000+ Mid-70/10.03.0000+ Avia/11.06.0000+ |
IPV4 地址 当 ‘ip_mode’ 为0x01(静态IP),IP地址有效 ip_addr[0]:1 ~ 126 && 128 ~ 223 ip_addr[1]: 0 ~ 255 ip_addr[2]: 0 ~ 255 ip_addr[3]: 0 ~ 255 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 通用指令: 0x00 |
| cmd_id | 1 | uint8_t | 指令ID: 0x08 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
注意: 关于IP详情, 见:IP_address.
0x09 获取设备IP信息
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 通用指令: 0x00 |
| cmd_id | 1 | uint8_t | 指令ID: 0x09 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 通用指令: 0x00 |
| cmd_id | 1 | uint8_t | 指令ID: 0x09 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
|
| ip_mode | 3 | uint8_t | 0x00: 动态IP 0x01: 静态 IP |
|
| ip_addr | 4 | uint8_t[4] | 设备IPV4 地址 样例: AA.BB.CC.DD user_ip[0] = AA user_ip[1] = BB user_ip[2] = CC user_ip[3] = DD |
|
| net_mask | 8 | uint8_t[4] | 设备IPV4 子网掩码 例如: AA.BB.CC.DD user_netmask[0] = AA user_netmask[1] = BB user_netmask[2] = CC user_netmask[3] = DD 支持设备: Livox Hub/08.07.0000+ Horizon/06.04.0000+ Tele-15/07.03.0000+ Mid-70/10.03.0000+ |
|
| gw | 12 | uint8_t[4] | 设备IPV4 网关 例如: AA.BB.CC.DD user_gw[0] = AA user_gw[1] = BB user_gw[2] = CC user_gw[3] = DD 支持设备: Livox Hub/08.07.0000+ Horizon/06.04.0000+ Tele-15/07.03.0000+ Mid-70/10.03.0000+ |
0x0A 重启设备
支持设备/固件版本:
Livox Hub/08.07.0000+
Mid-40/03.07.0000+
Horizon/06.04.0000+
Tele-15/07.03.0000+
Mid-70/10.03.0000+
Avia/11.06.0000+
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 通用指令: 0x00 |
| cmd_id | 1 | uint8_t | 指令ID: 0x0A | |
| timeout | 2 | uint16_t | 重启设备延迟时间 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 通用指令: 0x00 |
| cmd_id | 1 | uint8_t | 指令ID: 0x0A | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
0x0B 写设备参数
支持设备/固件版本:
Livox Hub/08.09.0000+
Horizon/06.11.0000+
Tele-15/07.09.0000+
Mid-70/10.03.0000+
Avia/11.06.0000+
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 通用指令: 0x00 |
| cmd_id | 1 | uint8_t | 指令ID: 0x0B | |
| param_list | 2 | -- | 以键-值对的形式配置参数,详见下表 |
在“参数表”中,每个配置参数具有以下格式:
配置参数表格式
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| 键 | 0 | uint16_t | 键 |
| 长度 | 2 | uint16_t | 数值长度 |
| 数值 | 4 | -- | 不同键值具有不同的数值,详见 [配置参数](#4 配置参数) |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 通用指令: 0x00 |
| cmd_id | 1 | uint8_t | 指令ID: 0x0B | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败, 写参数发生错误 |
|
| error_key | 3 | uint16_t | 第一个错误配置参数的键值 | |
| error_code | 5 | uint8_t | 见下表 |
“错误码”的含义:
配置参数错误码
| 错误码 | 描述 |
|---|---|
| 0 | 无错误 |
| 1 | 不支持该键 |
| 2 | 执行失败 |
| 3 | 该键无法写入 |
| 4 | 错误值 |
| 5 | 值长度错误 |
| 6 | 读取参数长度限制 |
| 7 | 参数长度不匹配 |
0x0C 读配置参数
支持设备/固件版本:
Livox Hub/08.09.0000+
Horizon/06.11.0000+
Tele-15/07.09.0000+
Mid-70/10.03.0000+
Avia/11.06.0000+
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 通用指令: 0x00 |
| cmd_id | 1 | uint8_t | 指令ID: 0x0C | |
| param_num | 2 | uint8_t | 参数数量 | |
| key_list | 3 | -- | 读取参数键值表 |
在'key_list'中, 每个键有以下格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| 键 | 0 | uint16_t | 键 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 通用指令: 0x00 |
| cmd_id | 1 | uint8_t | 指令ID: 0x0C | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败, 读取参数发生错误 |
|
| error_key | 3 | uint16_t | 第一个错误参数键值 | |
| error_code | 5 | uint8_t | 详见 配置参数错误码 | |
| param_list | 6 | -- | 以键-值对的形式配置参数,详见 配置参数表格式 |
5.2 雷达指令集
0x00 模式切换指令
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 雷达指令: 0x01 |
| cmd_id | 1 | uint8_t | 指令ID: 0x00 | |
| LiDAR_mode | 2 | uint8_t | 雷达模式: 用户可以设置如下模式: 0x01: 正常工作模式 0x02:低功耗模式 0x03: 待机模式 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 雷达指令: 0x01 |
| cmd_id | 1 | uint8_t | 指令ID: 0x00 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 0x02: 正在切换 |
0x01 写入雷达外部参数
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 雷达指令: 0x01 |
| cmd_id | 1 | uint8_t | 指令ID: 0x01 | |
| roll | 2 | float32 | 横滚角, 单位: 度 | |
| pitch | 6 | float32 | 俯仰角,单位: 度 | |
| yaw | 10 | float32 | 航向角, 单位: 度 | |
| x | 14 | int32_t | X 平移, 单位: mm | |
| y | 18 | int32_t | Y 平移, 单位: mm | |
| z | 22 | int32_t | Z 平移, 单位: mm |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 雷达指令: 0x01 |
| cmd_id | 1 | uint8_t | 指令ID: 0x01 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
0x02 读取雷达外部参数
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 雷达指令: 0x01 |
| cmd_id | 1 | uint8_t | 指令ID: 0x02 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 雷达指令: 0x01 |
| cmd_id | 1 | uint8_t | 指令ID: 0x02 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
|
| roll | 3 | float32 | 横滚角, 单位: 度 | |
| pitch | 7 | float32 | 俯仰角,单位: 度 | |
| yaw | 11 | float32 | 航向角, 单位: 度 | |
| x | 15 | int32_t | X 平移, 单位: mm | |
| y | 19 | int32_t | Y 平移, 单位: mm | |
| z | 23 | int32_t | Z 平移, 单位: mm |
0x03 开启/关闭抗雨雾功能
支持设备:
Mid-40
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 雷达指令: 0x01 |
| cmd_id | 1 | uint8_t | 指令ID: 0x03 | |
| state | 2 | uint8_t | 开启/关闭抗雨雾功能: 0x00: 关闭 0x01: 开启 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 雷达指令: 0x01 |
| cmd_id | 1 | uint8_t | 指令ID: 0x03 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
0x04 开启/关闭风扇
支持设备:
Mid-40/03.07.0000+
Horizon/06.04.0000+
Tele-15/07.03.0000+
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 雷达指令: 0x01 |
| cmd_id | 1 | uint8_t | 指令ID: 0x04 | |
| state | 2 | uint8_t | 开启/关闭风扇: 0x00: 关闭 0x01: 开启 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 雷达指令: 0x01 |
| cmd_id | 1 | uint8_t | 指令ID: 0x04 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 此配置会保存到flash |
0x05 读取风扇开/关状态
支持设备:
Mid-40/03.07.0000+
Horizon/06.04.0000+
Tele-15/07.03.0000+
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 雷达指令: 0x01 |
| cmd_id | 1 | uint8_t | 指令ID: 0x05 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 雷达指令: 0x01 |
| cmd_id | 1 | uint8_t | 指令ID: 0x05 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
|
| state | 3 | uint8_t | 风扇开/关状态: 0x00: 关闭 0x01: 开启 |
0x06 设置雷达回波模式
支持设备:
Horizon/06.04.0000+
Tele-15/07.03.0000+
Mid-70/10.03.0000+
Avia/11.06.0000+
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 雷达指令: 0x01 |
| cmd_id | 1 | uint8_t | 指令ID: 0x06 | |
| mode | 2 | uint8_t | 回波模式: 0x00: Single Return First 0x01: Single Return Strongest 0x02: Dual Return 0x03: Triple Return |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 雷达指令: 0x01 |
| cmd_id | 1 | uint8_t | 指令ID: 0x06 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 此配置保存在flash中 |
0x07 获取雷达回波模式
支持设备:
Horizon/06.04.0000+
Tele-15/07.03.0000+
Mid-70/10.03.0000+
Avia/11.06.0000+
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 雷达指令: 0x01 |
| cmd_id | 1 | uint8_t | 指令ID: 0x07 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 雷达指令: 0x01 |
| cmd_id | 1 | uint8_t | 指令ID: 0x07 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
|
| mode | 3 | uint8_t | 回波模式: 0x00: Single Return First 0x01: Single Return Strongest 0x02: Dual Return 0x03: Triple Return |
0x08 设置IMU数据推送频率
支持设备:
Horizon/06.04.0000+
Tele-15/07.03.0000+
Avia/11.06.0000+
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 雷达指令: 0x01 |
| cmd_id | 1 | uint8_t | 指令ID: 0x08 | |
| frequency | 2 | uint8_t | IMU数据推送频率: 0x00: 0Hz(关闭IMU数据推送) 0x01: 200Hz |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 雷达指令: 0x01 |
| cmd_id | 1 | uint8_t | 指令ID: 0x08 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 该配置存储在flash中. |
0x09 获取IMU数据推送频率
支持设备:
Horizon/06.04.0000+
Tele-15/07.03.0000+
Avia/11.06.0000+
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 雷达指令: 0x01 |
| cmd_id | 1 | uint8_t | 指令ID: 0x09 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 雷达指令: 0x01 |
| cmd_id | 1 | uint8_t | 指令ID: 0x09 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
|
| frequency | 3 | uint8_t | IMU数据推送频率: 0x00: 0Hz(关闭IMU数据推送) 0x01: 200Hz |
0x0A 更新UTC同步时间
支持设备:
Mid-40/03.07.0000+
Horizon/06.04.0000+
Tele-15/07.03.0000+
Mid-70/10.03.0000+
Avia/11.06.0000+
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 雷达指令: 0x01 |
| cmd_id | 1 | uint8_t | 指令ID: 0x0A | |
| year | 2 | uint8_t | UTC 年: 0 代表2000 年 255 代表2255 年 |
|
| month | 3 | uint8_t | UTC 月: 范围为 1-12 | |
| day | 4 | uint8_t | UTC 日: 范围为 1-31 | |
| hour | 5 | uint8_t | UTC 时: 范围为 0-23 | |
| microsecond | 6 | uint32_t | 1 小时内偏移值,单位:us | |
| 应答 |
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | 雷达指令: 0x01 |
| cmd_id | 1 | uint8_t | 指令ID: 0x0A | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
5.3 Hub 指令集
0x00 查询已连接雷达设备信息
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x00 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x00 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
|
| count | 3 | uint8_t | 已经连接到Hub的雷达数量范围: 0 ~ 27 | |
| info_list | 4 | -- | 已连接雷达设备信息表 |
在‘info_list’中,每个雷达设备信息具有以下格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| broadcast_code | 0 | uint8_t[16] | 雷达广播码 |
| dev_type | 16 | uint8_t | 设备类型: 1: Mid-40 2: Tele-15 3: Horizon |
| version | 17 | uint8_t[4] | LiDAR 固件版本 样例: AA.BB.CC.DD version[0] = AA version[1] = BB version[2] = CC version[3] = DD |
| slot_id | 21 | uin8_t | 安装雷达的端口号 |
| LiDAR_id | 22 | uint8_t | 雷达 ID: 1: Mid-100 左/ Mid-40 / Tele-15 / Horizon/Mid-70 2: Mid-100 中 3: Mid-100 右 |
0x01 设置雷达模式
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x01 | |
| count | 2 | uint8_t | 设置雷达数量范围: 1 ~ 27 | |
| config_list | 3 | -- | 雷达模式配置表 |
在 ‘config_list’中, 每个雷达模式配置信息具有以下格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| broadcast_code | 0 | uint8_t[16] | 雷达广播码 |
| LiDAR_mode | 16 | uint8_t | 雷达模式: 用户可以配置如下模式: 0x01: 正常模式 0x02: 低功耗模式 0x03: 待机模式 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x01 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 0x02: Switching |
|
| count | 3 | uint8_t | 雷达设置数量范围: 1 ~ 27 | |
| return_list | 4 | -- | 返回信息表 |
在 ‘return_list’中, 每次返回信息具有以下格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| ret_code | 0 | uint8_t | LiDAR 返回码: 0x00: 成功 0x01: 失败 |
| broadcast_code | 1 | uint8_t[16] | 雷达广播码 |
0x02 开启/关闭指定端口的电源
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x02 | |
| slot_id | 2 | uint8_t | 端口ID范围: 1 ~ 9 | |
| power_ctrl | 3 | uint8_t | 电源控制: 0x00: 关闭 0x01: 开启 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x02 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
0x03 写雷达外部参数
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x03 | |
| count | 2 | uint8_t | 设置雷达数量范围: 1 ~ 27 | |
| param_list | 3 | -- | 雷达参数配置表 |
在 ‘param_list’, 每个雷达参数配置格式如下:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| broadcast_code | 0 | uint8_t[16] | 雷达广播码 |
| roll | 16 | float | 横滚角, 单位: 度 |
| pitch | 20 | float | 俯仰角, 单位: 度 |
| yaw | 24 | float | 航向角, 单位: 度 |
| x | 28 | int32_t | X 平移, 单位: mm |
| y | 32 | int32_t | Y 平移, 单位: mm |
| z | 36 | int32_t | Z 平移, 单位: mm |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x03 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
|
| count | 3 | uint8_t | 设置雷达数量范围: 1 ~ 27 | |
| return_list | 4 | -- | 返回信息表 |
在 ‘return_list’中, 每个返回信息具有以下格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| ret_code | 0 | uint8_t | LiDAR 返回码: 0x00: 成功 0x01: 失败 |
| broadcast_code | 1 | uint8_t[16] | 雷达广播码 |
0x04 读取雷达外部参数
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x04 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x04 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
|
| count | 3 | uint8_t | 设置雷达数量范围: 1 ~ 27 | |
| param_list | 4 | -- | 雷达参数表 |
在 ‘param_list’, 每个雷达参数配置格式如下:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| ret_code | 0 | uint8_t | LiDAR 返回码: 0x00: 成功 0x01: 失败 |
| broadcast_code | 1 | uint8_t[16] | 雷达广播码 |
| roll | 17 | float | 横滚角, 单位: 度 |
| pitch | 21 | float | 横滚角, 单位: 度 |
| yaw | 25 | float | 横滚角, 单位: 度 |
| x | 29 | int32_t | X 平移, 单位: mm |
| y | 33 | int32_t | Y 平移, 单位: mm |
| z | 37 | int32_t | Z 平移, 单位: mm |
0x05 查询雷达状态信息
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x05 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x05 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
|
| count | 3 | uint8_t | 连接Hub雷达数量范围: 0 ~ 27 | |
| info_list | 4 | -- | 雷达状态表 |
在 ‘info_list’中, 每个雷达状态信息具有以下格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| broadcast_code | 0 | uint8_t[16] | 雷达广播码 |
| work_state | 16 | uint8_t | 雷达状态: 0x00: 初始化 0x01: 正常 0x02: 低功耗 0x03: 待机 0x04: 错误 |
| feature_msg | 17 | uint8_t | 雷达模式信息: Bit0: 抗雨雾开关 0x00:关闭 0x01: 开启 Bit1 ~ Bit7: 保留位 |
| ack_msg | 18 | uint32_t | ACK 消息: 与‘work_state’相关: work_state 为 0x00: 初始化 work_state 为其它: 状态码 |
0x06 开启/关闭Hub外参实时计算
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x06 | |
| state | 2 | uint8_t | 开启/关闭Hub外参实时计算: 0:关闭 1: 开启 |
注意: Hub利用存储在每个雷达的外部参数进行坐标转换。坐标系先旋转然后平移。旋转以欧拉角进行,旋转轴的顺序依次为X-Y-Z.
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x06 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
0x07 开启/关闭雷达抗雨雾功能
支持设备:
Mid-40
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x07 | |
| count | 2 | uint8_t | 配置雷达数量范围: 1 ~ 27 | |
| config_list | 3 | -- | 雷达配置信息表 |
在 ‘config_list’中, 每个雷达的参数信息具有以下格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| broadcast_code | 0 | uint8_t[16] | 雷达广播码 |
| cmd_data | 1 | uint8_t | 0: 关闭 1: 开启 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x07 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
|
| count | 3 | uint8_t | 设置雷达数量范围: 1 ~ 27 | |
| return_list | 4 | -- | 返回信息表 |
在 ‘return_list’中, 每个返回信息具有以下格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| ret_code | 0 | uint8_t | LiDAR 返回码: 0x00: 成功 0x01: 失败 0x02: 设备不支持 |
| broadcast_code | 1 | uint8_t[16] | 雷达广播码 |
0x08 查询中心板端口电源状态
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x08 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x08 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
|
| slot_power_state | 3 | uint16_t | 端口电源状态: 0x00: 关闭 0x01: 开启 bit0:端口1 bit1: 端口2 ... bit8: 端口9 |
0x09 设置雷达风扇开启/关闭
支持设备:
Mid-40/03.07.0000+
Horizon/06.04.0000+
Tele-15/07.03.0000+
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x09 | |
| count | 2 | uint8_t | 设置雷达数量发范围: 1 ~ 27 | |
| config_list | 3 | -- | 雷达风扇配置表 |
在 ‘config_list’, 每个雷达风扇配置信息具有以下格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| broadcast_code | 0 | uint8_t[16] | 雷达广播码 |
| state | 1 | uint8_t | 开启/关闭风扇: 0: 关闭 1: 开启 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x09 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
|
| count | 3 | uint8_t | 雷达配置数量范围: 1 ~ 27 | |
| return_list | 4 | -- | 返回信息列表 |
在 ‘return_list’中, 每个返回信息具有以下格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| ret_code | 0 | uint8_t | LiDAR 返回码: 0x00: 成功 0x01: 失败 0x02: 设备不支持 |
| broadcast_code | 1 | uint8_t[16] | 雷达广播码 |
注意: 此指令保存在雷达flash,掉电不会丢失
0x0A 获取雷达开/关风扇状态
支持设备:
Mid-40/03.07.0000+
Horizon/06.04.0000+
Tele-15/07.03.0000+
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x0A | |
| count | 2 | uint8_t | 雷达配置数量范围: 1 ~ 27 | |
| config_list | 3 | -- | 雷达风扇配置信息表 |
在 ‘config_list’中,每个雷达风扇配置信息格式如下:
| 字段 | 偏移(字节) | 数据类型 | 描述n |
|---|---|---|---|
| broadcast_code | 0 | uint8_t[16] | 雷达广播码 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x0A | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
|
| count | 3 | uint8_t | 雷达设置数量范围: 1 ~ 27 | |
| return_list | 4 | -- | 返回信息列表 |
在 ‘return_list’中, 每个返回信息具有以下格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| ret_code | 0 | uint8_t | LiDAR 返回码: 0x00: 成功 0x01: 失败 0x02: 设备不支持 |
| broadcast_code | 1 | uint8_t[16] | 雷达广播码 |
| state | 17 | uint8_t | 风扇开/关状态: 0: 关闭 1: 开启 |
0x0B 设置雷达回波模式
支持设备:
Horizon/06.04.0000+
Tele-15/07.03.0000+
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x0B | |
| count | 2 | uint8_t | 雷达设置数量范围: 1 ~ 27 | |
| config_list | 3 | -- | 雷达回波模式配置列表 |
I在 ‘config_list’中, 每个雷达回波模式配置信息具有以下格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| broadcast_code | 0 | uint8_t[16] | 雷达广播码 |
| mode | 1 | uint8_t | 回波模式: 0x00: Single Return First 0x01: Single Return Strongest 0x02: Dual Return |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x0B | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
|
| count | 3 | uint8_t | 雷达设置数量范围: 1 ~ 27 | |
| return_list | 4 | -- | 返回信息列表 |
在 ‘return_list’中, 每个返回信息具有以下格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| ret_code | 0 | uint8_t | LiDAR 返回码: 0x00: 成功 0x01: 失败 0x02: 设备不支持 |
| broadcast_code | 1 | uint8_t[16] | 雷达广播码 雷达广播码 此配置保存在flash中 |
0x0C 获取雷达回波模式信息
支持设备:
Horizon/06.04.0000+
Tele-15/07.03.0000+
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x0C | |
| count | 2 | uint8_t | 雷达设置数量范围: 1 ~ 27 | |
| config_list | 3 | -- | 雷达回波模式配置表 |
在 ‘config_list’中, 每个雷达回波模式配置信息具有以下格式:
| 字段 | 偏移(字节) | 数据类型 | 描述n |
|---|---|---|---|
| broadcast_code | 0 | uint8_t[16] | 雷达广播码 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x0C | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
|
| count | 3 | uint8_t | 雷达设置数量范围: 1 ~ 27 | |
| return_list | 4 | -- | 返回信息列表 |
在 ‘return_list’中, 每个返回信息具有以下格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| ret_code | 0 | uint8_t | LiDAR 返回码: 0x00: 成功 0x01: 失败 0x02: 数据不支持 |
| broadcast_code | 1 | uint8_t[16] | 雷达广播码 |
| mode | 17 | uint8_t | 回波模式: 0x00: Single Return First 0x01: Single Return Strongest 0x02: Dual Return |
0x0D 设置雷达IMU数据推送频率
支持设备:
Horizon/06.04.0000+
Tele-15/07.03.0000+
请求
| CMD名称 | 偏移(字节) | 数据类型 | 描述 | |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x0D | |
| count | 2 | uint8_t | 雷达设置数量范围: 1 ~ 27 | |
| config_list | 3 | -- | 雷达IMU配置信息表 |
在 ‘config_list’中, 每个雷达IMU频率配置信息具有以下格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| broadcast_code | 0 | uint8_t[16] | 雷达广播码 |
| frequency | 1 | uint8_t | IMU 数据推送频率: 0x00: 0Hz(关闭IMU数据推送) 0x01: 200Hz |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x0D | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
|
| count | 3 | uint8_t | 雷达设置数量范围: 1 ~ 27 | |
| return_list | 4 | -- | 返回信息列表 |
在 ‘return_list’中, 每个返回信息具有以下格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| ret_code | 0 | uint8_t | LiDAR 返回码: 0x00: 成功 0x01: 失败 0x02: Device not support |
| broadcast_code | 1 | uint8_t[16] | 雷达广播码 此配置保存在flash中 |
0x0E 获取雷达IMU推送频率信息
支持设备:
Horizon/06.04.0000+
Tele-15/07.03.0000+
请求
| CMD | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x0C | |
| count | 2 | uint8_t | 雷达设置数量范围: 1 ~ 27 | |
| config_list | 3 | -- | 雷达IMU推送频率信息表 |
在 ‘config_list’中, 每个雷达IMU频率配置信息具有以下格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| broadcast_code | 0 | uint8_t[16] | 雷达广播码 |
应答
| ACK | 名称 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|---|
| data | cmd_set | 0 | uint8_t | Hub指令: 0x02 |
| cmd_id | 1 | uint8_t | 指令ID: 0x07 | |
| ret_code | 2 | uint8_t | 返回码: 0x00: 成功 0x01: 失败 |
|
| count | 3 | uint8_t | 雷达设置数量范围: 1 ~ 27 | |
| return_list | 4 | -- | 返回信息列表 |
在 ‘return_list’中, 每个返回信息具有以下格式:
| 字段 | 偏移(字节) | 数据类型 | 描述 |
|---|---|---|---|
| ret_code | 0 | uint8_t | LiDAR 返回码: 0x00: 成功 0x01: 失败 0x02:设备不支持 |
| broadcast_code | 1 | uint8_t[16] | 雷达广播码 |
| frequency | 17 | uint8_t | IMU 数据推送频率: 0x00: 0Hz(关闭IMU数据推送) 0x01: 200Hz |




