# 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)