Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[wpimath] Cleanup and Enhancement of DCMotor and gearboxes #7435

Open
wants to merge 8 commits into
base: main
Choose a base branch
from

Conversation

narmstro2020
Copy link
Contributor

@narmstro2020 narmstro2020 commented Nov 26, 2024

So in an effort to clean up and enhance DCMotor and the whole concept of a gearbox I decided to do the following.

Summary of changes.

Java changes

  1. DCMotor is only focused on the constants for 1 motor and doesn't even know what a reduction is.
  2. The motor constants are internally stored in the Java units library. They are still public final. I questioned this, but realized that it is of no significant effort to call baseMagnitude() on any of those fields. If you are wanting those values then the units library should be pretty straightforward to navigate.
  3. The static methods for each known type have been replaced with an enum called KnownDCMotor. (I'm up for better name suggestions)
  4. Gearbox class that contains a DCMotor, number of motors, and a gearbox reduction.
  5. Constructor overloads for Gearbox exist for combos involving 1 motor with reduction of 1. multiple motors but reduction of 1. 1 motor with reduction other than 1 and full constructor.
  6. Gearbox reduction can still be changed as per the requirements of DifferentialDrive and related classes.
  7. getTorque, Voltage, Current, and AngularVelocity methods for both units and non units class usages.
  8. DCMotorSim renamed to GearboxSim. Simulating a simple single motor with no gearing would be handled with GearboxSim as well.
  9. LinearSystemId static methods reworked. All none drivetrain sims will eventualy use one of the kv, ka methods after calculating them in their own methods and then call idenfityPosition or identifyVelocity. createDCMotorSystem replaced with createGearboxSystem.

C++ changes.
... coming soon. Currently in production.

As per usual any feedback is welcome and appreciated.

@narmstro2020 narmstro2020 requested review from a team as code owners November 26, 2024 03:10
@narmstro2020 narmstro2020 changed the title [wpimath] Separating concerns for DCMotor and gearboxes [wpimath] Cleanup and Enhancement of DCMotor and gearboxes Nov 26, 2024
@narmstro2020
Copy link
Contributor Author

/format

@spacey-sooty
Copy link
Contributor

The static methods for each known type have been replaced with an enum called KnownDCMotor. (I'm up for better name suggestions)

Why? Factories seemed like a good approach to me

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants