定位服务接口
介绍
定位服务接口:提供机器人在已加载地图中的定位操作,包括触发重定位和查询当前定位状态。
| 功能 | Python |
|---|---|
| 设置定位/重定位 | ✔ |
| 获取定位状态 | ✔ |
定位操作
Python接口
set_localization(auto_relocation=True, location_name='', pose=None, timeout=200)
功能说明
触发机器人定位或重定位。支持自动重定位(扫描环境匹配地图)和手动指定位姿两种方式。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
auto_relocation | bool | 默认: True | True 时自动重定位;False 时使用手动位姿定位。 |
location_name | str | 默认: '' | 以已保存点位为初始位姿触发重定位。为空时从原点或当前估计位置开始。 |
pose | Pose | 默认: 零位姿 | auto_relocation=False 时使用此位姿作为定位初始点。 |
timeout | int | 默认: 200 | 等待定位完成的超时时间(秒)。 |
返回值
| 类型 | 说明 |
|---|---|
SetLocationResponse | state.code == 0 表示定位成功。 |
调用示例
python
from daystar_api.lowlevel_skills import set_localization
# 自动重定位(推荐)
result = set_localization()
if result.state.code == 0:
print("重定位成功")
# 指定已知点位作为初始位姿
result = set_localization(location_name="entrance", timeout=300)
# 手动指定位姿定位
from daystar_api.lowlevel_skills import Pose
pose = Pose()
pose.position.x = 1.0
pose.position.y = 2.0
pose.orientation.w = 1.0
result = set_localization(auto_relocation=False, pose=pose)get_localization_state()
功能说明
获取机器人当前定位状态,自动进行数据有效性验证(等待最多 3 秒、5 秒过期阈值)。数据不可用时返回 UNKNOWN_LOC。
参数说明
无参数。
返回值
| 类型 | 说明 |
|---|---|
GetLocalizationStateResponse | state.code == 0 表示查询成功;loc_state 为 LocalizationState 枚举:NORMAL(0) 定位正常、LACKDATA(1) 数据不足、LOST(2) 定位丢失、UNKNOWN_LOC(99) 未知。 |
调用示例
python
from daystar_api.lowlevel_skills import get_localization_state, LocalizationState
response = get_localization_state()
if response.state.code == 0:
if response.loc_state == LocalizationState.NORMAL:
print("定位正常,可以导航")
elif response.loc_state == LocalizationState.LOST:
print("定位丢失,需要重定位")