moved in shooter
This commit is contained in:
@@ -1,7 +1,5 @@
|
|||||||
package org.firstinspires.ftc.teamcode.subsystems;
|
package org.firstinspires.ftc.teamcode.subsystems;
|
||||||
|
|
||||||
import static org.firstinspires.ftc.teamcode.constants.ShooterVars.*;
|
|
||||||
|
|
||||||
import com.acmerobotics.dashboard.telemetry.MultipleTelemetry;
|
import com.acmerobotics.dashboard.telemetry.MultipleTelemetry;
|
||||||
import com.acmerobotics.roadrunner.Pose2d;
|
import com.acmerobotics.roadrunner.Pose2d;
|
||||||
import com.arcrobotics.ftclib.controller.PIDController;
|
import com.arcrobotics.ftclib.controller.PIDController;
|
||||||
@@ -22,6 +20,8 @@ import java.util.Objects;
|
|||||||
public class Shooter implements Subsystem {
|
public class Shooter implements Subsystem {
|
||||||
private final DcMotorEx fly1;
|
private final DcMotorEx fly1;
|
||||||
private final DcMotorEx fly2;
|
private final DcMotorEx fly2;
|
||||||
|
|
||||||
|
private final DcMotorEx encoder;
|
||||||
private final Servo hoodServo;
|
private final Servo hoodServo;
|
||||||
|
|
||||||
private final Servo turret1;
|
private final Servo turret1;
|
||||||
@@ -50,9 +50,9 @@ public class Shooter implements Subsystem {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
private String shooterMode = "MANUAL";
|
private String shooterMode = "AUTO";
|
||||||
|
|
||||||
private String turretMode = "MANUAL";
|
private String turretMode = "AUTO";
|
||||||
|
|
||||||
|
|
||||||
public Shooter(Robot robot, MultipleTelemetry TELE) {
|
public Shooter(Robot robot, MultipleTelemetry TELE) {
|
||||||
@@ -78,6 +78,8 @@ public class Shooter implements Subsystem {
|
|||||||
|
|
||||||
this.turret2 = robot.turr2;
|
this.turret2 = robot.turr2;
|
||||||
|
|
||||||
|
this.encoder = robot.shooterEncoder;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -170,7 +172,7 @@ public class Shooter implements Subsystem {
|
|||||||
public void setTurretMode(String mode){ turretMode = mode;}
|
public void setTurretMode(String mode){ turretMode = mode;}
|
||||||
|
|
||||||
|
|
||||||
public void trackGoal(Pose2d robotPose, Pose2d goalPose, boolean shooterOn){
|
public double trackGoal(Pose2d robotPose, Pose2d goalPose, double offset){
|
||||||
|
|
||||||
fly1.setMode(DcMotor.RunMode.RUN_USING_ENCODER);
|
fly1.setMode(DcMotor.RunMode.RUN_USING_ENCODER);
|
||||||
fly2.setMode(DcMotor.RunMode.RUN_USING_ENCODER);
|
fly2.setMode(DcMotor.RunMode.RUN_USING_ENCODER);
|
||||||
@@ -180,7 +182,7 @@ public class Shooter implements Subsystem {
|
|||||||
Pose2d deltaPose = new Pose2d(
|
Pose2d deltaPose = new Pose2d(
|
||||||
goalPose.position.x - robotPose.position.x,
|
goalPose.position.x - robotPose.position.x,
|
||||||
goalPose.position.y - robotPose.position.y,
|
goalPose.position.y - robotPose.position.y,
|
||||||
goalPose.heading.toDouble() - robotPose.heading.toDouble()
|
goalPose.heading.toDouble() - (robotPose.heading.toDouble())
|
||||||
);
|
);
|
||||||
|
|
||||||
double distance = Math.sqrt(
|
double distance = Math.sqrt(
|
||||||
@@ -189,42 +191,65 @@ public class Shooter implements Subsystem {
|
|||||||
+ Poses.relativeGoalHeight * Poses.relativeGoalHeight
|
+ Poses.relativeGoalHeight * Poses.relativeGoalHeight
|
||||||
);
|
);
|
||||||
|
|
||||||
|
telemetry.addData("dst", distance);
|
||||||
|
|
||||||
double shooterPow = getPowerByDist(distance);
|
double shooterPow = getPowerByDist(distance);
|
||||||
|
|
||||||
double hoodAngle = getAngleByDist(distance);
|
double hoodAngle = getAngleByDist(distance);
|
||||||
|
|
||||||
if (shooterOn){
|
|
||||||
|
|
||||||
fly1.setVelocity(shooterPow);
|
// hoodServo.setPosition(hoodAngle);
|
||||||
fly2.setPower(fly1.getPower());
|
|
||||||
|
|
||||||
} else {
|
moveTurret(getTurretPosByDeltaPose(deltaPose, offset));
|
||||||
fly1.setPower(0);
|
|
||||||
fly2.setPower(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
hoodServo.setPosition(hoodAngle);
|
return distance;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//0.9974 * 355
|
||||||
|
|
||||||
moveTurret(getTurretPosByDeltaPose(deltaPose));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getTurretPosByDeltaPose (Pose2d dPose){
|
public double getTurretPosByDeltaPose (Pose2d dPose, double offset){
|
||||||
|
|
||||||
double deltaAngle = Math.toDegrees(dPose.heading.toDouble());
|
double deltaAngle = Math.toDegrees(dPose.heading.toDouble());
|
||||||
|
|
||||||
|
|
||||||
if (deltaAngle < -180) {
|
double aTanAngle = Math.toDegrees(Math.atan(dPose.position.y/dPose.position.x));
|
||||||
deltaAngle +=360;
|
|
||||||
|
telemetry.addData("deltaAngle", deltaAngle);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (deltaAngle > 90) {
|
||||||
|
deltaAngle -=360;
|
||||||
}
|
}
|
||||||
|
|
||||||
deltaAngle /= (turret_GearRatio*turret_Range);
|
|
||||||
|
|
||||||
return (0.5+deltaAngle) ;
|
|
||||||
|
// deltaAngle += aTanAngle;
|
||||||
|
|
||||||
|
deltaAngle /= (335);
|
||||||
|
|
||||||
|
telemetry.addData("dAngle", deltaAngle);
|
||||||
|
|
||||||
|
telemetry.addData("AtanAngle", aTanAngle);
|
||||||
|
|
||||||
|
|
||||||
|
return ((0.30-deltaAngle) + offset);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//62, 0.44
|
||||||
|
|
||||||
|
//56.5, 0.5
|
||||||
|
|
||||||
|
|
||||||
public double getPowerByDist(double dist){
|
public double getPowerByDist(double dist){
|
||||||
|
|
||||||
//TODO: ADD LOGIC
|
//TODO: ADD LOGIC
|
||||||
@@ -233,11 +258,20 @@ public class Shooter implements Subsystem {
|
|||||||
|
|
||||||
public double getAngleByDist(double dist){
|
public double getAngleByDist(double dist){
|
||||||
|
|
||||||
//TODO: ADD LOGIC
|
|
||||||
return dist;
|
double newDist = dist - 56.5;
|
||||||
|
|
||||||
|
double pos = newDist*((0.44-0.5)/(62-56.5)) + 0.46;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void setTelemetryOn(boolean state){telemetryOn = state;}
|
public void setTelemetryOn(boolean state){telemetryOn = state;}
|
||||||
|
|
||||||
public void moveTurret(double pos){
|
public void moveTurret(double pos){
|
||||||
@@ -262,9 +296,16 @@ public class Shooter implements Subsystem {
|
|||||||
fly1.setMode(DcMotor.RunMode.RUN_USING_ENCODER);
|
fly1.setMode(DcMotor.RunMode.RUN_USING_ENCODER);
|
||||||
fly2.setMode(DcMotor.RunMode.RUN_USING_ENCODER);
|
fly2.setMode(DcMotor.RunMode.RUN_USING_ENCODER);
|
||||||
|
|
||||||
|
fly1.setVelocity(velocity);
|
||||||
|
|
||||||
|
fly2.setPower(fly1.getPower());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fly1.setVelocity(velocity, AngleUnit.DEGREES);
|
|
||||||
fly2.setVelocity(velocity, AngleUnit.DEGREES);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (Objects.equals(shooterMode, "POS")){
|
else if (Objects.equals(shooterMode, "POS")){
|
||||||
@@ -279,7 +320,7 @@ public class Shooter implements Subsystem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (Objects.equals(turretMode, "MANUAL")){
|
if (Objects.equals(turretMode, "MANUAL")){
|
||||||
hoodServo.setPosition(hoodPos);
|
// hoodServo.setPosition(hoodPos);
|
||||||
|
|
||||||
moveTurret(turretPos);
|
moveTurret(turretPos);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user