高层技能接口
介绍
高层技能接口:封装了复杂的前置状态检查和底层调用流程,为常见机器人任务提供开箱即用的高层接口。调用方无需手动处理定位状态、姿态切换、模式切换等复杂流程。
| 功能 | Python |
|---|---|
| 智能导航到点位(含前置检查和路网规划) | ✔ |
智能导航
Python接口
go_to_location(location=None, pose=None, travel_params=None, timeout=600, complete_callback=None, failed_callback=None, progress_callback=None, graph_file=None, start_location=None)
功能说明
导航到指定点位或位姿的高层技能。自动完成以下前置检查与调节,调用方无需手动处理:
- 验证点位存在(仅
location模式):检查目标点位是否已注册,支持口语化后缀模糊匹配(如"茶水间那里"→"茶水间") - 检查定位状态:若定位异常,自动触发重定位(
set_localization(auto_relocation=True)) - 检查机器人姿态:若未站立,自动执行站立(
stand_up()) - 检查控制模式:若非导航模式,自动切换至
NAV_MODE
路网规划(仅 location 模式有效):若配置目录中存在路网图文件,且目标点位在路网中,则自动拆分为多段导航;否则降级为直接导航。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
location | str | 与 pose 二选一 | 目标点位名称(须已注册)。 |
pose | Pose | 与 location 二选一 | 目标位姿对象,适用于"返回原位"等场景。通常配合 get_current_pose() 使用。 |
travel_params | MsgTravelParams | 默认: None | 导航行驶参数,None 时使用默认参数。 |
timeout | int | 默认: 600 | 整个导航过程的超时时间(秒)。启用路网时,每段超时为 max(60, timeout // 段数)。 |
complete_callback | callable | 默认: None | 导航成功到达时的回调,接收 NavCompleteEvent。 |
failed_callback | callable | 默认: None | 导航失败时的回调,接收 NavFailedEvent。 |
progress_callback | callable | 默认: None | 导航进度回调,接收 NavProgressEvent。 |
graph_file | str | 默认: None | 路网图文件名或路径。None 时自动发现配置目录中的默认路网(default.yaml 或第一个 .yaml)。 |
start_location | str | 默认: None | 起始路网节点名称。None 时根据当前位置自动匹配最近节点。 |
返回值
| 类型 | 说明 |
|---|---|
IntelligentNavigationResponse | state.code == 0 表示成功到达目标。 |
异常
| 异常 | 说明 |
|---|---|
GoToLocationError | 前置检查失败时抛出,包含中文描述(如点位不存在、重定位失败、站立失败等)。 |
调用示例
python
from daystar_api.highlevel_skills import go_to_location
# 导航到命名点位(自动前置检查 + 自动路网规划)
result = go_to_location("茶水间")
if result.state.code == 0:
print("已到达茶水间")
# 指定路网文件
result = go_to_location("会议室", graph_file="office")
# 指定起始节点(已知当前位置时更准确)
result = go_to_location("会议室", start_location="大厅")
# 返回出发位置(先记录,执行任务后回来)
from daystar_api.lowlevel_skills import get_current_pose
pose_resp = get_current_pose()
origin_pose = pose_resp.response.location_pose
# ... 执行其他任务 ...
result = go_to_location(pose=origin_pose)
# 带错误处理
from daystar_api.highlevel_skills import GoToLocationError
try:
go_to_location("未注册的点位")
except GoToLocationError as e:
print(f"导航前置检查失败: {e}")