Skip to content

Commit

Permalink
added branch sensors (#15)
Browse files Browse the repository at this point in the history
* added branch sensors

* created a generic get distance method for sensors, called it in get left and right sensor distance, should be ready to merge to main

* added branch sensors to Sensors file

* made a method only called in branchsensors private

---------

Co-authored-by: braelynandthefrogs <[email protected]>
Co-authored-by: braelynandthefrogs <[email protected]>
  • Loading branch information
3 people authored Jan 28, 2025
1 parent ce6fb59 commit 1e4e53a
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 1 deletion.
6 changes: 5 additions & 1 deletion src/main/java/frc/robot/Hardware.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,14 @@ public class Hardware {

// Swerve: 1-12

// elevator [20-29]
// elevator [20-24]
public static final int ELEVATOR_MOTOR_ONE = 20;
public static final int ELEVATOR_MOTOR_TWO = 21;

// branch sensors [25-29] (mounted on elevator)
public static final int BRANCH_SENSOR_LEFT = 25;
public static final int BRANCH_SENSOR_RIGHT = 26;

// arm pivot [30-34]
public static final int ARM_PIVOT_MOTOR_ID = 30;

Expand Down
8 changes: 8 additions & 0 deletions src/main/java/frc/robot/Sensors.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,18 @@
import static frc.robot.Sensors.SensorConstants.*;

import frc.robot.sensors.ArmSensor;
import frc.robot.sensors.BranchSensors;

public class Sensors {
public static class SensorConstants {
// <SENSOR>_ENABLED constants go here
public static final boolean ARMSENSOR_ENABLED = true;
public static final boolean BRANCHSENSORS_ENABLED = true;
}

// Sensors go here
public final ArmSensor armSensor;
public final BranchSensors branchSensors;

public Sensors() {
// Initialize subsystems here (don't forget to check if they're enabled!)
Expand All @@ -21,5 +24,10 @@ public Sensors() {
} else {
armSensor = null;
}
if (BRANCHSENSORS_ENABLED) {
branchSensors = new BranchSensors();
} else {
branchSensors = null;
}
}
}
48 changes: 48 additions & 0 deletions src/main/java/frc/robot/sensors/BranchSensors.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package frc.robot.sensors;

import static edu.wpi.first.units.Units.Millimeter;

import au.grapplerobotics.ConfigurationFailedException;
import au.grapplerobotics.LaserCan;
import edu.wpi.first.units.measure.Distance;
import frc.robot.Hardware;

public class BranchSensors {

private final LaserCan leftSensor;
private final LaserCan rightSensor;

public BranchSensors() {
leftSensor = new LaserCan(Hardware.BRANCH_SENSOR_LEFT);
rightSensor = new LaserCan(Hardware.BRANCH_SENSOR_RIGHT);
ConfigureSensor(leftSensor);
ConfigureSensor(rightSensor);
}

private void ConfigureSensor(LaserCan Sensor) {
try {
Sensor.setRangingMode(LaserCan.RangingMode.SHORT);
Sensor.setRegionOfInterest(new LaserCan.RegionOfInterest(8, 8, 16, 16));
Sensor.setTimingBudget(LaserCan.TimingBudget.TIMING_BUDGET_33MS);
} catch (ConfigurationFailedException e) {
System.out.println("Configuration Failed! " + e);
}
}

private Distance getSensorDistance(LaserCan sensor) {
LaserCan.Measurement measurement = sensor.getMeasurement();
if (measurement != null && measurement.status == LaserCan.LASERCAN_STATUS_VALID_MEASUREMENT) {
return Millimeter.of(measurement.distance_mm);
} else {
return Millimeter.of(10000);
}
}

public Distance getLeftSensorDistance() {
return getSensorDistance(leftSensor);
}

public Distance getRightSensorDistance() {
return getSensorDistance(rightSensor);
}
}

0 comments on commit 1e4e53a

Please sign in to comment.