Skip to content

建图服务接口

介绍

建图服务接口:提供 SLAM 地图的创建、加载和管理功能。使用导航接口前需先加载地图并完成定位。

功能Python
开始建图
停止建图并保存
加载地图
获取可用地图列表

建图模式

Python接口

start_mapping(timeout=120)

功能说明
启动 SLAM 建图模式,机器人开始扫描并构建周围环境的点云地图。启动后需遥控机器人在目标区域慢速移动以完成地图覆盖。

参数说明

参数名类型必填/默认值说明
timeoutint默认: 120等待建图模式启动的超时时间(秒)。

返回值

类型说明
StartMappingResponsestate.code == 0successTrue 时表示建图模式已启动。

调用示例

python
from daystar_api.lowlevel_skills import start_mapping, stop_mapping
import time

# 启动建图
result = start_mapping()
if result.success:
    print("建图已启动,请遥控机器人扫描区域...")
    time.sleep(300)  # 遥控机器人扫描 5 分钟
    stop_mapping("office_map")

stop_mapping(map_name, auto_reload=False, need_2d_map=True, block=True, timeout=30)

功能说明
停止 SLAM 建图,保存地图文件,并切换回地图定位模式。

参数说明

参数名类型必填/默认值说明
map_namestr必填地图保存名称。
auto_reloadbool默认: FalseTrue 时保存后自动加载该地图以立即使用。
need_2d_mapbool默认: True是否同时生成 2D 栅格地图。
blockbool默认: TrueTrue 时阻塞等待地图保存完成。
timeoutint默认: 30保存操作超时时间(秒)。

返回值

类型说明
StopMappingResponsestate.code == 0successTrue 时表示地图已保存。

调用示例

python
from daystar_api.lowlevel_skills import stop_mapping

# 停止建图并保存,保存后自动加载
result = stop_mapping("office_floor1", auto_reload=True)
if result.success:
    print("地图已保存并加载")

地图操作

Python接口

load_map(map_name, auto_reload=True, timeout=30)

功能说明
从地图资源目录(/root/data/daystar_api/maps)加载已有地图,加载完成后自动切换到定位模式。

参数说明

参数名类型必填/默认值说明
map_namestr必填地图名称(须已存在于资源目录中)。
auto_reloadbool默认: TrueTrue 时永久加载(下次启动也使用此地图);False 时仅本次会话有效。
timeoutint默认: 30等待加载完成的超时时间(秒)。

返回值

类型说明
LoadMapResponsestate.code == 0successTrue 时表示地图加载成功。

调用示例

python
from daystar_api.lowlevel_skills import load_map

# 永久加载地图
result = load_map("office_floor1")
if result.success:
    print("地图加载成功")

# 临时加载(本次会话)
result = load_map("warehouse_map", auto_reload=False)

# 大地图需要更长超时
result = load_map("large_outdoor_map", timeout=60)

get_available_maps(timeout=5)

功能说明
获取地图资源目录中所有可用的地图名称列表。

参数说明

参数名类型必填/默认值说明
timeoutint默认: 5查询超时时间(秒)。

返回值

类型说明
GetAvailableMapsResponsestate.code == 0 时表示查询成功;response.map_names 为地图名称列表;response.success 为布尔值。

调用示例

python
from daystar_api.lowlevel_skills import get_available_maps, load_map

result = get_available_maps()
if result.response.success:
    print("可用地图:")
    for name in result.response.map_names:
        print(f"  - {name}")

# 检查目标地图是否存在
if "office_map" in result.response.map_names:
    load_map("office_map")