---
# System prepended metadata

title: FRC PathPlanner

---

#  FRC PathPlanner

> PathPlanner 是一套圖形化軌跡規劃工具，搭配 WPILib 可讓你的機器人在 Autonomous 模式下精確行走預先規劃的路徑。

---

##  PathPlanner 是什麼？

PathPlanner 是 FRC 社群開發的軟體，可讓你：
- 透過 GUI 畫出機器人移動路徑
- 自動處理機器人加減速、曲線、旋轉角度
- 支援 *Event markers* (標記比賽影片或即時控制流程中的關鍵事件（如得分、犯規、物件拾取），方便賽後回顧與分析)、*Choreo* (進階路徑規劃工具) 整合、Alliance Flipping (自動將路徑或座標依據紅藍方進行鏡像轉換，確保相同程式碼在不同聯盟中也能正確運行，減少重複開發與錯誤風險) 等功能
- 與 WPILib 完美整合，支援 Swerve、Tank驅動

---

##  安裝與使用

###  安裝 PathPlanner
- 前往 GitHub Release (或microsoft store) 下載最新版：
   [https://github.com/mjansen4857/pathplanner/releases](https://github.com/mjansen4857/pathplanner/releases)
- 解壓縮後打開 `PathPlanner.exe`（Windows）或執行對應平台的檔案

---

###  基本操作教學

- **新增路徑**：點選左側 `New Path`
- **控制點（Waypoint）**：點選畫面新增，拖曳調整位置
- **機器人朝向**：控制點上的綠色箭頭為面朝方向，可拖動調整
- **事件標記（Event Marker）**：可用於自動執行指定命令（例如吸入、射出等）
- **儲存路徑**：路徑會儲存在 `/src/main/deploy/pathplanner` 資料夾下（JSON）

---

##  Java 專案整合教學（2025 WPILib）

###  `build.gradle` 加入 PathPlanner Library

#### 確認 `build.gradle` 有包含以下依賴 ( 通常會自動有 )：

```groovy
dependencies {
    implementation 'com.pathplanner.lib:pathplanner-lib:2024.2.2' // 確認為最新版
}
```
然後重新同步 Gradle。

#### 新增路徑與事件命令
- 路徑載入
```java
import com.pathplanner.lib.auto.AutoBuilder;
import com.pathplanner.lib.path.PathPlannerPath;
import com.pathplanner.lib.commands.PathPlannerAuto;
// 單一路徑
PathPlannerPath path = PathPlannerPath.fromPathFile("TestPath");
Command followPath = AutoBuilder.followPath(path);
```
- 多段 + 事件點（推薦使用 AutoBuilder）
```java
// 將 GUI 中指定的事件名稱與 Command 連結起來
AutoBuilder.configureEventCommands(Map.of(
    "Shoot", new ShootCommand(),
    "Intake", new IntakeCommand()
), /* requireAll */ true);

// 從路徑名稱建立完整 Autonomous Command
Command auto = new PathPlannerAuto("Center4NoteAuto");
auto.schedule();
```
## AutoBuilder 快速整合 Swerve（以 SwerveDrivePoseEstimator 為例）
```java
AutoBuilder.configureHolonomic(
    this::getPose,     // 回傳目前機器人 Pose2d
    this::resetPose,   // 設定 Pose2d
    this::getSpeeds,   // 回傳 ChassisSpeeds
    this::drive,       // 控制輸出 ChassisSpeeds
    new HolonomicPathFollowerConfig(
        new PIDConstants(5.0, 0.0, 0.0),    // Translation PID
        new PIDConstants(3.0, 0.0, 0.0),    // Rotation PID
        4.5, // Max module speed (m/s)
        0.5, // Drive base radius (m)
        ReplanningConfig.defaultConfig()
    ),
    () -> DriverStation.getAlliance().orElse(Alliance.Red) == Alliance.Red,
    this
);
```

---
## 檔案位置與命名規則
- 路徑通常在：`src/main/deploy/pathplanner/<your-path>.path`(為自動創建的)
- 自動模式名稱建議：以 XNoteAuto、Left3Piece 等命名清楚表示功能
- 路徑名稱建議：依照官方/自訂的場地/遊戲物件代號命名，例如CoralStation_ReefK (CS_RK)
- 不需手動加進 Java 專案，PathPlannerAuto 會自動讀取
    
---
## 實作範例（Swerve）
```java
@Override
public void autonomousInit() {
    Command auto = new PathPlannerAuto("Center4NoteAuto");
    if (auto != null) auto.schedule();
}
```
或搭配 Shuffleboard 選擇面板：

```java
SendableChooser<Command> autoChooser = AutoBuilder.buildAutoChooser();
SmartDashboard.putData("Auto Mode", autoChooser);
```
---
### 學習資源與教學

#### 官方:
Pathplanner Doc:
https://pathplanner.dev/home.html
#### YouTube：
PathPlanner AutoBuilder 教學:
https://www.youtube.com/watch?v=8dF20oKuVJo

---
### 常見錯誤排除
|問題	|解法|
|----|----|
|無法讀取路徑|	確認 JSON 檔放在 src/main/deploy/pathplanner|
|機器人位置不準	|確保使用 Pose Estimation + 正確 IMU/Encoder 數據|
自動指令沒執行	|檢查 Event Marker 名稱拼寫是否與程式對應|
移動異常抖動|	PID 設定過高、模組最大速度填錯或電池電壓不足|

---

###  <font color="#f50">   ! 都看完了，我要回家 !  </font>

##  [好](https://hackmd.io/ACI3uWclSO6rAX9mMNIxcQ)
