Add usage reporting for many new things (#2184)

- new CommandScheduler
- kinematics and odometry classes
- new PIDController
- ProfiledPIDController
- TrapezoidProfile (reported in Constraints class)

Also update instances.txt to match latest NI version.

One side effect is that a couple of classes are no longer constexpr.
This commit is contained in:
Peter Johnson
2019-12-25 00:42:14 -06:00
committed by GitHub
parent 93cdf68694
commit 7b952d599d
29 changed files with 155 additions and 11 deletions

View File

@@ -100,7 +100,7 @@ public class PIDController implements Sendable, AutoCloseable {
instances++;
SendableRegistry.addLW(this, "PIDController", instances);
HAL.report(tResourceType.kResourceType_PIDController, instances);
HAL.report(tResourceType.kResourceType_PIDController2, instances);
}
@Override

View File

@@ -7,6 +7,8 @@
package edu.wpi.first.wpilibj.controller;
import edu.wpi.first.hal.FRCNetComm.tResourceType;
import edu.wpi.first.hal.HAL;
import edu.wpi.first.wpilibj.Sendable;
import edu.wpi.first.wpilibj.smartdashboard.SendableBuilder;
import edu.wpi.first.wpilibj.trajectory.TrapezoidProfile;
@@ -17,6 +19,8 @@ import edu.wpi.first.wpilibj.trajectory.TrapezoidProfile;
*/
@SuppressWarnings("PMD.TooManyMethods")
public class ProfiledPIDController implements Sendable {
private static int instances;
private PIDController m_controller;
private TrapezoidProfile.State m_goal = new TrapezoidProfile.State();
private TrapezoidProfile.State m_setpoint = new TrapezoidProfile.State();
@@ -54,6 +58,8 @@ public class ProfiledPIDController implements Sendable {
double period) {
m_controller = new PIDController(Kp, Ki, Kd, period);
m_constraints = constraints;
instances++;
HAL.report(tResourceType.kResourceType_ProfiledPIDController, instances);
}
/**

View File

@@ -7,6 +7,10 @@
package edu.wpi.first.wpilibj.kinematics;
import edu.wpi.first.hal.FRCNetComm.tInstances;
import edu.wpi.first.hal.FRCNetComm.tResourceType;
import edu.wpi.first.hal.HAL;
/**
* Helper class that converts a chassis velocity (dx and dtheta components) to
* left and right wheel velocities for a differential drive.
@@ -29,6 +33,7 @@ public class DifferentialDriveKinematics {
*/
public DifferentialDriveKinematics(double trackWidthMeters) {
this.trackWidthMeters = trackWidthMeters;
HAL.report(tResourceType.kResourceType_Kinematics, tInstances.kKinematics_DifferentialDrive);
}
/**

View File

@@ -7,6 +7,9 @@
package edu.wpi.first.wpilibj.kinematics;
import edu.wpi.first.hal.FRCNetComm.tInstances;
import edu.wpi.first.hal.FRCNetComm.tResourceType;
import edu.wpi.first.hal.HAL;
import edu.wpi.first.wpilibj.geometry.Pose2d;
import edu.wpi.first.wpilibj.geometry.Rotation2d;
import edu.wpi.first.wpilibj.geometry.Twist2d;
@@ -43,6 +46,7 @@ public class DifferentialDriveOdometry {
m_poseMeters = initialPoseMeters;
m_gyroOffset = m_poseMeters.getRotation().minus(gyroAngle);
m_previousAngle = initialPoseMeters.getRotation();
HAL.report(tResourceType.kResourceType_Odometry, tInstances.kOdometry_DifferentialDrive);
}
/**

View File

@@ -9,6 +9,9 @@ package edu.wpi.first.wpilibj.kinematics;
import org.ejml.simple.SimpleMatrix;
import edu.wpi.first.hal.FRCNetComm.tInstances;
import edu.wpi.first.hal.FRCNetComm.tResourceType;
import edu.wpi.first.hal.HAL;
import edu.wpi.first.wpilibj.geometry.Translation2d;
/**
@@ -70,6 +73,8 @@ public class MecanumDriveKinematics {
setInverseKinematics(frontLeftWheelMeters, frontRightWheelMeters,
rearLeftWheelMeters, rearRightWheelMeters);
m_forwardKinematics = m_inverseKinematics.pseudoInverse();
HAL.report(tResourceType.kResourceType_Kinematics, tInstances.kKinematics_MecanumDrive);
}
/**

View File

@@ -7,6 +7,9 @@
package edu.wpi.first.wpilibj.kinematics;
import edu.wpi.first.hal.FRCNetComm.tInstances;
import edu.wpi.first.hal.FRCNetComm.tResourceType;
import edu.wpi.first.hal.HAL;
import edu.wpi.first.wpilibj.Timer;
import edu.wpi.first.wpilibj.geometry.Pose2d;
import edu.wpi.first.wpilibj.geometry.Rotation2d;
@@ -42,6 +45,7 @@ public class MecanumDriveOdometry {
m_poseMeters = initialPoseMeters;
m_gyroOffset = m_poseMeters.getRotation().minus(gyroAngle);
m_previousAngle = initialPoseMeters.getRotation();
HAL.report(tResourceType.kResourceType_Odometry, tInstances.kOdometry_MecanumDrive);
}
/**

View File

@@ -12,6 +12,9 @@ import java.util.Collections;
import org.ejml.simple.SimpleMatrix;
import edu.wpi.first.hal.FRCNetComm.tInstances;
import edu.wpi.first.hal.FRCNetComm.tResourceType;
import edu.wpi.first.hal.HAL;
import edu.wpi.first.wpilibj.geometry.Rotation2d;
import edu.wpi.first.wpilibj.geometry.Translation2d;
@@ -69,6 +72,8 @@ public class SwerveDriveKinematics {
m_inverseKinematics.setRow(i * 2 + 1, 0, /* Start Data */ 0, 1, +m_modules[i].getX());
}
m_forwardKinematics = m_inverseKinematics.pseudoInverse();
HAL.report(tResourceType.kResourceType_Kinematics, tInstances.kKinematics_SwerveDrive);
}
/**

View File

@@ -7,6 +7,9 @@
package edu.wpi.first.wpilibj.kinematics;
import edu.wpi.first.hal.FRCNetComm.tInstances;
import edu.wpi.first.hal.FRCNetComm.tResourceType;
import edu.wpi.first.hal.HAL;
import edu.wpi.first.wpilibj.Timer;
import edu.wpi.first.wpilibj.geometry.Pose2d;
import edu.wpi.first.wpilibj.geometry.Rotation2d;
@@ -42,6 +45,7 @@ public class SwerveDriveOdometry {
m_poseMeters = initialPose;
m_gyroOffset = m_poseMeters.getRotation().minus(gyroAngle);
m_previousAngle = initialPose.getRotation();
HAL.report(tResourceType.kResourceType_Odometry, tInstances.kOdometry_SwerveDrive);
}
/**

View File

@@ -9,6 +9,9 @@ package edu.wpi.first.wpilibj.trajectory;
import java.util.Objects;
import edu.wpi.first.hal.FRCNetComm.tResourceType;
import edu.wpi.first.hal.HAL;
/**
* A trapezoid-shaped velocity profile.
*
@@ -59,11 +62,19 @@ public class TrapezoidProfile {
public double maxAcceleration;
public Constraints() {
HAL.report(tResourceType.kResourceType_TrapezoidProfile, 1);
}
/**
* Construct constraints for a TrapezoidProfile.
*
* @param maxVelocity maximum velocity
* @param maxAcceleration maximum acceleration
*/
public Constraints(double maxVelocity, double maxAcceleration) {
this.maxVelocity = maxVelocity;
this.maxAcceleration = maxAcceleration;
HAL.report(tResourceType.kResourceType_TrapezoidProfile, 1);
}
}