XGRIDS文档
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • 灵视 P1

    • 产品概述
    • 设备基本操作
    • 使用 LCC Scan App
    • 维护及保养
    • 常见问题
  • 灵光 K 系列

    • 灵光 K1

      • 产品概述
      • 设备基本操作
      • 设备激活与连接
      • 设备采集
      • 获取绝对坐标点云数据
      • 地图融合
      • 典型场景路线规划建议
      • 注意事项
      • 常见问题
    • 灵光 K2

      • 产品概述
      • 设备基本操作
      • 设备激活与连接
      • 设备采集
      • 获取绝对坐标点云数据
      • 地图融合
      • 典型场景路线规划建议
      • 注意事项
      • 常见问题
  • 灵光 L 系列

    • 灵光 L2 Pro

      • 产品概述
      • 设备基本操作
      • 设备激活与连接
      • 设备采集
      • 获取绝对坐标点云数据
      • 实时测量功能
      • 附录
      • 常见问题
    • 灵光 L3

      • 产品概述
      • 设备基本功能
      • 设备激活与连接
      • 设备采集
      • 获取绝对坐标点云数据操作流程
      • 附录
  • 配件

    • 补光灯

      • 安装指导
      • 基本操作
      • 常见问题
  • Lixel Studio

    • 版权
    • 安装与激活
    • 界面说明
    • 文件
    • 工程处理
    • 工具
    • 平面绘制
    • 行业应用
    • 设置
    • 设备感知
    • 常见问题 / FAQ
  • Lixel CyberColor

    • LCC Studio

      • 入门
      • 版本与更新
      • 下载与安装
      • 界面概览与导航
      • 重建前工作
      • 模型重建
      • 单模型重建
      • 地图融合
      • 空地融合
      • 航拍重建
      • 我的模型
      • 其他功能
      • 设置与账号
      • 转换工具
      • 视频重建
      • 常见问题 / FAQ
    • LCC Scene Editor

      • 版本与更新
      • 账号与登录
      • 产品概览与主页
      • 编辑器界面介绍
      • 三种场景漫游快捷操作
      • 文件
      • 设置
      • 编辑操作
      • 窗口
      • 视图工具栏
      • 资产与属性
      • 左侧工具栏
      • 视点
      • 跳转点
      • 天空盒
      • 标注
      • 测量
      • 场景漫游
      • 场景报告
      • 智能户型图(3D Layout)
      • 小地图
      • 预览模式(Viewer)
      • 帮助
      • 常见问题 / FAQ
      • 出生点
    • LCC Model Editor

      • 版本与更新
      • 新手指引
      • 概览与界面
      • 文件操作
      • 选择器
      • 编辑操作
      • 测量
      • 调色
      • 资产管理
      • 设置与帮助
      • 常见问题 / FAQ
    • 采集指南

      • 概述
      • 采集设备总览
      • 通用采集原则
      • 室内场景采集
      • 室外场景采集
      • 大场景采集(地图融合)
      • 空地融合采集
      • 物体采集
      • 人物采集
      • 视频重建采集
      • 高清补拍
      • 控制点(灵视 P1)
      • 常见问题与排查
    • LCC Studio Linux

      • 产品概要说明
      • 基本架构说明书
      • 安装部署说明书
      • 容器启动参数说明书
      • CodeMeter离线授权部署说明书
      • API指令集说明书
      • 附录-开发者数据说明书
      • 附录-错误码列表
      • 单机多卡集群部署QuickStart
    • 使用技巧

      • 多个大型 3DGS 模型融合工作流
    • 历史版本
  • Plugin & SDK

    • Unreal

      • 介绍
      • 快速入门 - Windows
      • 快速入门 - Linux
      • 快速入门 - Quest3
      • 版本与授权
      • 渲染
      • Tiled 光栅化(实验性)
      • 画面调节
      • 法线与光照
      • 场景编辑
      • 性能参数说明
      • 性能优化指南
      • 第三方与引擎插件集成
      • 代理网格
      • 加载动画
      • 碰撞
      • 寻路系统支持
      • 单层水支持
      • 本地化
      • 常见问题
      • 故障排查
      • 日志与诊断
      • 联系我们
      • 最佳实践

        • 用 LixelStudio 网格为 3DGS 重打光
      • API 参考

        • ALCCActorBase
        • ULCCComponentBase
        • ULCCComponent
        • ULCC2Component
        • SOG / SPZ / PLY Actors
        • ALCC2ProxyMesh
        • ALCCClippingVolume
        • ALCCSectionPlane
        • ALCCLoadVolume
        • ULCCUtilLibrary
        • Enums
        • Structs
      • 更新日志

        • v3.4.0
        • v3.3.1
        • v3.0.0
        • v2.2.1
        • v1.0.0
        • v0.9.0
        • v0.8.0
        • v0.7.1
        • v0.6.1
        • v0.5.2
        • v0.4.1
        • v0.4.0
        • v0.3.0
        • v0.0.5
        • v0.0.4
        • v0.0.3
        • v0.0.2
        • v0.0.1
    • X-Brain

      • 产品概述
      • 硬件接口
      • 快速开始
      • 核心概念
      • 集成指南
      • API 参考
      • 数据类型
      • ROS2 桥接
      • 示例程序
      • 部署与网络
      • 排障与 FAQ
      • 版本与发布
    • Web

      • 介绍
      • 渲染性能优化指南
      • 显卡配置
      • 常见开发问题
      • API参考

        • LCCRender::clearIndexDB
        • LCCRender::dispose
        • LCCRender::load
        • LCCRender::setCamera
        • LCCRender::unload
        • LCCRender::update
        • LCCObject::checkRenderNextFrame
        • LCCObject::clearRenderNextFrame
        • LCCObject::ecef2Prj
        • LCCObject::getBounds
        • LCCObject::getEnvInstancedMesh
        • LCCObject::getInstancedMesh
        • LCCObject::getLodInfos
        • LCCObject::getOriginPosition
        • LCCObject::getProjectionCoordinateSystemInfos
        • LCCObject::hasCollision
        • LCCObject::hasEnvironment
        • LCCObject::hasShcoef
        • LCCObject::intersectsCapsule
        • LCCObject::intersectsRayExt
        • LCCObject::intersectsRayFromOriginExt
        • LCCObject::intersectsSphere
        • LCCObject::lowerToBottom
        • LCCObject::prj2Ecef
        • LCCObject::raiseToTop
        • LCCObject::raycast
        • LCCObject::raycastFromOrigin
        • LCCObject::setAlpha
        • LCCObject::setClipBox
        • LCCObject::setClipPlane
        • LCCObject::setEndLod
        • LCCObject::setLodAutoLevelUp
        • LCCObject::setMaxDistance
        • LCCObject::setMaxNodeSplats
        • LCCObject::setMaxSplats
        • LCCObject::setOriginPosition
        • LCCObject::setPointsColor
        • LCCObject::setRenderState
        • LCCObject::setRotation
        • LCCObject::setScale
        • LCCObject::setSemantic
        • LCCObject::setSemanticColor
        • LCCObject::setSmooth
        • LCCObject::setStartLod
        • LCCObject::setTranslation
        • LCCObject::setVisible
        • LCCObject::togglePointsDisplayMode
        • LCCObject::useEnvironment
        • LCCObject::useShcoef
      • 更新日志

        • v0.6.3
        • v0.6.2
        • v0.6.1
        • v0.6.0
        • v0.5.5
        • v0.5.4
        • v0.5.3
        • v0.5.2
        • v0.5.1
        • v0.5.0
        • v0.4.1
        • v0.4.0
        • v0.3.1
        • v0.3.0
        • v0.2.0
    • Lixel OpenAPI

      • 概述
      • 连接与鉴权
      • 消息模型与编解码
      • 接口清单
      • 实时数据
      • 项目文件访问
      • 错误码
      • Python

        • 快速开始
        • 客户端封装与工具
        • 常见问题
      • C++

        • 快速开始
        • 客户端与示例
        • 常见问题

客户端封装与工具

项目提供一套可复用的客户端封装,以及图形化控制面板和用例脚本,覆盖从"几行代码调通接口"到"图形界面手动调试"的不同需求。

客户端封装

封装不依赖图形库,是二次开发的推荐入口。模块组成:

模块说明
api_catalog.py接口清单单一数据源(ApiInterface / Endpoint / Direction)
proto_codec.pyProtoCodec:JSON 与 Protobuf 互转、默认模板
openapi_client.pyOpenApiClient / ClientOptions:MQTT 连接、请求-响应、订阅

ClientOptions

from example.core import ClientOptions

opts = ClientOptions(
    host="192.168.55.1",
    port=1883,
    use_tls=False,          # MQTTS 时置 True
    username="",
    password="",
    openapi_key="",         # 自动写入 header.openapi_key
    device_id="",
    client_id="",           # MQTT 客户端 ID,留空则自动生成
    connect_timeout=10.0,
    request_timeout=10.0,
)

请求-响应

from example.core import OpenApiClient, ClientOptions

with OpenApiClient(ClientOptions(host="192.168.55.1", openapi_key="<由 XGRIDS 提供>")) as client:
    rsp = client.request(
        req_topic="lixel/application/request/device_info",
        req_message="DeviceInfoRequest",
        payload={},                       # dict 或 JSON 字符串
        rsp_topic="lixel/application/response/device_info",
        rsp_message="DeviceInfoResponse",
    )
    print(rsp)                            # 解码后的 dict

request() 内部先订阅响应 Topic、再发布请求、阻塞等待第一条响应、解码返回;超时抛出 TimeoutError。

订阅上报

import time
from example.core import ClientOptions, OpenApiClient


def on_status(topic, data):   # data 已解码为 dict
    print(topic, data)


with OpenApiClient(ClientOptions(host="192.168.55.1", openapi_key="<由 XGRIDS 提供>")) as client:
    client.subscribe(
        "lixel/application/report/device_status",
        "DeviceStatusReport",
        on_status,
    )
    time.sleep(5)             # 保持连接,等待上报

对 JSON 负载(心跳),message 传空字符串,回调收到字符串。回调里抛出的异常会被记录到日志(Python 默认输出到终端),不会中断其他订阅。

API 速览

方法说明
connect() / disconnect()连接 / 断开(支持 with 上下文)
is_connected连接状态
publish(topic, message, payload)发布一条消息
subscribe(topic, message, callback)订阅并注册回调
subscribe_raw(topic_filter, callback)按通配符订阅,回调收到原始字节
unsubscribe(topic)取消订阅
request(req_topic, req_message, payload, rsp_topic, rsp_message, timeout=None)请求-响应同步调用
codec内置 ProtoCodec

图形化控制面板

控制面板按功能分组用选项卡展示全部接口,每个接口一张卡片,可编辑 JSON 负载发送请求,或订阅上报查看输出。

python python/example/main.py                 # 默认英文界面
python python/example/main.py --lang zh       # 启动即中文(也可在菜单实时切换)

界面结构:

  • 菜单栏:设置 → 语言(中英文实时切换,无需重启);关于(显示程序版本,构建时注入,从源码直接运行时为 V0.0.0)。
  • 顶部连接栏:地址 / 端口 / 协议(MQTT·MQTTS)/ 用户名 / 密码 / OpenAPI Key / 连接。默认地址 192.168.55.1;用户名与密码仅在选择 MQTTS 时显示,需要手动填写厂商提供的账号;切回 MQTT 时隐藏并清空。
  • 左侧「发布消息」:Topic 下拉(预填所有可发布 request topic)、消息类型下拉、加载模板、接口说明、JSON 编辑框、发布按钮。
  • 右侧「订阅消息」:Topic 下拉、订阅 / 订阅全部、通配符订阅(默认 lixel/#)、当前订阅列表、收到的消息列表(双击看完整解码内容)。

注:发布只发送请求、不阻塞界面;响应与上报统一在右侧「订阅消息」面板查看。发布请求前,先在订阅面板订阅对应的响应 Topic(或用通配符 lixel/#)。

用例脚本

python/example/usage/ 下为每个接口提供独立可运行脚本,是最直接的二次开发参考,全部基于客户端封装、不依赖图形界面:

cd python/example/usage
python device_info.py --host 192.168.55.1 --port 1883 --key <由 XGRIDS 提供>
python modeling.py --host 192.168.55.1 --key <由 XGRIDS 提供> --project demo --watch 5   # 设备需处于待机;完整流程需要一分钟以上
python heartbeat.py --host 192.168.55.1 --seconds 15                                      # 心跳不需要 Key

通用参数:--host / --port / --tls / --username / --password / --key / --timeout。设备只响应带有效 OpenAPI Key 的请求,所以除心跳等订阅外都要传 --key;不传 --host 时默认使用有线地址 192.168.55.1(1.0.0 的默认值是 192.168.12.1,请使用 1.0.1 及以上版本或显式传 --host)。

modeling.py 会先确认设备处于待机,启动扫描后等设备真正进入扫描中,再观察 --watch 秒,然后停止扫描并等待回到待机;设备不在待机时直接以退出码 2 退出。退出码含义:0 成功;1 启动或停止等待超时;2 设备不在待机;3 AC_START 的响应码不是成功(例如密钥错误);4 AC_START 或 AC_STOP 没有响应;130 被 Ctrl-C 中断。AC_START 发出后总会补发 AC_STOP,AC_START 没有响应(退出码 4)时除外,此时设备状态未知,需要自行检查。等待时间可用 --start-timeout(默认 90 秒)和 --stop-timeout(默认 180 秒)调整。完整的脚本清单见仓库里的 python/example/usage/README.md。

注:lio_pcl.py 演示点云解压,需额外安装 pip install lz4 zstandard;未安装时脚本会打印提示并跳过点云解码。

本地化

控制面板中所有用户可见文本都支持多语言。界面默认英文,可在「设置 → 语言」菜单实时切换,也可用 --lang <code> 在启动时指定。新增语言只需复制翻译文件并翻译、编译,再在源码常量 LANGUAGES(python/example/gui/control_panel.py)中登记,菜单即出现该语言。