mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-24 01:31:46 +00:00
[build] Enable spotbugs (#3601)
Benign spotbugs warnings were suppressed, and all others were fixed. Bug descriptions are documented here: https://spotbugs.readthedocs.io/en/stable/bugDescriptions.html Co-authored-by: Austin Shalit <austinshalit@gmail.com>
This commit is contained in:
@@ -38,23 +38,14 @@ class ControlAffinePlantInversionFeedforwardTest {
|
||||
|
||||
@SuppressWarnings("ParameterName")
|
||||
protected Matrix<N2, N1> getDynamics(Matrix<N2, N1> x, Matrix<N1, N1> u) {
|
||||
var result = new Matrix<>(Nat.N2(), Nat.N1());
|
||||
|
||||
result =
|
||||
Matrix.mat(Nat.N2(), Nat.N2())
|
||||
.fill(1.000, 0, 0, 1.000)
|
||||
.times(x)
|
||||
.plus(VecBuilder.fill(0, 1).times(u));
|
||||
|
||||
return result;
|
||||
return Matrix.mat(Nat.N2(), Nat.N2())
|
||||
.fill(1.000, 0, 0, 1.000)
|
||||
.times(x)
|
||||
.plus(VecBuilder.fill(0, 1).times(u));
|
||||
}
|
||||
|
||||
@SuppressWarnings("ParameterName")
|
||||
protected Matrix<N2, N1> getStateDynamics(Matrix<N2, N1> x) {
|
||||
var result = new Matrix<>(Nat.N2(), Nat.N1());
|
||||
|
||||
result = Matrix.mat(Nat.N2(), Nat.N2()).fill(1.000, 0, 0, 1.000).times(x);
|
||||
|
||||
return result;
|
||||
return Matrix.mat(Nat.N2(), Nat.N2()).fill(1.000, 0, 0, 1.000).times(x);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,7 +30,8 @@ class HolonomicDriveControllerTest {
|
||||
new HolonomicDriveController(
|
||||
new PIDController(1.0, 0.0, 0.0),
|
||||
new PIDController(1.0, 0.0, 0.0),
|
||||
new ProfiledPIDController(1.0, 0.0, 0.0, new TrapezoidProfile.Constraints(6.28, 3.14)));
|
||||
new ProfiledPIDController(
|
||||
1.0, 0.0, 0.0, new TrapezoidProfile.Constraints(2.0 * Math.PI, Math.PI)));
|
||||
Pose2d robotPose = new Pose2d(2.7, 23.0, Rotation2d.fromDegrees(0.0));
|
||||
|
||||
List<Pose2d> waypoints = new ArrayList<>();
|
||||
|
||||
@@ -7,52 +7,27 @@ package edu.wpi.first.math.controller;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
import edu.wpi.first.math.VecBuilder;
|
||||
import edu.wpi.first.math.numbers.N1;
|
||||
import edu.wpi.first.math.numbers.N2;
|
||||
import edu.wpi.first.math.system.LinearSystem;
|
||||
import edu.wpi.first.math.system.plant.DCMotor;
|
||||
import edu.wpi.first.math.system.plant.LinearSystemId;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
public class LinearQuadraticRegulatorTest {
|
||||
public static LinearSystem<N2, N1, N1> elevatorPlant;
|
||||
static LinearSystem<N2, N1, N1> armPlant;
|
||||
|
||||
static {
|
||||
createArm();
|
||||
createElevator();
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("LocalVariableName")
|
||||
public static void createArm() {
|
||||
var motors = DCMotor.getVex775Pro(2);
|
||||
|
||||
var m = 4.0;
|
||||
var r = 0.4;
|
||||
var J = 1d / 3d * m * r * r;
|
||||
var G = 100.0;
|
||||
|
||||
armPlant = LinearSystemId.createSingleJointedArmSystem(motors, J, G);
|
||||
}
|
||||
|
||||
@SuppressWarnings("LocalVariableName")
|
||||
public static void createElevator() {
|
||||
public void testLQROnElevator() {
|
||||
var motors = DCMotor.getVex775Pro(2);
|
||||
|
||||
var m = 5.0;
|
||||
var r = 0.0181864;
|
||||
var G = 1.0;
|
||||
elevatorPlant = LinearSystemId.createElevatorSystem(motors, m, r, G);
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("LocalVariableName")
|
||||
public void testLQROnElevator() {
|
||||
var plant = LinearSystemId.createElevatorSystem(motors, m, r, G);
|
||||
|
||||
var qElms = VecBuilder.fill(0.02, 0.4);
|
||||
var rElms = VecBuilder.fill(12.0);
|
||||
var dt = 0.00505;
|
||||
|
||||
var controller = new LinearQuadraticRegulator<>(elevatorPlant, qElms, rElms, dt);
|
||||
var controller = new LinearQuadraticRegulator<>(plant, qElms, rElms, dt);
|
||||
|
||||
var k = controller.getK();
|
||||
|
||||
|
||||
@@ -18,8 +18,6 @@ import edu.wpi.first.math.system.LinearSystemLoop;
|
||||
import edu.wpi.first.math.system.plant.DCMotor;
|
||||
import edu.wpi.first.math.system.plant.LinearSystemId;
|
||||
import edu.wpi.first.math.trajectory.TrapezoidProfile;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
@@ -103,12 +101,6 @@ public class LinearSystemLoopTest {
|
||||
|
||||
loop.setNextR(references);
|
||||
|
||||
List<Double> timeData = new ArrayList<>();
|
||||
List<Double> xHat = new ArrayList<>();
|
||||
List<Double> volt = new ArrayList<>();
|
||||
List<Double> reference = new ArrayList<>();
|
||||
List<Double> error = new ArrayList<>();
|
||||
|
||||
var time = 0.0;
|
||||
while (time < 10) {
|
||||
if (time > 10) {
|
||||
@@ -128,27 +120,9 @@ public class LinearSystemLoopTest {
|
||||
|
||||
assertTrue(u >= -12.1 && u <= 12.1, "U out of bounds! Got " + u);
|
||||
|
||||
xHat.add(loop.getXHat(0) / 2d / Math.PI * 60);
|
||||
volt.add(u);
|
||||
timeData.add(time);
|
||||
reference.add(references.get(0, 0) / 2d / Math.PI * 60);
|
||||
error.add(loop.getError(0) / 2d / Math.PI * 60);
|
||||
time += kDt;
|
||||
}
|
||||
|
||||
// XYChart bigChart = new XYChartBuilder().build();
|
||||
// bigChart.addSeries("Xhat, RPM", timeData, xHat);
|
||||
// bigChart.addSeries("Reference, RPM", timeData, reference);
|
||||
// bigChart.addSeries("Error, RPM", timeData, error);
|
||||
|
||||
// XYChart smolChart = new XYChartBuilder().build();
|
||||
// smolChart.addSeries("Volts, V", timeData, volt);
|
||||
|
||||
// try {
|
||||
// new SwingWrapper<>(List.of(bigChart, smolChart)).displayChartMatrix();
|
||||
// Thread.sleep(10000000);
|
||||
// } catch (InterruptedException e) { e.printStackTrace(); }
|
||||
|
||||
assertEquals(0.0, loop.getError(0), 0.1);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user