跳到主要内容

使用 TCP API

1 概述

TCP(Transmission Control Protocol,传输控制协议)是一种常用的网络传输协议,主要用于保证网络通信的可靠性和顺序性。TCP API 指令则是在基于 TCP 连接的通信中,客户端和服务器之间互相发送的用于控制、操作、查询等目的的数据指令(消息、命令)。本文主要指禾赛激光雷达和电脑主机间的通信。

2 使用方法

TCP API 指令的使用方法如下:

  1. 将激光雷达连接至电脑主机,确保其能够与主机正常建立通信(具体方法详见如何配置以太网);
  2. 从主机本地向激光雷达发送 TCP API 指令,并接收来自激光雷达的返回值,根据 TCP API 使用手册中的说明进行返回值解析,确认 API 指令发送操作是否成功。

本文将分别介绍三种不同的 TCP API 指令发送方法以及相应实例,可根据实际情况选择其中一种或多种进行使用。

注:以下实例基于 OT128 中改变工作模式 (0x1C) 这一 TCP API 指令实现,实际各个型号激光雷达的 TCP API 指令可能有所不同,具体内容请参考对应型号的 TCP API 使用手册。

3 实例介绍

3.1 使用 LidarUtilities 发送 TCP API 指令

访问禾赛官网 下载并安装 LidarUtilities,打开软件后切换到"Send PTC Command"界面,在"Send Command"中输入对应的指令码和 Payload,返回值如下图所示:

LU_command

其中47 74是识别标志位,后面1C代表刚刚发送的指令,第四位的00是返回码,代表返回结果 No error,第五至第八位的00代表无 payload 信息。

注:目前 LidarUtilities 只适配部分禾赛激光雷达型号(OT128, AT128P等)。

3.2 使用 Python 脚本发送 TCP API 指令

如果当前的激光雷达型号不支持 LidarUtilities,也可以使用 Hesai 官方提供的Python 脚本,并根据实际情况配置以下内容:

在配置完成后运行该脚本,会将指定的 TCP API 指令发送给激光雷达,并获得对应的返回值信息。运行结果如下所示:

payload :
01
response:
b'Gt\x1c\x00\x00\x00\x00\x00'
command is: 1c, get return code: 00, return length: 0,
return string:
{'response_command': '1c', 'response_return_code': '00', 'response_payload_length':0,'response_payload': b''}

其中,‘return code’为00代表该指令的返回结果 No error。 此外,也可以通过在 Wireshark 中对激光雷达发出的 TCP 报文内容进行解析获取结果。如下图中所示,该报文返回的数据字段中47 74是识别标志位,1C代表刚刚发送的指令,第四位的00是返回码,代表返回结果 No error,第五至第八位的00代表无 payload 信息。

TCP_response

3.3 使用外部工具(Packet Sender)发送 TCP API 指令

下载并安装Packet Sender,这是一款免费、开源的工具,其使用方法与 LidarUtilities 类似。

如下图所示,在 HEX 框中输入原始发送指令,并配置对应的激光雷达 IP 地址和 TCP 端口号,选择‘TCP’模式,然后点击 Send,就可以在下面的 Log 窗口中查看已发送的指令和接收到的返回值信息(需要根据 TCP API 使用手册中的说明进行返回值解析)。

TCP_sender