teste pente d'accélération dériver

This commit is contained in:
Samuel
2025-11-20 14:33:00 -05:00
parent 22271c8106
commit 688d393d35
2 changed files with 18 additions and 3 deletions

View File

@@ -67,8 +67,8 @@ public class AprilTag3 extends Command {
if(tagId ==8){ if(tagId ==8){
drivetrain.setControl(drive. drivetrain.setControl(drive.
withRotationalRate(tx/20). withRotationalRate(tx/20).
withVelocityX(2-botx). withVelocityX((2-limelight3.derive(botx))).
withVelocityY(2-botz)); withVelocityY(2-limelight3.derive(botz)));
} }
} }
else{ else{

View File

@@ -8,6 +8,7 @@ import edu.wpi.first.net.PortForwarder;
import edu.wpi.first.networktables.NetworkTable; import edu.wpi.first.networktables.NetworkTable;
import edu.wpi.first.networktables.NetworkTableEntry; import edu.wpi.first.networktables.NetworkTableEntry;
import edu.wpi.first.networktables.NetworkTableInstance; import edu.wpi.first.networktables.NetworkTableInstance;
import edu.wpi.first.wpilibj.Timer;
import edu.wpi.first.wpilibj2.command.SubsystemBase; import edu.wpi.first.wpilibj2.command.SubsystemBase;
import frc.robot.LimelightHelpers; import frc.robot.LimelightHelpers;
@@ -16,12 +17,26 @@ public class Limelight3 extends SubsystemBase {
NetworkTableEntry pipeline = table.getEntry("pipeline"); NetworkTableEntry pipeline = table.getEntry("pipeline");
/** Creates a new Limelight3. */ /** Creates a new Limelight3. */
public Limelight3() { public Limelight3() {
for(int port = 5800; port <=5807; port++){ for(int port = 5800; port <=5807; port++){
PortForwarder.add(port, "limelight.local", port); PortForwarder.add(port, "limelight.local", port);
} }
} }
double previousValue = 0;
double previousTime = Timer.getFPGATimestamp();
public double derive(double currentValue) {
double previousValue = 0;
double previousTime = Timer.getFPGATimestamp();
double now = Timer.getFPGATimestamp();
double dt = now - previousTime;
double derivative = (currentValue - previousValue) / dt;
previousValue = currentValue;
previousTime = now;
return derivative;
}
public double[] getTargetPose(){ public double[] getTargetPose(){
NetworkTable limelightTable = NetworkTableInstance.getDefault().getTable("limelight"); NetworkTable limelightTable = NetworkTableInstance.getDefault().getTable("limelight");
NetworkTableEntry targetPoseEntry = limelightTable.getEntry("targetpose_cameraspace"); NetworkTableEntry targetPoseEntry = limelightTable.getEntry("targetpose_cameraspace");
double[] targetPose = targetPoseEntry.getDoubleArray(new double[6]); double[] targetPose = targetPoseEntry.getDoubleArray(new double[6]);
return targetPose; return targetPose;