-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAutos.java
More file actions
62 lines (56 loc) · 2.59 KB
/
Autos.java
File metadata and controls
62 lines (56 loc) · 2.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package org.sciborgs1155.robot.commands;
import static edu.wpi.first.units.Units.KilogramSquareMeters;
import static edu.wpi.first.units.Units.Kilograms;
import static org.sciborgs1155.robot.Constants.Robot.*;
import static org.sciborgs1155.robot.Constants.alliance;
import static org.sciborgs1155.robot.drive.DriveConstants.MAX_SPEED;
import static org.sciborgs1155.robot.drive.DriveConstants.MODULE_OFFSET;
import static org.sciborgs1155.robot.drive.DriveConstants.WHEEL_COF;
import static org.sciborgs1155.robot.drive.DriveConstants.WHEEL_RADIUS;
import com.pathplanner.lib.auto.AutoBuilder;
import com.pathplanner.lib.config.ModuleConfig;
import com.pathplanner.lib.config.PIDConstants;
import com.pathplanner.lib.config.RobotConfig;
import com.pathplanner.lib.controllers.PPHolonomicDriveController;
import edu.wpi.first.math.geometry.Rotation2d;
import edu.wpi.first.math.system.plant.DCMotor;
import edu.wpi.first.wpilibj.DriverStation.Alliance;
import edu.wpi.first.wpilibj.smartdashboard.SendableChooser;
import edu.wpi.first.wpilibj2.command.Command;
import edu.wpi.first.wpilibj2.command.Commands;
import java.util.Optional;
import org.sciborgs1155.robot.drive.Drive;
import org.sciborgs1155.robot.drive.DriveConstants.ControlMode;
import org.sciborgs1155.robot.drive.DriveConstants.ModuleConstants.Driving;
import org.sciborgs1155.robot.drive.DriveConstants.Rotation;
import org.sciborgs1155.robot.drive.DriveConstants.Translation;
public class Autos {
private static Optional<Rotation2d> rotation = Optional.empty();
public static SendableChooser<Command> configureAutos(Drive drive) {
AutoBuilder.configure(
drive::pose,
drive::resetOdometry,
drive::robotRelativeChassisSpeeds,
s -> drive.setChassisSpeeds(s, ControlMode.CLOSED_LOOP_VELOCITY),
new PPHolonomicDriveController(
new PIDConstants(Translation.P, Translation.I, Translation.D),
new PIDConstants(Rotation.P, Rotation.I, Rotation.D)),
new RobotConfig(
MASS.in(Kilograms),
MOI.in(KilogramSquareMeters),
new ModuleConfig(
WHEEL_RADIUS,
MAX_SPEED,
WHEEL_COF,
DCMotor.getNEO(1).withReduction(Driving.GEARING),
Driving.CURRENT_LIMIT,
1),
MODULE_OFFSET),
() -> alliance() == Alliance.Red,
drive);
PPHolonomicDriveController.overrideRotationFeedback(() -> rotation.get().getRadians());
SendableChooser<Command> chooser = AutoBuilder.buildAutoChooser();
chooser.addOption("no auto", Commands.none());
return chooser;
}
}