Skip to content

路径规划接口

介绍

路径规划接口:提供基于路网图(Road Network Graph)的路径规划功能。用于在预定义的路网结构上查找两点之间的最优路径,适用于大型场景中的多节点导航规划。

功能Python
构建路网图
加载/保存路网图
路径规划

路网结构

Python接口

RoadNetworkGraphBuilder

功能说明
路网图构建器,使用链式方法添加路点和边,最终通过 build() 生成 RoadNetworkGraph

调用示例

python
from daystar_api.lowlevel_skills.path_planner import RoadNetworkGraphBuilder

builder = RoadNetworkGraphBuilder()

# 添加路点(引用已保存的点位名称)
builder.add_waypoint("A")
builder.add_waypoint("B")
builder.add_waypoint("C")

# 添加边(双向连接)
builder.add_edge("A", "B", is_bidirectional=True)
builder.add_edge("B", "C", is_bidirectional=True)

# 构建并保存路网图
graph = builder.build()
graph.to_yaml_file("warehouse_graph.yaml")

主要方法:

方法说明
add_waypoint(id, x=None, y=None, z=None)添加路点。id 对应已保存点位名称,或指定坐标创建临时路点。
add_edge(from_wp, to_wp, is_bidirectional=True, weight=None)添加路点之间的连接边,weight 为可选代价权重。
build()生成 RoadNetworkGraph 对象。

RoadNetworkGraph

功能说明
路网图数据结构,包含路点和边的完整定义。支持从 YAML 文件加载和保存。

调用示例

python
from daystar_api.lowlevel_skills.path_planner import RoadNetworkGraph

# 从 YAML 文件加载路网图
graph = RoadNetworkGraph.from_yaml_file("warehouse_graph.yaml")

# 保存到文件
graph.to_yaml_file("updated_graph.yaml")

主要方法:

方法说明
from_yaml_file(path)从 YAML 文件加载路网图(类方法)。
to_yaml_file(path)将路网图保存到 YAML 文件。
add_waypoint(id, ...)添加路点。
add_edge(from_wp, to_wp, ...)添加边。
get_waypoint(id)获取指定路点信息。
validate()验证路网图数据是否合法。

路径规划器

Python接口

PathPlanner

功能说明
基于已加载路网图执行最短路径规划。加载路网图后,调用 path_plan 查找起点到终点之间的最优路径(经过可选中间节点)。

调用示例

python
from daystar_api.lowlevel_skills.path_planner import PathPlanner, RoadNetworkGraph

# 创建规划器并加载路网图
planner = PathPlanner()
graph = RoadNetworkGraph.from_yaml_file("warehouse_graph.yaml")
success, msg, waypoints = planner.load_graph(graph)

if success:
    # 规划从 A 到 C 的路径,经过中间节点 B
    success, path, msg = planner.path_plan(
        start_point="A",
        goal_point="C",
        keypoints=["B"]  # 可选中间节点
    )

    if success:
        print(f"规划路径: {' -> '.join(path)}")
        # 按顺序导航各路点
        from daystar_api.lowlevel_skills import navigation_to_location
        for point in path:
            navigation_to_location(point)

主要方法:

方法返回值说明
load_graph(graph)(success: bool, msg: str, waypoints: list)加载路网图到规划器。
path_plan(start_point, goal_point, keypoints=[])(success: bool, path: list[str], msg: str)规划路径,返回经过的路点 ID 列表(含起点和终点)。

路网 YAML 格式说明

路网图使用 YAML 格式定义:

yaml
# 方式1:引用已保存的点位(推荐)
waypoints:
  - id: A          # 自动从 /root/data/daystar_api/points/A.yaml 加载位置
  - id: B
  - id: C

edges:
  - id:
      from_waypoint: A
      to_waypoint: B
    is_bidirectional: true
  - id:
      from_waypoint: B
      to_waypoint: C
    is_bidirectional: true

# 方式2:直接指定坐标(适用于临时路点)
waypoints:
  - id: wp_001
    position:
      x: -1.28
      y: 3.52
      z: 0.0