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++

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

连接与鉴权

Lixel 设备内置 MQTT Broker 与 RTSP 服务。实时控制与实时点云数据通过 MQTT 传输,实时视频通过 RTSP 传输。设备支持与其他设备的有线和无线组网:有线用 USB 线缆连接,无线用 Wi-Fi 组网。

连接参数

不同产品型号只支持其中一种连接协议(不是同时支持两种):

协议端口用户名密码适用型号
MQTT1883——K1 / L2PRO
MQTTS8883由厂商提供由厂商提供已知 K2 / H1 / F1 / Porcam 使用 MQTTS(来源:示例工程注释),其他型号以设备实际开放的端口为准
  • MQTT 版本:V3.1.1
  • 有线组网使用固定 IP 192.168.55.1;无线组网时通过蓝牙获取 IP。
  • 快连(闪连)模式下设备 IP 固定为 192.168.56.1。

注:MQTTS 使用 TLS。设备端采用自签名证书,客户端示例默认关闭证书校验以适配。选择 MQTTS 时需要带上厂商提供的用户名与密码。关闭证书校验后,客户端无法确认连接的是不是真的设备,同一网络里的中间人可以冒充设备并读取请求(包括 openapi_key)。用于正式环境前,请改为导入设备证书并开启校验。

USB 连接

运行 Linux、Windows 或 Android 的设备,通过 RNDIS 与 Lixel 设备进行网络共享;iOS 设备通过 USB Tethering(USB 网络共享)与设备组网。

  Lixel 设备 (192.168.55.1)                       其他设备
      +---------+                                    +---------+
      |   USB   | <----- RNDIS / USB Tethering ----> |   USB   |
      +---------+                                    +---------+

Wi-Fi 连接

设备支持三种无线连接模式:

  • 普通模式:其他设备作为热点。
  • 快连模式:Lixel 设备作为热点。
  • 桥接模式:使用路由器组网。

所有模式都需要先通过蓝牙完成网络配置。设备接受蓝牙连接以配置 Wi-Fi,使其连接到指定网络。

设备的蓝牙名称由 10 个字符组成:多数型号是固定前缀 XGR- 加 SN 码后 6 位,例如 XGR-A12345;部分 ODM 型号的前缀不同(例如 PCAM),以实际扫描到的蓝牙名称为准。

      Lixel 设备                                    其他设备
      +---------+                                      +---------+
      |   BT    | <----- 蓝牙 (网络配置) ------------> |   BT    |
      |  WiFi   | <----- WiFi (数据) ---------------> |  WiFi   |
      +---------+                                      +---------+

配网流程

设备与客户端之间的 BLE 配网流程:客户端作为主机搜索并连接设备(从机);连接成功后设备先发送当前 Wi-Fi 状态;若未连接 Wi-Fi,客户端下发 Wi-Fi 信息(SSID 与密码),设备据此连接目标网络。

        Lixel 设备                                      客户端
  +----------------------+                     +----------------------+
  |   BLE 从机模式         |                     |   BLE 主机模式         |
  +----------+-----------+                     +----------+-----------+
             |                                            |
             v            <---- 建立连接 ---->             v
  +----------------------+                     +----------------------+
  |   发送 WiFi 状态       | ------------------> |   获取 WiFi 状态       |
  +----------+-----------+                     +----+------------+-----+
             |                                      |            |
             |                        WiFi 未连接    |            | WiFi 已连接
             |   <------ 下发 WiFi 信息 ------------ |            |
             v                                      v            v
  +----------------------+                     +----------------------+
  |   连接目标 WiFi        |                     |         结束          |
  +----------------------+                     +----------------------+

OpenAPI Key 鉴权

OpenAPI 的请求只有在设备认证通过后才会被执行。请求消息的消息头中需要填写 openapi_key,设备据此校验请求是否合法。openapi_key 缺失或不正确时,设备仍会返回响应:error.code 为 EC_ProtoError(0x32040001),error.desc 为 openapi auth error,响应中不含业务数据,request() 正常返回,不会超时。

申请 OpenAPI Key

OpenAPI Key 由 XGRIDS 统一分发,不能自行生成。获取方式:

  1. 通过 XGRIDS 的商务或技术支持渠道提出申请,说明设备型号与用途。
  2. XGRIDS 核对后下发一串 Key 字符串。
  3. 拿到后直接填入连接配置即可,无需额外激活步骤。

注:Key 与具体设备 / 授权绑定,请妥善保管,不要硬编码进公开仓库或分发给第三方。

在代码中使用

为 ClientOptions.openapi_key 赋值,request() / publish() 会自动把它填入消息头:

from example.core import ClientOptions, OpenApiClient

opts = ClientOptions(host="192.168.55.1", openapi_key="<由 XGRIDS 提供>")
with OpenApiClient(opts) as client:
    ...  # header.openapi_key 会被自动填充

消息头字段

所有请求、响应、上报消息的第一个字段通常是 Header:

字段类型说明
sequint32帧序号
stampsint64帧时间戳。设备上报的帧以微秒计,时基为 Unix 纪元
scalersint64缩放系数(点云等使用)
device_idstring设备 ID(设备生成)
session_idstring会话 ID(请求 / 上报端生成)
openapi_keystringAPI 密钥(proto 中为 optional,但设备只执行带有效密钥的请求)

对应的 proto 定义:

message Header {
    uint32 seq = 1;                  // 帧序号
    sint64 stamp = 2;                // 帧时间戳
    sint64 scaler = 3;               // 缩放系数(正:放大,负:缩小,0:禁用缩放)
    string device_id = 4;            // 设备 ID(设备生成)
    string session_id = 5;           // 会话 ID(请求 / 上报端生成)
    optional string openapi_key = 6; // API 密钥(向 XGRIDS 申请)
}

附:底层配网接口

注:本节仅在你需要自行实现蓝牙配网(不使用现成 App)时参考。大多数情况下用随附工具或 App 完成配网即可,无需关心这些底层定义。

配网通过 BLE GATT 服务读写特征值。Android 与 iOS 使用不同的 UUID:

/* Android GATT Characteristic Types */
#define UUID_GATT 0x1801
#define GATT_CHARAC_WIFI_INFO_SET 0x2AB0
#define GATT_CHARAC_WIFI_STATUS_GET 0x2AB1

/* iOS GATT Characteristic Types */
#define IOS_UUID_GATT 0x7F00
#define IOS_GATT_CHARAC_WIFI_INFO_SET 0x7F01
#define IOS_GATT_CHARAC_WIFI_STATUS_GET 0x7F02

写入 Wi-Fi 配置、读取 Wi-Fi 状态的数据结构:

#pragma pack(1)
/***********************************************************
 * WiFi status information (device -> Android)
 * ssid_len : 0 means WiFi is disconnected
 * ssid     : WiFi access point name
 * ip_len   : 0 means WiFi has no assigned IP
 * ip       : WiFi IP address
 * auth_mode: Not used yet
 * wifi_mode: 0 - STA mode  1 - AP mode (Quick Connect mode) 255 - ignore WiFi mode
 **********************************************************/
typedef struct wifi_info_s {
    uint8 ssid_len;
    uint8 ssid[32];
    uint8 passwd_len;
    uint8 passwd[64];
    uint8 auth_mode;
    uint8 wifi_mode;        // 0: Normal mode 1: Quick Connect mode 255: Only configure country code
    uint8 country_code[2];  // Country code (ISO2)
} wifi_info_t;

typedef struct wifi_status_s {
    uint8 ssid_len;
    uint8 ssid[32];
    uint8 ip_len;
    uint8 ip[16];
    uint8 connect_state;    // 0 - Not connected 1 - Connected successfully 2 - Connecting 3 - Device scanning
    uint8 wifi_mode;        // 0: Normal mode 1: Quick Connect mode
    uint8 country_code[2];  // Country code (ISO2)
} wifi_status_t;
#pragma pack()