惯导扫地机地图服务

更新时间:2025-01-10 06:08:41下载pdf

扫地机地图流数据传输功能是针对扫地机地图数据传输的服务,作为扫地机和涂鸦 App 地图数据在线上的一个特殊快捷通道。

扫地机流服务的命令不是所有模组都支持,需要使用特定的模组并且开通相关服务,才可以正常使用该服务。

功能流程

惯导扫地机地图服务

使用说明:

  • 扫地机一次完整的地图数据通过协议中的地图 ID 区分。对于同一个 ID 的数据,App 端认为这是一张地图数据,会一直累加处理。
  • 扫地机在清扫过程中需要在全屋范围内移动,部分区域 Wi-Fi 信号弱可能导致数据上传失败,在模组内存充足的前提下,目前可以缓存 24 条数据。

指令列表

扫地机地图服务涉及以下协议指令:

命令字 命令说明
0x28 地图流数据传输
0x3C 地图流数据传输(X/Y 坐标 2 字节)
0x34 + 0x06 获取地图会话 ID

地图流数据传输

  • 偏移量表示一次地图数据里,MCU 已经发送的数据总长。

  • 这里数据内容目前模块最大可以缓存的数据部分可以达到 6144 字节,一包地图数据包数据部分不能超过 256 字节。

  • 地图 ID 作为一次完整地图数据的标志,数据传输方需要在一张地图数据结束后、新地图开始时,改变地图 ID,一般以递增的方式进行。当地图 ID 改变,App 界面显示当前地图数据,清除之前数据,重新开始显示。

  • 开始数据传输后,模组会停止心跳包发送,保证地图数据的优先传输。之后,在模组不断电的前提下不会主动恢复心跳包的发送。

  • 地图 ID 变化时,首包偏移量必须为 0。

  • 地图数据传输时,包偏移量必须递增。

  • 单包实体数据长度小于 256 字节,一个物理坐标的实体数据不可切割成两包传输。

  • 实体数据 中的内容需要按照规范填充,如不按规范填写模组会返回错误并丢弃数据。如有其它格式数据需求,请联系涂鸦讨论定制。

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x28
数据长度 2 0x0006+N
数据 2 data[0]–data[1] 地图 ID 号:地图 ID 号作为一张地图数据的归属标识。
4 data[2]–data[5] 偏移量,首包为 0
N data[6]–data[N] 实体数据,大端模式
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余
实体数据 字节数 说明
地图数据上报(实时增量) 1 X 坐标
1 Y 坐标
1
  • 0x00:当前点
  • 0x01:障碍点
  • 0x02:已清扫点
  • 0x03:充电桩
  • 0x04:预留

示例:地图 ID:123,包偏移量:0

55 aa 03 28 xx xx 00 7b 00 00 00 00 xx xx xx xx xx

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x28
数据长度 2 0x0001
数据 1 数据
  • 0x00:成功
  • 0x01:流服务功能未开启
  • 0x02:流服务器未连接成功
  • 0x03:数据推送超时
  • 0x04:传输的数据长度错误
  • 0x05:传输的数据内容非法
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

示例55 aa 00 28 00 01 00 28

地图流数据传输(X/Y 坐标 2 字节)

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x3C
数据长度 2 0x0006+N
数据 2 data[0]–data[1] 地图 ID 号:地图 ID 号作为一张地图数据的归属标识
4 data[2]–data[5] 偏移量,首包为 0
N data[6]–data[N] 实体数据,大端模式
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余
实体数据 字节数 说明
地图数据上报(实时增量) 2 X 坐标
2 Y坐标
1
  • 0x00:当前点
  • 0x01:障碍点
  • 0x02:已清扫点
  • 0x03:充电桩
  • 0x04:预留

示例:地图 ID:123,包偏移量:0

55 aa 03 3C xx xx 00 7b 00 00 00 00 xx xx xx xx xx

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x3C
数据长度 2 0x0001
数据 1 数据
  • 0x00:成功
  • 0x01:流服务功能未开启
  • 0x02:流服务器未连接成功
  • 0x03:数据推送超时
  • 0x04:传输的数据长度错误
  • 0x05:传输的数据内容非法
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

获取地图会话 ID

  • 此命令是地图流服务单张地图和多张地图传输协议的补充。

  • 地图会话 ID 由模组管理。MCU 在传一张新的地图数据时,可以先向模组申请地图会话 ID(子地图 ID 不用申请,根据子地图个数,依次为 0x010x020x03……即可),模组会在回复时将此次地图会话 ID 返回给 MCU,随后 MCU 传输这张地图的地图会话 ID 都需要使用此 ID。

  • 如果您想自行管理地图会话 ID,可以不使用此命令。

MCU 发送

字段 长度 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x34
数据长度 2 0x0001
数据 1 0x06(子命令)
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

示例55 aa 03 30 00 01 00 33

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x34
数据长度 2 0x0004
数据 1 0x06(子命令)
1 传输结果
  • 0x00:成功
  • 0x01:流服务未开启
  • 0x02:获取 ID 失败
2 地图会话 ID(如果传输结果失败,此数据为无效数据)
校验和 1 从帧头开始,按字节求和,得出的结果对 256 求余

示例55 aa 00 34 00 04 06 00 00 00 3d