From 6c0919091c4c97ad80544a26348fa751a57e4d4c Mon Sep 17 00:00:00 2001 From: Debajit Ghosh Date: Mon, 18 Mar 2024 08:13:38 -0700 Subject: [PATCH 1/4] set the conection frequency threshold for the rev through bore encoder, so isConnected() returns when it's had enough readings to initialize --- .../hal/wpilib/REVThroughBoreDutyCycleEncoder.java | 1 + .../java/com/team766/robot/reva/mechanisms/Shoulder.java | 9 ++++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/team766/hal/wpilib/REVThroughBoreDutyCycleEncoder.java b/src/main/java/com/team766/hal/wpilib/REVThroughBoreDutyCycleEncoder.java index 06b5bf375..279ff5a09 100644 --- a/src/main/java/com/team766/hal/wpilib/REVThroughBoreDutyCycleEncoder.java +++ b/src/main/java/com/team766/hal/wpilib/REVThroughBoreDutyCycleEncoder.java @@ -8,6 +8,7 @@ public class REVThroughBoreDutyCycleEncoder extends DutyCycleEncoder implements public REVThroughBoreDutyCycleEncoder(int channel) { super(channel); setDutyCycleRange(1. / 1025., 1024. / 1025.); + setConnectedFrequencyThreshold(976 /* 975.6 on spec sheet*/); } @Override diff --git a/src/main/java/com/team766/robot/reva/mechanisms/Shoulder.java b/src/main/java/com/team766/robot/reva/mechanisms/Shoulder.java index 84a92ffa0..30ed9dd12 100644 --- a/src/main/java/com/team766/robot/reva/mechanisms/Shoulder.java +++ b/src/main/java/com/team766/robot/reva/mechanisms/Shoulder.java @@ -38,10 +38,9 @@ public double getAngle() { private double targetAngle; private static final double NUDGE_AMOUNT = 1; // degrees - private static final double ENCODER_INITIALIZATION_LOOPS = 350; private final REVThroughBoreDutyCycleEncoder absoluteEncoder; - private int encoderInitializationCount = 0; + private boolean encoderInitialized = false; private static final double SUPPLY_CURRENT_LIMIT = 30.0; // max efficiency from spec sheet private static final double STATOR_CURRENT_LIMIT = 80.0; // TUNE THIS! @@ -138,15 +137,15 @@ public boolean isFinished() { public void run() { // encoder takes some time to settle. // this threshold was determined very scientifically around 3:20am. - if (encoderInitializationCount < ENCODER_INITIALIZATION_LOOPS - && absoluteEncoder.isConnected()) { + if (encoderInitialized && absoluteEncoder.isConnected()) { double absPos = absoluteEncoder.getPosition(); double convertedPos = absoluteEncoderToMotorRotations(absPos); // TODO: only set the sensor position after this has settled? // can try in the next round of testing. leftMotor.setSensorPosition(convertedPos); - encoderInitializationCount++; + encoderInitialized = true; } + SmartDashboard.putNumber("[SHOULDER] Angle", getAngle()); SmartDashboard.putNumber("[SHOULDER] Target Angle", targetAngle); SmartDashboard.putNumber("[SHOULDER] Rotations", getRotations()); From d18e87ba48cd68eeb5fa0f66173895bc0688f7a1 Mon Sep 17 00:00:00 2001 From: Debajit Ghosh Date: Mon, 18 Mar 2024 08:35:45 -0700 Subject: [PATCH 2/4] remove TODO --- src/main/java/com/team766/robot/reva/mechanisms/Shoulder.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/com/team766/robot/reva/mechanisms/Shoulder.java b/src/main/java/com/team766/robot/reva/mechanisms/Shoulder.java index 30ed9dd12..006fc914b 100644 --- a/src/main/java/com/team766/robot/reva/mechanisms/Shoulder.java +++ b/src/main/java/com/team766/robot/reva/mechanisms/Shoulder.java @@ -140,8 +140,6 @@ public void run() { if (encoderInitialized && absoluteEncoder.isConnected()) { double absPos = absoluteEncoder.getPosition(); double convertedPos = absoluteEncoderToMotorRotations(absPos); - // TODO: only set the sensor position after this has settled? - // can try in the next round of testing. leftMotor.setSensorPosition(convertedPos); encoderInitialized = true; } From 19a085942261d06561286ddb048de0527330528e Mon Sep 17 00:00:00 2001 From: Debajit Ghosh Date: Mon, 18 Mar 2024 08:39:25 -0700 Subject: [PATCH 3/4] PR feedback: set connected frequency threshold to 975, so `isConnected` will get a chance to report that it's connected. --- .../com/team766/hal/wpilib/REVThroughBoreDutyCycleEncoder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/team766/hal/wpilib/REVThroughBoreDutyCycleEncoder.java b/src/main/java/com/team766/hal/wpilib/REVThroughBoreDutyCycleEncoder.java index 279ff5a09..890d3a5a0 100644 --- a/src/main/java/com/team766/hal/wpilib/REVThroughBoreDutyCycleEncoder.java +++ b/src/main/java/com/team766/hal/wpilib/REVThroughBoreDutyCycleEncoder.java @@ -8,7 +8,7 @@ public class REVThroughBoreDutyCycleEncoder extends DutyCycleEncoder implements public REVThroughBoreDutyCycleEncoder(int channel) { super(channel); setDutyCycleRange(1. / 1025., 1024. / 1025.); - setConnectedFrequencyThreshold(976 /* 975.6 on spec sheet*/); + setConnectedFrequencyThreshold(975 /* 975.6 on spec sheet */); } @Override From 84c86aacc19b1e755aedc4e0ded93f4594cf1e5d Mon Sep 17 00:00:00 2001 From: Debajit Ghosh Date: Mon, 18 Mar 2024 13:02:15 -0700 Subject: [PATCH 4/4] log absolute encoder frequency to shuffleboard --- src/main/java/com/team766/robot/reva/mechanisms/Shoulder.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/team766/robot/reva/mechanisms/Shoulder.java b/src/main/java/com/team766/robot/reva/mechanisms/Shoulder.java index 006fc914b..a28b3831b 100644 --- a/src/main/java/com/team766/robot/reva/mechanisms/Shoulder.java +++ b/src/main/java/com/team766/robot/reva/mechanisms/Shoulder.java @@ -150,6 +150,8 @@ public void run() { SmartDashboard.putNumber("[SHOULDER] Target Rotations", targetRotations); SmartDashboard.putNumber( "[SHOULDER] Absolute Encoder Position", getAbsoluteEncoderPosition()); + SmartDashboard.putNumber( + "[SHOULDER] Absolute Encoder Frequency", absoluteEncoder.getFrequency()); SmartDashboard.putNumber( "[SHOULDER] Left Motor Supply Current", MotorUtil.getCurrentUsage(leftMotor)); SmartDashboard.putNumber(