自動路徑
有許多不同的方法來生成路徑。在本指南中,我們將使用 PathPlanner 來生成和跟隨路徑。
下載
備註
可以在 here 找到官方文檔。
首先,使用此鏈接安裝 PathPlannerLib :
https://3015rangerrobotics.github.io/pathplannerlib/PathplannerLib.json
生成路徑
打開 PathPlanner,點擊葉面中的「切換項目(Switch Project)」,然後選擇有你的項目所有項目源的文建夾。
去葉面中的「設置(settings)」,並根據您的機器人配置設定所有內容。確定也選擇「完整模式(Holonomic Mode)」。
最後,繪製您希望機器人跟隨的路徑。
路徑跟隨
我們現在將提取在 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 上查看我們在這些文檔中使用的代碼!