Skip to content

Adds CTRE & Rev motor and sensor adapters#94

Open
edreed wants to merge 7 commits intoNRG948:mainfrom
edreed:edreed/motor-controllers
Open

Adds CTRE & Rev motor and sensor adapters#94
edreed wants to merge 7 commits intoNRG948:mainfrom
edreed:edreed/motor-controllers

Conversation

@edreed
Copy link
Copy Markdown
Collaborator

@edreed edreed commented Mar 28, 2026

This changes moves the CTRE & Rev motor controller adapters from the robot code to the NRGCommon library.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds vendor-specific motor/sensor adapter modules (CTRE Phoenix 6 + REV Spark) on top of new core actuator/sensor abstractions in nrgcommon, enabling hardware-agnostic motor construction via Motors.

Changes:

  • Introduces new core actuator/sensor interfaces/types (MotorController, Motors, RelativeEncoder, LimitSwitch, etc.) and a null adapter.
  • Adds nrgcommon-ctre and nrgcommon-rev Gradle subprojects with CTRE TalonFX and REV SparkMax/SparkFlex adapter implementations.
  • Wires new subprojects into the multi-project build via settings.gradle.

Reviewed changes

Copilot reviewed 21 out of 21 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
settings.gradle Includes new nrgcommon-ctre and nrgcommon-rev subprojects.
nrgcommon/src/main/java/com/nrg948/sensor/RelativeEncoder.java Adds a vendor-agnostic relative encoder interface.
nrgcommon/src/main/java/com/nrg948/sensor/LimitSwitch.java Adds a vendor-agnostic limit switch interface.
nrgcommon/src/main/java/com/nrg948/actuator/package-info.java Documents actuator package purpose and vendor module usage.
nrgcommon/src/main/java/com/nrg948/actuator/NullMotorAdapter.java Provides a no-op MotorController implementation.
nrgcommon/src/main/java/com/nrg948/actuator/Motors.java Adds motor-type enum + reflection-based adapter construction.
nrgcommon/src/main/java/com/nrg948/actuator/MotorIdleMode.java Adds idle-mode enum for adapters.
nrgcommon/src/main/java/com/nrg948/actuator/MotorDirection.java Adds direction/inversion abstraction for adapters.
nrgcommon/src/main/java/com/nrg948/actuator/MotorController.java Defines the common motor controller interface (+ sensors, follower, telemetry).
nrgcommon-rev/src/main/java/com/nrg948/sensor/rev/SparkLimitSwitchAdapter.java Adapts REV Spark limit switches to LimitSwitch.
nrgcommon-rev/src/main/java/com/nrg948/sensor/rev/SparkEncoderAdapter.java Adapts REV encoders to RelativeEncoder.
nrgcommon-rev/src/main/java/com/nrg948/actuator/rev/SparkMaxAdapter.java Implements MotorController for SparkMax.
nrgcommon-rev/src/main/java/com/nrg948/actuator/rev/SparkFlexAdapter.java Implements MotorController for SparkFlex.
nrgcommon-rev/src/main/java/com/nrg948/actuator/rev/SparkAdapter.java Common base for Spark adapters incl. config + telemetry + follower logic.
nrgcommon-rev/build.gradle Adds REV module build/publish configuration and dependencies.
nrgcommon-rev/.styleguide-license Adds Spotless license header template for REV module.
nrgcommon-ctre/src/main/java/com/nrg948/sensor/ctre/TalonFXLimitSwitchAdapter.java Adapts TalonFX limit signals to LimitSwitch.
nrgcommon-ctre/src/main/java/com/nrg948/sensor/ctre/TalonFXEncoderAdapter.java Adapts TalonFX position/velocity to RelativeEncoder.
nrgcommon-ctre/src/main/java/com/nrg948/actuator/ctre/TalonFXAdapter.java Implements MotorController for TalonFX + follower + telemetry.
nrgcommon-ctre/build.gradle Adds CTRE module build/publish configuration and dependencies.
nrgcommon-ctre/.styleguide-license Adds Spotless license header template for CTRE module.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@edreed edreed force-pushed the edreed/motor-controllers branch from 179f773 to 99dd88a Compare March 28, 2026 17:22
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.

3 participants