使用 HTTP API
1 概述
禾赛 HTTP API 提供了一套标准的 HTTP 接口,允许开发者通过简单的 HTTP 指令请求与激光雷达进行交互。通过这套 API,可以轻松实激光雷达参数获取和功能配置等操作。
注:HTTP API 只适用于支持 HTTP 服务器的禾赛激光雷达,包括 Pandar 系列/QT 系列/XT 系列等型号。
2 使用方法
HTTP API 指令的使用方法如下:
- 将激光雷达连接至电脑主机,确保其能够与主机正常建立通信(具体方法详见如何配置以太网);
- 从主机本地向激光雷达侧发送 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 实现目的对这两个参数进行修改更新。
- 获取激光雷达返回值信息,确认 API 指令发送操作是否成功。
3 实例介绍
本文选取了一些常用案例作为 HTTP API 的使用实例说明介绍。
注:以下实例基于 XT32M2X 这一型号实现,实际各个型号激光雷达的 HTTP API 指令可能有所不同,具体内容请参考对应型号的 HTTP API 使用手册。
3.1 获取激光雷达参数(GET)
- 根据激光雷达当前的 IP 地址设置示例代码中的ipaddr参数;
- 将示例代码中的local_url按以下方式修改后(本次以获取激光雷达基本信息为例),在本地主机上运行此 Python 脚本:
## HTTP API command
local_url = 'http://' + ipaddr + '/pandar.cgi?action=get&object=device_info'
- 从运行结果中可以获得激光雷达 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)
-
根据激光雷达当前的 IP 地址设置示例代码中的‘ipaddr‘参数;
-
将示例代码中的‘local_url’按以下方式修改后(本次以配置激光雷达双回波模式为例),在本地主机上运行此 Python 脚本:
## HTTP API command
local_url = 'http://' + ipaddr + '/pandar.cgi?action=set&object=lidar_data&key=lidar_mode&value=2'
- 运行脚本后终端打印如下所示信息,即代表设置成功:
Success!
b'{"Head":{"ErrorCode":"0","Message": "Success"}}'
Status:200 OK
- 网页浏览器输入激光雷达 IP 地址,确认当前激光雷达控制页面显示的回波模式配置已同步生效:
