Skip to content

SLAM 地图

SLAM(Simultaneous Localization and Mapping,同时定位与建图)是移动机器人的核心技术。BicMap 提供专用 API 加载机器人建图结果,将 BMP 格式的 SLAM 图像精准叠加到地图坐标系中。

bicMap.loadSlamMap(map, options)

js
const result = await bicMap.loadSlamMap(map, options)

options 参数

参数类型必需默认值说明
startXnumberSLAM 图起始 X 坐标(米)
startYnumberSLAM 图起始 Y 坐标(米)
xGridCountnumberX 方向网格数量(图像宽度,像素)
yGridCountnumberY 方向网格数量(图像高度,像素)
resolutionnumber地图分辨率(米/像素)
imagePathstringSLAM 图片路径(BMP 格式)
canvasIdstringnull用于图片处理的 canvas 元素 ID
fitBoundsbooleantrue是否自动适配地图视野到 SLAM 范围
opacitynumber0.8图层透明度(0–1)
minZoomnumbernull最小显示缩放级别
maxZoomnumbernull最大显示缩放级别

返回值

js
{
  cameraBound: Object,  // 用于 map.jumpTo() 的相机参数
  success: boolean,     // 是否加载成功
  error: string         // 错误信息(失败时)
}

示例

vue
<template>
  <div style="position: relative; width: 100%; height: 100vh;">
    <div id="slamMap" style="width: 100%; height: 100%;" />
    <canvas id="canvasMap" style="display: none;" />
  </div>
</template>

<script setup>
import { onMounted } from 'vue'
import bicMap from '@x-humanoid-cloud/bic-map'

onMounted(async () => {
  await bicMap.init()

  const map = bicMap.createMap({
    container: 'slamMap',
    zoom: 1,
    antialias: true,
    backgroundColor: '#1a1a2e'
  })

  map.on('load', async () => {
    const result = await bicMap.loadSlamMap(map, {
      startX: -11.099993705749512,
      startY: -1.299997329711914,
      xGridCount: 836,
      yGridCount: 734,
      resolution: 0.05,
      imagePath: '/assets/maps/floor1.bmp',
      canvasId: 'canvasMap',
      fitBounds: true,
      opacity: 0.85
    })

    if (result.success) {
      // 跳转到 SLAM 地图范围
      map.jumpTo(result.cameraBound)
    }
  })
})
</script>

参数说明

坐标系

SLAM 地图使用机器人坐标系(笛卡尔坐标,单位米):

  • startX / startY — SLAM 图左下角在机器人坐标系中的位置
  • BicMap 内部自动完成笛卡尔坐标 → WGS84 经纬度坐标的转换

分辨率计算

SLAM 图的实际尺寸 = 网格数 × 分辨率:

实际宽度 = xGridCount × resolution = 836 × 0.05 = 41.8 米
实际高度 = yGridCount × resolution = 734 × 0.05 = 36.7 米

常见分辨率

分辨率精度适用场景
0.05 m/px5 cm室内精细地图(推荐)
0.1 m/px10 cm室内标准地图
0.2 m/px20 cm大范围室内/室外地图

在线示例

https://bicmap-ex.x-humanoid-cloud.com//indoor/slam 在新窗口中打开 ↗