Skip to content

Adds CTRE & Rev motor and sensor adapters#94

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

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

Conversation

@edreed

@edreed edreed commented Mar 28, 2026

Copy link
Copy Markdown
Collaborator

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

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

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.

Comment thread nrgcommon/src/main/java/com/nrg948/actuator/Motors.java Outdated
Comment thread nrgcommon-ctre/src/main/java/com/nrg948/actuator/ctre/TalonFXAdapter.java Outdated
Comment thread nrgcommon-ctre/build.gradle Outdated
Comment thread nrgcommon-rev/src/main/java/com/nrg948/actuator/rev/SparkAdapter.java Outdated
Comment thread nrgcommon-rev/src/main/java/com/nrg948/actuator/rev/SparkMaxAdapter.java Outdated
Comment thread nrgcommon/src/main/java/com/nrg948/actuator/Motors.java Outdated
Comment thread nrgcommon-rev/build.gradle Outdated
Comment thread nrgcommon-rev/src/main/java/com/nrg948/actuator/rev/SparkAdapter.java Outdated
@edreed
edreed force-pushed the edreed/motor-controllers branch from 179f773 to 99dd88a Compare March 28, 2026 17:22
Comment thread nrgcommon-ctre/src/main/java/com/nrg948/sensor/ctre/TalonFXEncoderAdapter.java Outdated
Comment thread nrgcommon-ctre/src/main/java/com/nrg948/actuator/ctre/TalonFXAdapter.java Outdated
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