跳到主要内容

使用 HTTP API

1 概述

禾赛 HTTP API 提供了一套标准的 HTTP 接口,允许开发者通过简单的 HTTP 指令请求与激光雷达进行交互。通过这套 API,可以轻松实激光雷达参数获取和功能配置等操作。

注:HTTP API 只适用于支持 HTTP 服务器的禾赛激光雷达,包括 Pandar 系列/QT 系列/XT 系列等型号。

2 使用方法

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

  1. 将激光雷达连接至电脑主机,确保其能够与主机正常建立通信(具体方法详见如何配置以太网);
  2. 从主机本地向激光雷达侧发送 HTTP API 指令。这里推荐采用 Python 脚本方式,相应的示例代码参考如下;
#!/usr/bin/env python3

# -*- coding: utf-8 -*-

from urllib import request, parse
import requests
import json
import sys
import getopt
import IPy
import time
import os

## Lidar IP address

ipaddr = "192.168.1.201"

## HTTP API command

local_url = 'http://' + ipaddr + '/pandar.cgi?action=get&object=lidar_config'
f = None # Initialize f
try:
f = request.urlopen(local_url, timeout=3.0)
print("Success!")
data = f.read()
print(data)
print('Status:', f.status, f.reason)
json_data = data.decode('utf-8')
py_dict = json.loads(json_data)
py_body = py_dict.get('Body')

except Exception as e:
print(f"Error connecting to {local_url}: {e}")
finally:
if f:
f.close()

上述代码中,有两个参数需要特别注意:

  • ipaddr:为激光雷达对应的 IP 地址
  • local_url:为 HTTP API 指令对应的字符串

实际操作过程中,需要根据激光雷达的参数配置与 HTTP API 实现目的对这两个参数进行修改更新。

  1. 获取激光雷达返回值信息,确认 API 指令发送操作是否成功。

3 实例介绍

本文选取了一些常用案例作为 HTTP API 的使用实例说明介绍。

注:以下实例基于 XT32M2X 这一型号实现,实际各个型号激光雷达的 HTTP API 指令可能有所不同,具体内容请参考对应型号的 HTTP API 使用手册。

3.1 获取激光雷达参数(GET)

  1. 根据激光雷达当前的 IP 地址设置示例代码中的ipaddr参数;
  2. 将示例代码中的local_url按以下方式修改后(本次以获取激光雷达基本信息为例),在本地主机上运行此 Python 脚本:

## HTTP API command

local_url = 'http://' + ipaddr + '/pandar.cgi?action=get&object=device_info'
  1. 从运行结果中可以获得激光雷达 SN、MAC 地址、软固件版本号等设备基本信息。具体结果参考如下:
Success!
b'{"Head":{"ErrorCode":"0","Message": "Success"},"Body":{"SN": "XT3ACD5F983ACC56","Mac": "EC:9F:00:01:58:3D", "SW Ver: "2.1.7","HW Ver":"1.0.0","FW Ver":"2.0.11","Model":"XT32M2X","Angleoffset":"9129", "Calibsize":"0","FPGA_Ver":"","LidarCalibsize":"384","Up_Fpga_Ver":" 2.1.4","Udp_Seq":"1","1","ProdDate":"2023-06-08", "ProdName":"XT32M2X-B01","LidarDataformat":"1","Trigger_Method":"0","LaserNum":"32","Firing_Method":"",""AccAnglePhase":"0","AccAn
glePeak": "0","AccAngleEnable":"0","0","MotorType":"0", "LargeCodeRange":"1","Codewheel_cal":"1","MotorStartAngle_en":"0", "MotorstartAngle_val":"0","UpFpgaconfigsha":"f80c28c5", "UpFpgacorrectsha":"ef480d97","PN":""XT32M2X"}}'
Status:200 OK

3.2 配置激光雷达参数(SET)

  1. 根据激光雷达当前的 IP 地址设置示例代码中的‘ipaddr‘参数;

  2. 将示例代码中的‘local_url’按以下方式修改后(本次以配置激光雷达双回波模式为例),在本地主机上运行此 Python 脚本:


## HTTP API command

local_url = 'http://' + ipaddr + '/pandar.cgi?action=set&object=lidar_data&key=lidar_mode&value=2'
  1. 运行脚本后终端打印如下所示信息,即代表设置成功:
Success!
b'{"Head":{"ErrorCode":"0","Message": "Success"}}'
Status:200 OK
  1. 网页浏览器输入激光雷达 IP 地址,确认当前激光雷达控制页面显示的回波模式配置已同步生效:
http_dualreturn