VDM-X2W

X2W/X2W4M 双目旋转式视觉位移计 API 参考手册

型号: X2W / X2W4M | 版本: 1.0 | 更新: 2026-01-08

X2W 系列是双目旋转式视觉位移计,支持双轴云台和自动巡航,适用于多点巡航监测场景。

1. API 列表

基础 API

方法说明
getAttr获取属性
setAttr设置属性
reboot重启设备
syncTime同步时间

标靶管理 API

方法说明
initRefTargets初始化标靶
addTargets添加标靶
getTargets获取标靶列表
setTargets更新标靶配置
deleteTargets删除标靶

测量控制 API

方法说明
startMeasurement启动测量
stopMeasurement停止测量
setLightLevel设置补光灯发光挡位
getLightLevel获取补光灯发光挡位
snapshot获取快照

存储 API

方法说明
getStorageInfo获取存储信息
queryTelemetry查询历史数据
uploadS3上传数据到 S3

电机控制 API

方法说明
setMotorAngle设置电机角度
getMotorAngle获取电机角度
setMotorZero设置电机零点
enableMotor启用电机
disableMotor禁用电机

巡航控制 API

方法说明
getCruisePaths获取巡航路径
setCruisePoint设置巡航点
removeCruisePoint移除巡航点
startPatrol启动巡航
stopPatrol停止巡航
getPatrolStatus获取巡航状态

2. API 详情

initRefTargets

双目设备需要指定 sensorId 参数。

参数:

字段类型必填说明
targetsArray标靶配置
targets[].targetIdString标靶 ID
targets[].sensorIdInteger视觉传感器 ID (0 或 1)
targets[].roiObjectROI 区域
targets[].distanceFloat测量距离 (m)

请求(X2W):

{"reqId": 1, "method": "initRefTargets", "params": {
  "targets": [
    {"targetId": "1", "sensorId": 0, "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0},
    {"targetId": "2", "sensorId": 1, "roi": {"x": 1200, "y": 600, "width": 400, "height": 400}, "distance": 5.0}
  ]
}}

请求(X2W4M):

{"reqId": 1, "method": "initRefTargets", "params": {
  "targets": [
    {"targetId": "1", "sensorId": 0, "roi": {"x": 500, "y": 300, "width": 200, "height": 200}, "distance": 5.0},
    {"targetId": "2", "sensorId": 1, "roi": {"x": 600, "y": 350, "width": 200, "height": 200}, "distance": 5.0}
  ]
}}

注意: X2W4M 分辨率为 2560×1440,ROI 坐标需相应调整。


addTargets

在已有标靶基础上添加新标靶。

请求:

{"reqId": 1, "method": "addTargets", "params": {
  "targets": [
    {"targetId": "3", "sensorId": 0, "roi": {"x": 800, "y": 400, "width": 400, "height": 400}, "distance": 6.0}
  ]
}}

响应:

{"reqId": 1, "code": 0, "data": {"addedIds": ["3"]}}

getTargets

获取当前标靶列表。

请求:

{"reqId": 1, "method": "getTargets", "params": {}}

响应:

{"reqId": 1, "code": 0, "data": {
  "targets": [
    {"targetId": "1", "sensorId": 0, "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0, "status": "tracking"},
    {"targetId": "2", "sensorId": 1, "roi": {"x": 1200, "y": 600, "width": 400, "height": 400}, "distance": 5.0, "status": "tracking"}
  ]
}}

setTargets

更新已有标靶的配置。

请求:

{"reqId": 1, "method": "setTargets", "params": {
  "targets": [{"targetId": "1", "distance": 5.5}]
}}

deleteTargets

删除指定标靶。

请求:

{"reqId": 1, "method": "deleteTargets", "params": {
  "targetIds": ["2"]
}}

setMotorAngle

设置电机角度。

参数:

字段类型范围说明
panFloat-180 ~ 180水平角度 (°)
tiltFloat-90 ~ 90垂直角度 (°)
speedInteger1-100转动速度 (%)

请求:

{"reqId": 1, "method": "setMotorAngle", "params": {"pan": 45.0, "tilt": -10.0, "speed": 50}}

getMotorAngle

获取当前电机角度。

请求:

{"reqId": 1, "method": "getMotorAngle", "params": {}}

响应:

{"reqId": 1, "code": 0, "data": {"pan": 45.0, "tilt": -10.0}}

setCruisePoint

设置巡航点。

参数:

字段类型必填说明
pathIdInteger路径 ID
pointIdInteger巡航点 ID
panFloat水平角度
tiltFloat垂直角度
targetsArray标靶 ID 列表
dwellTimeInteger停留时间 (秒)

请求:

{"reqId": 1, "method": "setCruisePoint", "params": {
  "pathId": 1,
  "pointId": 1,
  "pan": 45.0,
  "tilt": -10.0,
  "targets": ["1", "2"],
  "dwellTime": 60
}}

setAttr

支持配置 3D 融合上报指标。

请求:

{"reqId": 1, "method": "setAttr", "params": {
  "reportMetrics": ["dx", "dy", "dz", "tilt"]
}}
指标说明
dxX方向累积位移变化
dyY方向累积位移变化
dzZ方向累积位移变化
tilt倾斜角度变化

3. 遥测数据

测量运行时,设备按采样频率上报位移数据。

主题: vdm/{deviceId}/telemetry

{"disp":{"t":1734567890,"d":{"1":{"dx":[0.01,0.02],"dy":[0.00,0.01],"dz":[0.01,0.02],"tilt": 0.01}}}}
字段单位说明
tUnix 时间戳
dxmmX方向累积位移变化
dymmY方向累积位移变化
dzmmZ方向累积位移变化
tilt″(角秒)倾斜角度变化

4. 告警数据

位移超限时通过 3A 主题上报。

主题: vdm/{deviceId}/3A

{
  "3A": "DISPLACEMENT_EXCEEDED",
  "level": 2,
  "targetId": "1",
  "value": 12.5,
  "threshold": 10.0,
  "ts": 1734567890
}

告警级别:

级别名称说明
0-恢复
1alert预警
2alarm告警
3action紧急

5. 事件数据

设备状态变化时通过 event 主题上报。

主题: vdm/{deviceId}/event

{
  "event": "cruisePointReached",
  "ts": 1734567890,
  "data": {"pathId": 1, "pointId": 1}
}

事件类型:

事件说明data 内容
measurementStarted测量开始{}
measurementStopped测量停止{}
TARGET_LOST标靶丢失{"targetId": "1"}
targetRecovered标靶恢复{"targetId": "1"}
motorMoved电机移动完成{"pan": 45.0, "tilt": -10.0}
cruisePointReached到达巡航点{"pathId": 1, "pointId": 1}

6. 错误码

说明
0成功
1参数无效
2缺少必填参数
100标靶不存在
102标靶初始化失败
104标靶丢失
200测量未启动
201测量已在运行
300电机不可用
302电机运动中
303电机到达限位
400巡航功能不可用
403巡航已在运行

7. 典型工作流程

多点巡航监测

1. 设置巡航点 1 (pan=0, tilt=0)
   └─ 初始化标靶 1, 2

2. 设置巡航点 2 (pan=45, tilt=-10)
   └─ 初始化标靶 3

3. 启动巡航
   └─ 设备自动在各点之间循环
   └─ 每个点停留 dwellTime 秒进行测量

4. 接收遥测数据
   └─ 位移数据包含当前巡航点的标靶

8. 快速开始

1. 移动到位置

{"reqId": 1, "method": "setMotorAngle", "params": {"pan": 0, "tilt": 0}}

2. 初始化标靶

{"reqId": 2, "method": "initRefTargets", "params": {
  "targets": [
    {"targetId": "1", "sensorId": 0, "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0},
    {"targetId": "2", "sensorId": 1, "roi": {"x": 1000, "y": 500, "width": 400, "height": 400}, "distance": 5.0}
  ]
}}

3. 设置巡航点

{"reqId": 3, "method": "setCruisePoint", "params": {
  "pathId": 1, "pointId": 1, "pan": 0, "tilt": 0, "targets": ["1", "2"], "dwellTime": 60
}}

4. 启动测量

{"reqId": 4, "method": "startMeasurement", "params": {}}