diff --git a/hal/src/generate/Instances.txt b/hal/src/generate/Instances.txt index e7e9fea662..bc30057d19 100644 --- a/hal/src/generate/Instances.txt +++ b/hal/src/generate/Instances.txt @@ -3,6 +3,7 @@ kLanguage_CPlusPlus = 2 kLanguage_Java = 3 kLanguage_Python = 4 kLanguage_DotNet = 5 +kLanguage_Kotlin = 6 kCANPlugin_BlackJagBridge = 1 kCANPlugin_2CAN = 2 kFramework_Iterative = 1 @@ -41,4 +42,11 @@ kDriverStationEIO_TouchSlider = 11 kADXL345_SPI = 1 kADXL345_I2C = 2 kCommand_Scheduler = 1 +kCommand2_Scheduler = 2 kSmartDashboard_Instance = 1 +kKinematics_DifferentialDrive = 1 +kKinematics_MecanumDrive = 2 +kKinematics_SwerveDrive = 3 +kOdometry_DifferentialDrive = 1 +kOdometry_MecanumDrive = 2 +kOdometry_SwerveDrive = 3 diff --git a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/CommandScheduler.java b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/CommandScheduler.java index b34f20e1fc..d82e77fefe 100644 --- a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/CommandScheduler.java +++ b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/CommandScheduler.java @@ -89,7 +89,7 @@ public final class CommandScheduler implements Sendable { CommandScheduler() { - HAL.report(tResourceType.kResourceType_Command, tInstances.kCommand_Scheduler); + HAL.report(tResourceType.kResourceType_Command, tInstances.kCommand2_Scheduler); SendableRegistry.addLW(this, "Scheduler"); } diff --git a/wpilibNewCommands/src/main/native/cpp/frc2/command/CommandScheduler.cpp b/wpilibNewCommands/src/main/native/cpp/frc2/command/CommandScheduler.cpp index 84d0820552..1f97ea239e 100644 --- a/wpilibNewCommands/src/main/native/cpp/frc2/command/CommandScheduler.cpp +++ b/wpilibNewCommands/src/main/native/cpp/frc2/command/CommandScheduler.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -67,6 +68,8 @@ static bool ContainsKey(const TMap& map, TKey keyToCheck) { } CommandScheduler::CommandScheduler() : m_impl(new Impl) { + HAL_Report(HALUsageReporting::kResourceType_Command, + HALUsageReporting::kCommand2_Scheduler); frc::SendableRegistry::GetInstance().AddLW(this, "Scheduler"); } diff --git a/wpilibc/src/main/native/cpp/controller/PIDController.cpp b/wpilibc/src/main/native/cpp/controller/PIDController.cpp index 264859f061..3abd4ba2b5 100644 --- a/wpilibc/src/main/native/cpp/controller/PIDController.cpp +++ b/wpilibc/src/main/native/cpp/controller/PIDController.cpp @@ -22,7 +22,7 @@ PIDController::PIDController(double Kp, double Ki, double Kd, : m_Kp(Kp), m_Ki(Ki), m_Kd(Kd), m_period(period) { static int instances = 0; instances++; - HAL_Report(HALUsageReporting::kResourceType_PIDController, instances); + HAL_Report(HALUsageReporting::kResourceType_PIDController2, instances); frc::SendableRegistry::GetInstance().Add(this, "PIDController", instances); } diff --git a/wpilibc/src/main/native/cpp/controller/ProfiledPIDController.cpp b/wpilibc/src/main/native/cpp/controller/ProfiledPIDController.cpp new file mode 100644 index 0000000000..a0fffc662d --- /dev/null +++ b/wpilibc/src/main/native/cpp/controller/ProfiledPIDController.cpp @@ -0,0 +1,16 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2008-2019 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +#include "frc/controller/ProfiledPIDController.h" + +#include + +void frc::detail::ReportProfiledPIDController() { + static int instances = 0; + ++instances; + HAL_Report(HALUsageReporting::kResourceType_ProfiledPIDController, instances); +} diff --git a/wpilibc/src/main/native/cpp/kinematics/DifferentialDriveOdometry.cpp b/wpilibc/src/main/native/cpp/kinematics/DifferentialDriveOdometry.cpp index 8591da4cfd..07a8e3bba2 100644 --- a/wpilibc/src/main/native/cpp/kinematics/DifferentialDriveOdometry.cpp +++ b/wpilibc/src/main/native/cpp/kinematics/DifferentialDriveOdometry.cpp @@ -7,6 +7,8 @@ #include "frc/kinematics/DifferentialDriveOdometry.h" +#include + using namespace frc; DifferentialDriveOdometry::DifferentialDriveOdometry( @@ -14,6 +16,8 @@ DifferentialDriveOdometry::DifferentialDriveOdometry( : m_pose(initialPose) { m_previousAngle = m_pose.Rotation(); m_gyroOffset = m_pose.Rotation() - gyroAngle; + HAL_Report(HALUsageReporting::kResourceType_Odometry, + HALUsageReporting::kOdometry_DifferentialDrive); } const Pose2d& DifferentialDriveOdometry::Update(const Rotation2d& gyroAngle, diff --git a/wpilibc/src/main/native/cpp/kinematics/MecanumDriveOdometry.cpp b/wpilibc/src/main/native/cpp/kinematics/MecanumDriveOdometry.cpp index 615635aea7..38434838f1 100644 --- a/wpilibc/src/main/native/cpp/kinematics/MecanumDriveOdometry.cpp +++ b/wpilibc/src/main/native/cpp/kinematics/MecanumDriveOdometry.cpp @@ -7,6 +7,8 @@ #include "frc/kinematics/MecanumDriveOdometry.h" +#include + using namespace frc; MecanumDriveOdometry::MecanumDriveOdometry(MecanumDriveKinematics kinematics, @@ -15,6 +17,8 @@ MecanumDriveOdometry::MecanumDriveOdometry(MecanumDriveKinematics kinematics, : m_kinematics(kinematics), m_pose(initialPose) { m_previousAngle = m_pose.Rotation(); m_gyroOffset = m_pose.Rotation() - gyroAngle; + HAL_Report(HALUsageReporting::kResourceType_Odometry, + HALUsageReporting::kOdometry_MecanumDrive); } const Pose2d& MecanumDriveOdometry::UpdateWithTime( diff --git a/wpilibc/src/main/native/include/frc/controller/ProfiledPIDController.h b/wpilibc/src/main/native/include/frc/controller/ProfiledPIDController.h index 96fd331ed9..52e2fce481 100644 --- a/wpilibc/src/main/native/include/frc/controller/ProfiledPIDController.h +++ b/wpilibc/src/main/native/include/frc/controller/ProfiledPIDController.h @@ -21,6 +21,9 @@ #include "frc/trajectory/TrapezoidProfile.h" namespace frc { +namespace detail { +void ReportProfiledPIDController(); +} // namespace detail /** * Implements a PID control loop whose setpoint is constrained by a trapezoid @@ -54,7 +57,9 @@ class ProfiledPIDController */ ProfiledPIDController(double Kp, double Ki, double Kd, Constraints constraints, units::second_t period = 20_ms) - : m_controller(Kp, Ki, Kd, period), m_constraints(constraints) {} + : m_controller(Kp, Ki, Kd, period), m_constraints(constraints) { + detail::ReportProfiledPIDController(); + } ~ProfiledPIDController() override = default; diff --git a/wpilibc/src/main/native/include/frc/kinematics/DifferentialDriveKinematics.h b/wpilibc/src/main/native/include/frc/kinematics/DifferentialDriveKinematics.h index cb2121f8de..e986029994 100644 --- a/wpilibc/src/main/native/include/frc/kinematics/DifferentialDriveKinematics.h +++ b/wpilibc/src/main/native/include/frc/kinematics/DifferentialDriveKinematics.h @@ -7,6 +7,7 @@ #pragma once +#include #include #include "frc/kinematics/ChassisSpeeds.h" @@ -31,8 +32,11 @@ class DifferentialDriveKinematics { * empirical value may be larger than the physical measured value due to * scrubbing effects. */ - constexpr explicit DifferentialDriveKinematics(units::meter_t trackWidth) - : trackWidth(trackWidth) {} + explicit DifferentialDriveKinematics(units::meter_t trackWidth) + : trackWidth(trackWidth) { + HAL_Report(HALUsageReporting::kResourceType_Kinematics, + HALUsageReporting::kKinematics_DifferentialDrive); + } /** * Returns a chassis speed from left and right component velocities using diff --git a/wpilibc/src/main/native/include/frc/kinematics/MecanumDriveKinematics.h b/wpilibc/src/main/native/include/frc/kinematics/MecanumDriveKinematics.h index 6b0329de00..47b1b341d0 100644 --- a/wpilibc/src/main/native/include/frc/kinematics/MecanumDriveKinematics.h +++ b/wpilibc/src/main/native/include/frc/kinematics/MecanumDriveKinematics.h @@ -9,6 +9,7 @@ #include #include +#include #include "frc/geometry/Translation2d.h" #include "frc/kinematics/ChassisSpeeds.h" @@ -63,6 +64,8 @@ class MecanumDriveKinematics { SetInverseKinematics(frontLeftWheel, frontRightWheel, rearLeftWheel, rearRightWheel); m_forwardKinematics = m_inverseKinematics.householderQr(); + HAL_Report(HALUsageReporting::kResourceType_Kinematics, + HALUsageReporting::kKinematics_MecanumDrive); } MecanumDriveKinematics(const MecanumDriveKinematics&) = default; diff --git a/wpilibc/src/main/native/include/frc/kinematics/SwerveDriveKinematics.h b/wpilibc/src/main/native/include/frc/kinematics/SwerveDriveKinematics.h index 1bdbcea5ec..f8893639c3 100644 --- a/wpilibc/src/main/native/include/frc/kinematics/SwerveDriveKinematics.h +++ b/wpilibc/src/main/native/include/frc/kinematics/SwerveDriveKinematics.h @@ -12,6 +12,7 @@ #include #include +#include #include #include "frc/geometry/Rotation2d.h" @@ -71,6 +72,9 @@ class SwerveDriveKinematics { } m_forwardKinematics = m_inverseKinematics.householderQr(); + + HAL_Report(HALUsageReporting::kResourceType_Kinematics, + HALUsageReporting::kKinematics_SwerveDrive); } SwerveDriveKinematics(const SwerveDriveKinematics&) = default; diff --git a/wpilibc/src/main/native/include/frc/kinematics/SwerveDriveOdometry.inc b/wpilibc/src/main/native/include/frc/kinematics/SwerveDriveOdometry.inc index 23852d0ecb..e79438866e 100644 --- a/wpilibc/src/main/native/include/frc/kinematics/SwerveDriveOdometry.inc +++ b/wpilibc/src/main/native/include/frc/kinematics/SwerveDriveOdometry.inc @@ -7,6 +7,8 @@ #pragma once +#include + namespace frc { template SwerveDriveOdometry::SwerveDriveOdometry( @@ -15,6 +17,8 @@ SwerveDriveOdometry::SwerveDriveOdometry( : m_kinematics(kinematics), m_pose(initialPose) { m_previousAngle = m_pose.Rotation(); m_gyroOffset = m_pose.Rotation() - gyroAngle; + HAL_Report(HALUsageReporting::kResourceType_Odometry, + HALUsageReporting::kOdometry_SwerveDrive); } template diff --git a/wpilibc/src/main/native/include/frc/trajectory/TrapezoidProfile.h b/wpilibc/src/main/native/include/frc/trajectory/TrapezoidProfile.h index 0479cfec4c..575088eb35 100644 --- a/wpilibc/src/main/native/include/frc/trajectory/TrapezoidProfile.h +++ b/wpilibc/src/main/native/include/frc/trajectory/TrapezoidProfile.h @@ -7,6 +7,7 @@ #pragma once +#include #include namespace frc { @@ -53,6 +54,13 @@ class TrapezoidProfile { public: class Constraints { public: + Constraints() { + HAL_Report(HALUsageReporting::kResourceType_TrapezoidProfile, 1); + } + Constraints(Velocity_t maxVelocity_, Acceleration_t maxAcceleration_) + : maxVelocity{maxVelocity_}, maxAcceleration{maxAcceleration_} { + HAL_Report(HALUsageReporting::kResourceType_TrapezoidProfile, 1); + } Velocity_t maxVelocity{0}; Acceleration_t maxAcceleration{0}; }; diff --git a/wpilibcExamples/src/main/cpp/examples/MecanumControllerCommand/cpp/Constants.cpp b/wpilibcExamples/src/main/cpp/examples/MecanumControllerCommand/cpp/Constants.cpp index bc6751f059..0cf9b96092 100644 --- a/wpilibcExamples/src/main/cpp/examples/MecanumControllerCommand/cpp/Constants.cpp +++ b/wpilibcExamples/src/main/cpp/examples/MecanumControllerCommand/cpp/Constants.cpp @@ -16,3 +16,10 @@ const frc::MecanumDriveKinematics kDriveKinematics{ frc::Translation2d(-kWheelBase / 2, -kTrackWidth / 2)}; } // namespace DriveConstants + +namespace AutoConstants { + +const frc::TrapezoidProfile::Constraints + kThetaControllerConstraints{kMaxAngularSpeed, kMaxAngularAcceleration}; + +} // namespace AutoConstants diff --git a/wpilibcExamples/src/main/cpp/examples/MecanumControllerCommand/include/Constants.h b/wpilibcExamples/src/main/cpp/examples/MecanumControllerCommand/include/Constants.h index 5f5f05f063..1baa3de0ef 100644 --- a/wpilibcExamples/src/main/cpp/examples/MecanumControllerCommand/include/Constants.h +++ b/wpilibcExamples/src/main/cpp/examples/MecanumControllerCommand/include/Constants.h @@ -83,8 +83,8 @@ constexpr double kPXController = 0.5; constexpr double kPYController = 0.5; constexpr double kPThetaController = 0.5; -constexpr frc::TrapezoidProfile::Constraints - kThetaControllerConstraints{kMaxAngularSpeed, kMaxAngularAcceleration}; +extern const frc::TrapezoidProfile::Constraints + kThetaControllerConstraints; } // namespace AutoConstants diff --git a/wpilibcExamples/src/main/cpp/examples/RamseteCommand/cpp/Constants.cpp b/wpilibcExamples/src/main/cpp/examples/RamseteCommand/cpp/Constants.cpp new file mode 100644 index 0000000000..46ffde36b4 --- /dev/null +++ b/wpilibcExamples/src/main/cpp/examples/RamseteCommand/cpp/Constants.cpp @@ -0,0 +1,13 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2019 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +#include "Constants.h" + +using namespace DriveConstants; + +const frc::DifferentialDriveKinematics DriveConstants::kDriveKinematics( + kTrackwidth); diff --git a/wpilibcExamples/src/main/cpp/examples/RamseteCommand/cpp/RobotContainer.cpp b/wpilibcExamples/src/main/cpp/examples/RamseteCommand/cpp/RobotContainer.cpp index 71da41081a..33d53c6477 100644 --- a/wpilibcExamples/src/main/cpp/examples/RamseteCommand/cpp/RobotContainer.cpp +++ b/wpilibcExamples/src/main/cpp/examples/RamseteCommand/cpp/RobotContainer.cpp @@ -18,6 +18,8 @@ #include #include +#include "Constants.h" + RobotContainer::RobotContainer() { // Initialize all of your commands and subsystems here diff --git a/wpilibcExamples/src/main/cpp/examples/RamseteCommand/include/Constants.h b/wpilibcExamples/src/main/cpp/examples/RamseteCommand/include/Constants.h index 986a49ad49..649082b852 100644 --- a/wpilibcExamples/src/main/cpp/examples/RamseteCommand/include/Constants.h +++ b/wpilibcExamples/src/main/cpp/examples/RamseteCommand/include/Constants.h @@ -33,7 +33,7 @@ constexpr bool kLeftEncoderReversed = false; constexpr bool kRightEncoderReversed = true; constexpr auto kTrackwidth = 0.69_m; -constexpr frc::DifferentialDriveKinematics kDriveKinematics(kTrackwidth); +extern const frc::DifferentialDriveKinematics kDriveKinematics; constexpr int kEncoderCPR = 1024; constexpr double kWheelDiameterInches = 6; diff --git a/wpilibcExamples/src/main/cpp/examples/SwerveControllerCommand/cpp/Constants.cpp b/wpilibcExamples/src/main/cpp/examples/SwerveControllerCommand/cpp/Constants.cpp new file mode 100644 index 0000000000..a60d8035c6 --- /dev/null +++ b/wpilibcExamples/src/main/cpp/examples/SwerveControllerCommand/cpp/Constants.cpp @@ -0,0 +1,15 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2019 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +#include "Constants.h" + +namespace AutoConstants { + +const frc::TrapezoidProfile::Constraints + kThetaControllerConstraints{kMaxAngularSpeed, kMaxAngularAcceleration}; + +} // namespace AutoConstants diff --git a/wpilibcExamples/src/main/cpp/examples/SwerveControllerCommand/include/Constants.h b/wpilibcExamples/src/main/cpp/examples/SwerveControllerCommand/include/Constants.h index ed1f8809bb..51b7030156 100644 --- a/wpilibcExamples/src/main/cpp/examples/SwerveControllerCommand/include/Constants.h +++ b/wpilibcExamples/src/main/cpp/examples/SwerveControllerCommand/include/Constants.h @@ -103,8 +103,8 @@ constexpr double kPThetaController = 0.5; // -constexpr frc::TrapezoidProfile::Constraints - kThetaControllerConstraints{kMaxAngularSpeed, kMaxAngularAcceleration}; +extern const frc::TrapezoidProfile::Constraints + kThetaControllerConstraints; } // namespace AutoConstants diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/controller/PIDController.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/controller/PIDController.java index 04e34b1154..39b6a17692 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/controller/PIDController.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/controller/PIDController.java @@ -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 diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/controller/ProfiledPIDController.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/controller/ProfiledPIDController.java index cc2f29dba7..edbae26d11 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/controller/ProfiledPIDController.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/controller/ProfiledPIDController.java @@ -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); } /** diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/kinematics/DifferentialDriveKinematics.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/kinematics/DifferentialDriveKinematics.java index 06fdd32e99..bb632af48d 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/kinematics/DifferentialDriveKinematics.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/kinematics/DifferentialDriveKinematics.java @@ -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); } /** diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/kinematics/DifferentialDriveOdometry.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/kinematics/DifferentialDriveOdometry.java index 2a98f2b51f..35a4342387 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/kinematics/DifferentialDriveOdometry.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/kinematics/DifferentialDriveOdometry.java @@ -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); } /** diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/kinematics/MecanumDriveKinematics.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/kinematics/MecanumDriveKinematics.java index 9caad5922f..a5e5b5ff72 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/kinematics/MecanumDriveKinematics.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/kinematics/MecanumDriveKinematics.java @@ -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); } /** diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/kinematics/MecanumDriveOdometry.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/kinematics/MecanumDriveOdometry.java index 22ef83a317..b3dd4028a8 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/kinematics/MecanumDriveOdometry.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/kinematics/MecanumDriveOdometry.java @@ -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); } /** diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/kinematics/SwerveDriveKinematics.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/kinematics/SwerveDriveKinematics.java index 0da20180cf..37f97b8217 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/kinematics/SwerveDriveKinematics.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/kinematics/SwerveDriveKinematics.java @@ -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); } /** diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/kinematics/SwerveDriveOdometry.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/kinematics/SwerveDriveOdometry.java index c08070c916..811c3de435 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/kinematics/SwerveDriveOdometry.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/kinematics/SwerveDriveOdometry.java @@ -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); } /** diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/trajectory/TrapezoidProfile.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/trajectory/TrapezoidProfile.java index 74ee846b1b..0b24411b6e 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/trajectory/TrapezoidProfile.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/trajectory/TrapezoidProfile.java @@ -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); } }