Updated ftclib.

Fixed Limelight 3a support.
This commit is contained in:
Titan Robotics Club
2024-09-23 23:15:41 -07:00
parent 05b31a5514
commit 0de0e28927
5 changed files with 86 additions and 3 deletions

View File

@ -36,6 +36,7 @@ import ftclib.driverio.FtcGamepad;
import ftclib.driverio.FtcMenu; import ftclib.driverio.FtcMenu;
import ftclib.driverio.FtcValueMenu; import ftclib.driverio.FtcValueMenu;
import ftclib.robotcore.FtcPidCoeffCache; import ftclib.robotcore.FtcPidCoeffCache;
import ftclib.vision.FtcLimelightVision;
import teamcode.vision.Vision; import teamcode.vision.Vision;
import trclib.command.CmdDriveMotorsTest; import trclib.command.CmdDriveMotorsTest;
import trclib.command.CmdPidDrive; import trclib.command.CmdPidDrive;
@ -241,6 +242,12 @@ public class FtcTest extends FtcTeleOp
robot.globalTracer.traceInfo(moduleName, "Enabling BlueBlobVision."); robot.globalTracer.traceInfo(moduleName, "Enabling BlueBlobVision.");
robot.vision.setColorBlobVisionEnabled(Vision.ColorBlobType.BlueBlob, true); robot.vision.setColorBlobVisionEnabled(Vision.ColorBlobType.BlueBlob, true);
} }
if (robot.vision.limelightVision != null)
{
robot.globalTracer.traceInfo(moduleName, "Enabling LimelightVision.");
robot.vision.setLimelightVisionEnabled(0, true);
}
} }
break; break;
@ -1070,6 +1077,11 @@ public class FtcTest extends FtcTeleOp
{ {
robot.vision.getDetectedColorBlob(Vision.ColorBlobType.BlueBlob, lineNum++); robot.vision.getDetectedColorBlob(Vision.ColorBlobType.BlueBlob, lineNum++);
} }
if (robot.vision.limelightVision != null)
{
robot.vision.getLimelightDetectedObject(FtcLimelightVision.ResultType.Fiducial, null, lineNum++);
}
} }
} //doVisionTest } //doVisionTest

View File

@ -219,6 +219,12 @@ public class Robot
vision.setColorBlobVisionEnabled(Vision.ColorBlobType.BlueBlob, false); vision.setColorBlobVisionEnabled(Vision.ColorBlobType.BlueBlob, false);
} }
if (vision.limelightVision != null)
{
globalTracer.traceInfo(moduleName, "Disabling LimelightVision.");
vision.setLimelightVisionEnabled(0, false);
}
vision.close(); vision.close();
} }

View File

@ -144,7 +144,7 @@ public class RobotParams
public static final boolean showSubsystems = true; public static final boolean showSubsystems = true;
// Vision // Vision
public static final boolean useVision = false; public static final boolean useVision = false;
public static final boolean useWebCam = false; public static final boolean useWebCam = false; // false to use Android phone camera.
public static final boolean useBuiltinCamBack = false; // For Android Phone as Robot Controller. public static final boolean useBuiltinCamBack = false; // For Android Phone as Robot Controller.
public static final boolean tuneColorBlobVision = false; public static final boolean tuneColorBlobVision = false;
public static final boolean useAprilTagVision = false; public static final boolean useAprilTagVision = false;
@ -233,7 +233,7 @@ public class RobotParams
{ {
public LimelightParams() public LimelightParams()
{ {
camName = "limelight3a"; camName = "Limelight3a";
camImageWidth = 640; camImageWidth = 640;
camImageHeight = 480; camImageHeight = 480;
camXOffset = 0.0; // Inches to the right from robot center camXOffset = 0.0; // Inches to the right from robot center

View File

@ -611,6 +611,71 @@ public class Vision
return colorBlobInfo; return colorBlobInfo;
} //getDetectedColorBlob } //getDetectedColorBlob
/**
* This method enables/disables Limelight vision for the specified pipeline.
*
* @param pipelineIndex specifies the limelight pipeline index to be selected, ignore if disabled.
* @param enabled specifies true to enable, false to disable.
*/
public void setLimelightVisionEnabled(int pipelineIndex, boolean enabled)
{
if (limelightVision != null)
{
if (enabled)
{
limelightVision.setPipeline(pipelineIndex);
}
limelightVision.setVisionEnabled(enabled);
}
} //setLimelightVisionEnabled
/**
* This method checks if Limelight vision is enabled.
*
* @return true if enabled, false if disabled.
*/
public boolean isLimelightVisionEnabled()
{
return limelightVision != null && limelightVision.isVisionEnabled();
} //isLimelightVisionEnabled
/**
* This method calls Limelight vision to detect the object.
*
* @param resultType specifies the result type to look for.
* @param label specifies the detected object label, can be null to match any label.
* @param lineNum specifies the dashboard line number to display the detected object info, -1 to disable printing.
* @return detected Limelight object info.
*/
public TrcVisionTargetInfo<FtcLimelightVision.DetectedObject> getLimelightDetectedObject(
FtcLimelightVision.ResultType resultType, String label, int lineNum)
{
TrcVisionTargetInfo<FtcLimelightVision.DetectedObject> limelightInfo = null;
String objectName = null;
if (limelightVision != null)
{
limelightInfo = limelightVision.getBestDetectedTargetInfo(resultType, label, null);
if (limelightInfo != null)
{
objectName = limelightInfo.detectedObj.label;
}
}
if (objectName != null && robot.blinkin != null)
{
robot.blinkin.setDetectedPattern(objectName);
}
if (lineNum != -1)
{
robot.dashboard.displayPrintf(
lineNum, "%s: %s", objectName, limelightInfo != null? limelightInfo: "Not found.");
}
return limelightInfo;
} //getLimelightDetectedObject
/** /**
* This method returns the target Z offset from ground. * This method returns the target Z offset from ground.
* *