自動路徑

有許多不同的方法來生成路徑。在本指南中,我們將使用 PathPlanner 來生成和跟隨路徑。

下載

備註

可以在 here 找到官方文檔。

首先,使用此鏈接安裝 PathPlannerLib :

https://3015rangerrobotics.github.io/pathplannerlib/PathplannerLib.json

接下來,從 MicrosoftMac App 下載 PathPlanner。

生成路徑

  1. 打開 PathPlanner,點擊葉面中的「切換項目(Switch Project)」,然後選擇有你的項目所有項目源的文建夾。

../../_images/PathPlanner1.PNG
  1. 去葉面中的「設置(settings)」,並根據您的機器人配置設定所有內容。確定也選擇「完整模式(Holonomic Mode)」。

../../_images/PathPlanner2.PNG
  1. 最後,繪製您希望機器人跟隨的路徑。

路徑跟隨

我們現在將提取在 PathPlanner 中創建的路徑並將其用於我們的機器人代碼。

RobotContainer.java 中,通過提取您在 PathPlanner 中創建的路徑來創 建 PathPlannerTrajectory 的實例。

1private PathPlannerTrajectory mTrajectory = PathPlanner.loadPath(
2    "PATH NAME",
3    SwerveConstants.kMaxVelocityMetersPerSecond,
4    SwerveConstants.kMaxAccelerationMetersPerSecond
5);

接著,創建 3 個不同的 PID 控制器,用於控制機器人的 X 和 Y 方向和面對方向。

 1// X 方向的 PID 控制器
 2private PIDController mXController = new PIDController(
 3    SwerveConstants.kPathingX_kP,
 4    SwerveConstants.kPathingX_kI,
 5    SwerveConstants.kPathingX_kD
 6);
 7
 8// Y 方向的 PID 控制器
 9private PIDController mYController = new PIDController(
10    SwerveConstants.kPathingY_kP,
11    SwerveConstants.kPathingY_kI,
12    SwerveConstants.kPathingY_kD
13);
14
15// 面對方向的 PID 控制器
16private PIDController mThetaController = new PIDController(
17    SwerveConstants.kPathingTheta_kP,
18    SwerveConstants.kPathingTheta_kI,
19    SwerveConstants.kPathingTheta_kD
20);

警告

PID 控制器中使用的所有常數都必須根據你的機器進行調整。 X 和 Y 控制器通常 具有相同的常數,但 面對方向(theta)控制器通常具有不同的常數。可以通過使 機器沿著一條長的直線路徑來調整 X 和 Y 控制器常數。調整 X 和 Y 控制器後, 通過使機器人沿著一條短並具有急轉彎的路徑來調整面對方向(theta)控制器。

最後,創建一個將用於跟隨路徑的 SwerveControllerCommand

 1private PPSwerveControllerCommand mCommand = new PPSwerveControllerCommand(
 2    mTrajectory,
 3    mSwerve::getPose,
 4    SwerveConstants.kSwerveKinematics,
 5    mXController,
 6    mYController,
 7    mThetaController,
 8    mSwerve::setModuleStates,
 9    mSwerve
10);

getAutonomousCommand() 中返回命令(return)。

1@Override
2public Command getAutonomousCommand() {
3    // `andThen...` 用於在路徑完成後停止機器人
4    return command.andThen(() -> mSwerve.drive(0, 0, 0, false));
5}

這允許機器人自主跟隨您在 PathPlanner 中創建的路徑。

備註

如果跟隨的路徑不准確或不穩定,請嘗試更改 PID 控制器常數。

備註

在我們的 Github 上查看我們在這些文檔中使用的代碼!