接口清单
本篇按功能分组列出全部接口。所有 Topic 前缀均为 lixel/application/,表格中省略前缀。方向标记 REQ=请求、RSP=响应、RPT=上报(见 消息模型与编解码)。
状态监控
| 接口 | 方向 | topic(省略前缀) | 消息类型 | 说明 |
|---|---|---|---|---|
| 设备心跳 | RPT | report/heartbeat | (JSON) | 设备广播心跳,用于发现 |
| 设备状态 | RPT | report/device_status | DeviceStatusReport | 1Hz 上报建图 / 系统 / RTK 状态 |
| 实时位姿 | RPT | report/lio_pose | LioPoseReport | 扫描中的实时 LIO 位姿 |
| 实时点云 | RPT | report/lio_pcl | MqttCompressMsg | 压缩封装的实时点云 |
| 系统错误 | RPT | report/system_error | SystemErrorReport | 系统错误码上报 |
OpenAPI 公开的接口中,只有心跳采用 JSON 文本,用于发现设备、读取协议版本:
{"DeviceSN":"A256A60000","Timestamp":1697703246.5,"ProtocolVersion":"3.0.0"}
DeviceSN:设备序列号。Timestamp:设备当前时间。ProtocolVersion:协议版本号,用于兼容性设计。
设备状态上报每秒一次,承载建图状态、系统资源、RTK 状态:
message DeviceStatusReport {
message DeviceStatus {
sint32 app_sessions = 1; // APP 会话数
}
Header header = 1;
uint32 modeling_state = 2; // 统一状态码
string device_sn = 3; // 设备序列号
string project_id = 4; // 工程名
string time_zone = 5; // 当前时区
bool init_ready = 6; // 0:未初始化,1:已初始化
SystemStatus system_status = 7;
RtkStatus rtk_status = 8;
DeviceStatus device_status = 9;
}
实时点云、实时位姿的解码细节见 实时数据。
设备管理
| 接口 | 方向 | topic(省略前缀) | 消息类型 |
|---|---|---|---|
| 查询设备信息 | REQ / RSP | request·response/device_info | DeviceInfoRequest / DeviceInfoResponse |
| 设备参数配置 | REQ / RSP | request·response/device_config | DeviceConfigRequest / DeviceConfigResponse(公开 proto 的注释提到 report/device_config,但没有定义 DeviceConfigReport 消息,设备端也没有这个 topic,不要订阅) |
| 设备控制 | REQ / RSP | request·response/device_control | DeviceControlRequest / DeviceControlResponse |
设备控制支持的 ActionCmd:AC_USB_MASS、AC_USB_ETHER、AC_DISK_FORMAT、AC_POWER_OFF、AC_SYSTEM_REBOOT,以及文件共享的开关 AC_START_FS / AC_STOP_FS(见 文件访问,开启后使用固定的默认口令)。AC_DISK_FORMAT、AC_POWER_OFF、AC_SYSTEM_REBOOT 会清除数据或使设备关机、重启,调用前请确认。
message DeviceControlRequest {
Header header = 1;
Application.ActionCmd action = 2;
}
message DeviceControlResponse {
Header header = 1;
Application.ActionCmd action = 2;
Error error = 15;
}
设备参数配置支持设置时间与主存储类型:
message DeviceConfigRequest {
message TimeConfig {
sint64 time_secs = 1; // 时间戳(秒精度)
string time_zone = 2; // 时区(如 "Asia/Shanghai")
}
message MainStorageConfig {
sint32 storage_type = 1; // 0:内部存储,1:TF 卡,2:USB 盘
}
Header header = 1;
optional TimeConfig time_config = 4;
optional MainStorageConfig main_storage_config = 8;
}
扫描建图
| 接口 | 方向 | topic(省略前缀) | 消息类型 |
|---|---|---|---|
| 扫描控制 | REQ / RSP / RPT | request·response·report/modeling | ModelingRequest / ModelingResponse / ModelingReport |
| 当前工程文件地址查询 | REQ / RSP | request·response/modeling_status | ModelingStatusRequest / ModelingStatusResponse |
扫描 action 支持 AC_START / AC_STOP。AC_START 的响应只表示设备收到了请求,设备随后依次经过待机、开始扫描中、扫描中(实测 14 到 15 秒才进入扫描中),进入扫描中之前发出的 AC_STOP 实测会被推迟。请订阅 report/device_status 读取 modeling_state,不要用固定时间等待,见快速开始(Python / C++)。
modeling_status 返回当前工程的 project_id、project_name,以及位姿、控制点、测量点文件的地址,不返回扫描状态;扫描状态用 report/device_status 的 modeling_state。设备没有当前工程数据时直接返回、不发布响应;待机时实测没有响应(2 次超时),request() 会抛出 TimeoutError。
关键字段:
message ModelingRequest {
Header header = 1;
Application.ActionCmd action = 2; // 支持 AC_START / AC_STOP
string project_name = 3; // 自定义工程名
Modeling.RecordMode record_mode = 4; // RM_CALC / RM_RECORD / RM_RECORD_CALC
Modeling.ScanMode scan_mode = 5; // SM_PCL / SM_LCC / SM_PORTRAIT
Modeling.MountType mount_type = 6; // MT_HAND / MT_CAR / MT_UAV / MT_BACKPACK
string pre_project_id = 7; // 前序工程 ID(后续版本的续扫功能)
Modeling.AssistMode assist_mode = 8; // 扫描辅助模式 AM_GUIDED / AM_VISUAL
}
扫描状态上报(report/modeling)包含行进距离、速度、扫描时长,以及扫描结束后的数据处理进度:
message ModelingReport {
message ScanStatus {
float move_distance = 1; // 行进距离
float move_speed = 2; // 移动速度
sint64 scan_time = 3; // 扫描时长(秒)
}
Header header = 1;
sint32 pgo_progress = 2; // 扫描结束后数据处理进度(0~100)
ScanStatus scan_status = 3;
}
点位管理
| 接口 | 方向 | topic(省略前缀) | 消息类型 |
|---|---|---|---|
| 控制点操作 | REQ / RSP / RPT | request·response·report/control_point | ControlPointRequest / ControlPointResponse / ControlPointReport |
| 测量点操作 | REQ / RSP | request·response/measure_point | MeasurePointRequest / MeasurePointResponse |
控制点 action 支持 AC_ADD / AC_REMOVE。proto 中定义了 AC_UPDATE,设备目前不处理,会返回 EC_ProtoError(desc 为 invalid action)。测量点 action 仅支持 AC_ADD / AC_REMOVE。下面 proto 代码块里的注释沿用设备端原文,写的是支持 AC_UPDATE,以这里的说明为准。
待机时设备不回复控制点请求;其他状态下会回复(本次只实测了扫描中),没有当前工程数据时返回 EC_RequestError(desc 为 no project data)。AC_ADD 实测忽略请求里的 id,响应里的 id 由设备分配,删除时使用这个值;AC_ADD 成功时 error.desc 是该点的位姿(x y z qw qx qy qz 共 7 个浮点数,空格分隔),不是文字描述。
注:测量点功能仅部分设备支持,使用前请确认目标设备是否具备该能力。
message ControlPointRequest {
Header header = 1;
Application.ActionCmd action = 2; // 仅支持 AC_ADD / AC_REMOVE / AC_UPDATE
sint32 id = 3; // 控制点 ID
sint32 type = 4; // 类型(0:设备,1:对中杆,100:旧版)
string label = 5; // 控制点标签
sint32 height = 6; // 基点高度(单位:mm)
}
工程管理
| 接口 | 方向 | topic(省略前缀) | 消息类型 |
|---|---|---|---|
| 工程列表操作 | REQ / RSP | request·response/project_list | ProjectListRequest / ProjectListResponse |
action 支持:
AC_LIST_ALL_PROJECTS:列出全部工程。AC_MODIFY_PROJECT_LABELS:修改标签(需id+tag_name)。AC_DELETE_PROJECTS:删除工程(需id_list)。
修改标签和删除工程在设备开始扫描中、扫描中、停止扫描中时会被拒绝,需要在待机时进行。AC_LIST_ALL_PROJECTS 返回的 poses_url、xbin_url 等是 HTTP 地址,主机的取值见 文件访问。
message ProjectListRequest {
Header header = 1;
// 仅支持 AC_LIST_ALL_PROJECTS / AC_MODIFY_PROJECT_LABELS / AC_DELETE_PROJECTS
Application.ActionCmd action = 2;
optional string id = 3;
optional string tag_name = 4;
repeated string id_list = 5; // 批量删除多个工程
}
RTK / Ntrip
| 接口 | 方向 | topic(省略前缀) | 消息类型 |
|---|---|---|---|
| 获取 Ntrip 配置 | REQ / RSP | request·response/get_ntrip_profile | GetNtripProfileRequest / GetNtripProfileResponse |
| 设置 Ntrip 配置 | REQ / RSP | request·response/set_ntrip_profile | SetNtripProfileRequest / SetNtripProfileResponse |
| 获取 RTK 高级配置 | REQ / RSP | request·response/get_rtk_advance | GetRtkAdvanceRequest / GetRtkAdvanceResponse |
| 设置 RTK 高级配置 | REQ / RSP | request·response/set_rtk_advance | SetRtkAdvanceRequest / SetRtkAdvanceResponse |
- 设置 Ntrip
action支持AC_LOGIN/AC_LOGOUT。 - CORS 类型:
CUSTOM/QIANXUN/ZHONGYI。 - 坐标系:
UNKNOWN/ITRF2008/WGS84/CGCS2000。 - RTK 卫星系统:
GPS/BDS/GLO/GAL/QZSS/IRNSS。
注:RTK 硬件未连接(
RtkStatus.state为HwDisconnected)或没有 RTK 设备时,设置 Ntrip 的请求会被拒绝,设备返回EC_RequestError(desc为operation forbidden)。另有记录称,设备 Wi-Fi 处于 AP 模式时(Ntrip 数据通过 WebSocket 转发),响应会返回未知错误码,可忽略,设备的 Ntrip 连接不受影响;这一点在设备端源码中没有找到对应处理,未经验证。
数据处理
| 接口 | 方向 | topic(省略前缀) | 消息类型 |
|---|---|---|---|
| 数据解包 | REQ / RSP / RPT | request·response·report/data_unpack | DataUnpackRequest / DataUnpackResponse / DataUnpackReport |
data_source 目前支持 XBIN_DATA;不指定 data_topics 则解包全部数据;report/data_unpack 上报解包进度(0~100)。设备不在待机时,该请求返回 EC_RequestError。
message DataUnpackRequest {
enum DataSource {
XBIN_DATA = 0; // xbin 数据
}
Header header = 1;
string project_name = 2; // 工程名
DataSource data_source = 3; // 数据源
repeated string data_topics = 4; // 数据话题(不指定则默认解包全部)
optional string data_ouputdir = 5; // 输出目录名(相对工程目录)
}
注:数据解包功能仅特定型号、特定固件版本的设备支持。使用前请通过心跳的
ProtocolVersion或设备信息查询设备固件版本,并向 XGRIDS 确认目标型号 / 固件是否支持。不支持的设备上该请求不会生效。
错误码约定
请求-响应消息用 Error error = 15 字段承载结果。常见:EC_RequestSuccess、EC_RequestError、EC_ProtoError;Ntrip 相关:EC_NtripLoginSuccess、EC_NtripLogoutSuccess、EC_NtripLogoutFailed、EC_NtripDisConnected、EC_NtripNetworkError、EC_NtripAuthError。完整清单见 错误码。