docs: link handoff guide steps
This commit is contained in:
@@ -29,6 +29,8 @@ PlanningGridMap → PlanningRequest → HybridAStarPlanner.Plan
|
||||
|
||||
### 步骤 1:定义固定世界起点和终点
|
||||
|
||||
[对应完整示例:步骤 1](EmPlannerFullPipelineDemo.cs)
|
||||
|
||||
**本步输入**:固定场景常量(世界坐标 m、航向 rad)。
|
||||
**调用**:构造 `Pose2D` 起点和目标。
|
||||
**本步输出**:供 `PlanningRequest.Start`、`PlanningRequest.Goal` 使用的位姿。
|
||||
@@ -36,6 +38,8 @@ PlanningGridMap → PlanningRequest → HybridAStarPlanner.Plan
|
||||
|
||||
### 步骤 2:定义车辆、曲率和搜索预算
|
||||
|
||||
[对应完整示例:步骤 2](EmPlannerFullPipelineDemo.cs)
|
||||
|
||||
**本步输入**:车辆几何中心尺寸、`SafetyMarginMeters` 与可验证曲率限制。
|
||||
**调用**:构造 `VehicleParameters` 和 `HybridAStarConfiguration`。
|
||||
**本步输出**:用于粗规划、平滑复核和 EM 走廊的同一车辆约束。
|
||||
@@ -43,6 +47,8 @@ PlanningGridMap → PlanningRequest → HybridAStarPlanner.Plan
|
||||
|
||||
### 步骤 3:建立静态地图
|
||||
|
||||
[对应完整示例:步骤 3](EmPlannerFullPipelineDemo.cs)
|
||||
|
||||
**本步输入**:固定障碍物、地图边界与栅格分辨率。
|
||||
**调用**:建立并冻结 `PlanningGridMap`。
|
||||
**本步输出**:同一 `SnapshotId` 的可读地图。
|
||||
@@ -50,6 +56,8 @@ PlanningGridMap → PlanningRequest → HybridAStarPlanner.Plan
|
||||
|
||||
### 步骤 4:建立粗路径请求
|
||||
|
||||
[对应完整示例:步骤 4](EmPlannerFullPipelineDemo.cs)
|
||||
|
||||
**本步输入**:步骤 1–3 的位姿、地图、车辆和 Hybrid A* 配置。
|
||||
**调用**:构造 `PlanningRequest`。
|
||||
**本步输出**:一次性粗路径输入快照。
|
||||
@@ -57,6 +65,8 @@ PlanningGridMap → PlanningRequest → HybridAStarPlanner.Plan
|
||||
|
||||
### 步骤 5:搜索粗路径
|
||||
|
||||
[对应完整示例:步骤 5](EmPlannerFullPipelineDemo.cs)
|
||||
|
||||
**本步输入**:`PlanningRequest`。
|
||||
**调用**:`HybridAStarPlanner.Plan(request, cancellationToken)`。
|
||||
**本步输出**:仅 `PlanningStatus.Success` 时可消费的 `PlanningResult.Path` 和 `Segments`。
|
||||
@@ -64,6 +74,8 @@ PlanningGridMap → PlanningRequest → HybridAStarPlanner.Plan
|
||||
|
||||
### 步骤 6:请求并执行 Local G2 平滑
|
||||
|
||||
[对应完整示例:步骤 6](EmPlannerFullPipelineDemo.cs)
|
||||
|
||||
**本步输入**:成功粗路径的 `Path`、`Segments`、同一地图/车辆和 `PathSmoothingConfiguration`。
|
||||
**调用**:`new PathSmoothingRequest(...)`,再调用 `PathSmoothingService.Smooth`。
|
||||
**本步输出**:可发布状态(`Complete`、`PartialImprovement`、`NotNeeded` 或 `Unchanged`)的完整平滑路径。
|
||||
@@ -71,6 +83,8 @@ PlanningGridMap → PlanningRequest → HybridAStarPlanner.Plan
|
||||
|
||||
### 步骤 7:选择一个方向段
|
||||
|
||||
[对应完整示例:步骤 7](EmPlannerFullPipelineDemo.cs)
|
||||
|
||||
**本步输入**:平滑结果的单个 `SmoothedPathSegment`。
|
||||
**调用**:建立/取得 `DirectionSegmentView`。
|
||||
**本步输出**:局部 `S=0`、方向一致的只读参考段和精确边界。
|
||||
@@ -78,6 +92,8 @@ PlanningGridMap → PlanningRequest → HybridAStarPlanner.Plan
|
||||
|
||||
### 步骤 8:建立初始运动状态
|
||||
|
||||
[对应完整示例:步骤 8](EmPlannerFullPipelineDemo.cs)
|
||||
|
||||
**本步输入**:固定场景的世界位姿、车体纵向有符号速度、状态时间与序列号。
|
||||
**调用**:构造 `VehicleMotionState`。
|
||||
**本步输出**:与地图、平滑路径同版本的起始状态。
|
||||
@@ -85,6 +101,8 @@ PlanningGridMap → PlanningRequest → HybridAStarPlanner.Plan
|
||||
|
||||
### 步骤 9:冻结 EM 配置
|
||||
|
||||
[对应完整示例:步骤 9](EmPlannerFullPipelineDemo.cs)
|
||||
|
||||
**本步输入**:低速泊车配置树。
|
||||
**调用**:`EmPlannerConfiguration.CreateDefault()` 后在请求前完成本场景修改。
|
||||
**本步输出**:供服务复制和验证的一套配置。
|
||||
@@ -92,6 +110,8 @@ PlanningGridMap → PlanningRequest → HybridAStarPlanner.Plan
|
||||
|
||||
### 步骤 10:建立 EM 请求
|
||||
|
||||
[对应完整示例:步骤 10](EmPlannerFullPipelineDemo.cs)
|
||||
|
||||
**本步输入**:平滑成功结果、冻结地图、车辆、状态、配置和活动 `segmentIndex`。
|
||||
**调用**:构造 `EmPlanningRequest`,给出请求/生效 UTC、输出 ID、参考 ID、`EmMotionModel` 与 `FullDirectionSegment`。
|
||||
**本步输出**:一次 EM 输入快照。
|
||||
@@ -99,6 +119,8 @@ PlanningGridMap → PlanningRequest → HybridAStarPlanner.Plan
|
||||
|
||||
### 步骤 11:调用 EM 服务
|
||||
|
||||
[对应完整示例:步骤 11](EmPlannerFullPipelineDemo.cs)
|
||||
|
||||
**本步输入**:`EmPlanningRequest` 和调用方 `CancellationToken`。
|
||||
**调用**:`new EmPlanningService(new OsqpNativeSolver()).Plan(request, cancellationToken)`。
|
||||
**本步输出**:不可变 `EmPlanningResult`。
|
||||
@@ -106,6 +128,8 @@ PlanningGridMap → PlanningRequest → HybridAStarPlanner.Plan
|
||||
|
||||
### 步骤 12:判断是否可发布
|
||||
|
||||
[对应完整示例:步骤 12](EmPlannerFullPipelineDemo.cs)
|
||||
|
||||
**本步输入**:`Status`、`FailureReason` 与 `Trajectory`。
|
||||
**调用**:只接受 `Success` 或 `SuccessWithFallback`,再检查轨迹非空及控制点数。
|
||||
**本步输出**:可适配的完整单段 `EmTrajectory`。
|
||||
@@ -113,6 +137,8 @@ PlanningGridMap → PlanningRequest → HybridAStarPlanner.Plan
|
||||
|
||||
### 步骤 13:读取输出契约
|
||||
|
||||
[对应完整示例:步骤 13](EmPlannerFullPipelineDemo.cs)
|
||||
|
||||
**本步输入**:成功 `EmTrajectory`。
|
||||
**调用**:读取只读 `Metadata` 与 `Points`,用于身份、方向、边界和诊断。
|
||||
**本步输出**:原始时间轨迹仍与控制轨迹并存。
|
||||
@@ -120,6 +146,8 @@ PlanningGridMap → PlanningRequest → HybridAStarPlanner.Plan
|
||||
|
||||
### 步骤 14:适配为控制轨迹
|
||||
|
||||
[对应完整示例:步骤 14](EmPlannerFullPipelineDemo.cs)
|
||||
|
||||
**本步输入**:步骤 12 的同一方向完整 `EmTrajectory`。
|
||||
**调用**:`new EmControlTrajectoryAdapter().Create(emTrajectory)`。
|
||||
**本步输出**:以世界位置重新从零累计弧长的 `Trajectory2D`,保留航向、车辆曲率和有符号参考速度。
|
||||
@@ -127,6 +155,8 @@ PlanningGridMap → PlanningRequest → HybridAStarPlanner.Plan
|
||||
|
||||
### 步骤 15:交给闭环动作
|
||||
|
||||
[对应完整示例:步骤 15](EmPlannerFullPipelineDemo.cs)
|
||||
|
||||
**本步输入**:`Trajectory2D`、控制器维护者拥有的 `StateProvider` 与调参。
|
||||
**调用**:赋给 `TrajectoryTrackingMovement.Trajectory`(或由宿主包装为 `TrackMotionPlanSegment`)。
|
||||
**本步输出**:闭环几何控制器的轨迹输入。
|
||||
|
||||
Reference in New Issue
Block a user