From c303962469198a4814167aee9c48b74eb69afcc5 Mon Sep 17 00:00:00 2001 From: Cal Kestis Date: Thu, 15 Feb 2024 13:10:49 -0800 Subject: [PATCH] FtcRobotController v9.1 --- .../src/main/AndroidManifest.xml | 4 +- .../external/samples/ConceptAprilTag.java | 1 + .../ConceptTensorFlowObjectDetection.java | 1 + .../external/samples/SensorDigitalTouch.java | 78 +++++++++++++++++++ README.md | 39 ++++++++++ build.dependencies.gradle | 18 ++--- 6 files changed, 130 insertions(+), 11 deletions(-) create mode 100644 FtcRobotController/src/main/java/org/firstinspires/ftc/robotcontroller/external/samples/SensorDigitalTouch.java diff --git a/FtcRobotController/src/main/AndroidManifest.xml b/FtcRobotController/src/main/AndroidManifest.xml index 2161185c7686..24ef7b24c749 100644 --- a/FtcRobotController/src/main/AndroidManifest.xml +++ b/FtcRobotController/src/main/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="53" + android:versionName="9.1"> diff --git a/FtcRobotController/src/main/java/org/firstinspires/ftc/robotcontroller/external/samples/ConceptAprilTag.java b/FtcRobotController/src/main/java/org/firstinspires/ftc/robotcontroller/external/samples/ConceptAprilTag.java index a2cb372e08df..b6aa4e562ae0 100644 --- a/FtcRobotController/src/main/java/org/firstinspires/ftc/robotcontroller/external/samples/ConceptAprilTag.java +++ b/FtcRobotController/src/main/java/org/firstinspires/ftc/robotcontroller/external/samples/ConceptAprilTag.java @@ -29,6 +29,7 @@ package org.firstinspires.ftc.robotcontroller.external.samples; +import android.util.Size; import com.qualcomm.robotcore.eventloop.opmode.Disabled; import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode; import com.qualcomm.robotcore.eventloop.opmode.TeleOp; diff --git a/FtcRobotController/src/main/java/org/firstinspires/ftc/robotcontroller/external/samples/ConceptTensorFlowObjectDetection.java b/FtcRobotController/src/main/java/org/firstinspires/ftc/robotcontroller/external/samples/ConceptTensorFlowObjectDetection.java index 014444ee8f4b..f8e36885072c 100644 --- a/FtcRobotController/src/main/java/org/firstinspires/ftc/robotcontroller/external/samples/ConceptTensorFlowObjectDetection.java +++ b/FtcRobotController/src/main/java/org/firstinspires/ftc/robotcontroller/external/samples/ConceptTensorFlowObjectDetection.java @@ -29,6 +29,7 @@ package org.firstinspires.ftc.robotcontroller.external.samples; +import android.util.Size; import com.qualcomm.robotcore.eventloop.opmode.Disabled; import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode; import com.qualcomm.robotcore.eventloop.opmode.TeleOp; diff --git a/FtcRobotController/src/main/java/org/firstinspires/ftc/robotcontroller/external/samples/SensorDigitalTouch.java b/FtcRobotController/src/main/java/org/firstinspires/ftc/robotcontroller/external/samples/SensorDigitalTouch.java new file mode 100644 index 000000000000..44c3ca9c500c --- /dev/null +++ b/FtcRobotController/src/main/java/org/firstinspires/ftc/robotcontroller/external/samples/SensorDigitalTouch.java @@ -0,0 +1,78 @@ +/* Copyright (c) 2024 FIRST. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted (subject to the limitations in the disclaimer below) provided that + * the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this list + * of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * Neither the name of FIRST nor the names of its contributors may be used to endorse or + * promote products derived from this software without specific prior written permission. + * + * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS + * LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.firstinspires.ftc.robotcontroller.external.samples; + +import com.qualcomm.robotcore.eventloop.opmode.Disabled; +import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode; +import com.qualcomm.robotcore.eventloop.opmode.TeleOp; +import com.qualcomm.robotcore.hardware.DigitalChannel; + +/* + * This OpMode demonstrates how to use a digital channel. + * + * The OpMode assumes that the digital channel is configured with a name of "digitalTouch". + * + * Use Android Studio to Copy this Class, and Paste it into your team's code folder with a new name. + * Remove or comment out the @Disabled line to add this OpMode to the Driver Station OpMode list. + */ +@TeleOp(name = "Sensor: digital channel", group = "Sensor") +@Disabled +public class SensorDigitalTouch extends LinearOpMode { + DigitalChannel digitalTouch; // Digital channel Object + + @Override + public void runOpMode() { + + // get a reference to our touchSensor object. + digitalTouch = hardwareMap.get(DigitalChannel.class, "digitalTouch"); + + digitalTouch.setMode(DigitalChannel.Mode.INPUT); + telemetry.addData("DigitalTouchSensorExample", "Press start to continue..."); + telemetry.update(); + + // wait for the start button to be pressed. + waitForStart(); + + // while the OpMode is active, loop and read the digital channel. + // Note we use opModeIsActive() as our loop condition because it is an interruptible method. + while (opModeIsActive()) { + + // button is pressed if value returned is LOW or false. + // send the info back to driver station using telemetry function. + if (digitalTouch.getState() == false) { + telemetry.addData("Button", "PRESSED"); + } else { + telemetry.addData("Button", "NOT PRESSED"); + } + + telemetry.update(); + } + } +} diff --git a/README.md b/README.md index 9b7c9bfa67f3..2e5ef29f686a 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,45 @@ The readme.md file located in the [/TeamCode/src/main/java/org/firstinspires/ftc # Release Information +## Version 9.1 (20240215-115542) + +### Enhancements +* Fixes a problem with Blocks: if the user closes a Block's warning balloon, it will still be closed next time the project is opened in the Blocks editor. +* In the Blocks editor, an alert concerning missing hardware devices is not shown if all the Blocks that use the missing hardware devices are disabled. +* Adds Blocks to support comparing property values CRServo.Direction, DCMotor.Direction, DCMotor.Mode, DCMotor.ZeroPowerBehavior, DigitalChannel.Mode, GyroSensor.HeadingMode, IrSeekerSensor.Mode, and Servo.Direction, to the corresponding enum Block. +* Improves OnBotJava auto-import to correctly import classes when used in certain situations. +* Improves OnBotJava autocomplete to provide better completion options in most cases. + * This fixes an issue where autocomplete would fail if a method with two or more formal parameters was defined. +* In OnBotJava, code folding support was added to expand and collapse code sections +* In OnBotJava, the copyright header is now automatically collapsed loading new files +* For all Blocks OpMode samples, intro comments have been moved to the RunOpMode comment balloon. +* The Clean up Blocks command in the Blocks editor now positions function Blocks so their comment balloons don't overlap other function Blocks. +* Added Blocks OpMode sample SensorTouch. +* Added Java OpMode sample SensorDigitalTouch. +* Several improvements to VisionPortal + * Adds option to control whether the stream is automatically started following a `.build()` call on a VisionPortal Builder + * Adds option to control whether the vision processing statistics overlay is rendered or not + * VisionPortals now implement the `CameraStreamSource` interface, allowing multiportal users to select which portal is routed to the DS in INIT by calling CameraStreamServer.getInstance().setSource(visionPortal). Can be selected via gamepad, between Camera Stream sessions. + * Add option to `AprilTagProcessor` to suppress calibration warnings + * Improves camera calibration warnings + * If a calibration is scaled, the resolution it was scaled from will be listed + * If calibrations exist with the wrong aspect ratio, the calibrated resolutions will be listed + * Fixes race condition which caused app crash when calling `stopStreaming()` immediately followed by `close()` on a VisionPortal + * Fixes IllegalStateException when calling `stopStreaming()` immediately after building a VisionPortal + * Added FTC Blocks counterparts to new Java methods: + * VisionPortal.Builder.setAutoStartStreamOnBuild + * VisionPortal.Builder.setShowStatsOverlay + * AprilTagProcessor.Builder.setSuppressCalibrationWarnings + * CameraStreamServer.setSource​ + +### Bug Fixes +* Fixes a problem where OnBotJava does not apply font size settings to the editor. +* Updates EasyOpenCV dependency to v1.7.1 + * Fixes inability to use EasyOpenCV CameraFactory in OnBotJava + * Fixes entire RC app crash when user pipeline throws an exception + * Fixes entire RC app crash when user user canvas annotator throws an exception + * Use the modern stacktrace display when handling user exceptions instead of the legacy ESTOP telemetry message + ## Version 9.0.1 (20230929-083754) ### Enhancements diff --git a/build.dependencies.gradle b/build.dependencies.gradle index c6f1ebd43ff1..725fe52591b6 100644 --- a/build.dependencies.gradle +++ b/build.dependencies.gradle @@ -4,15 +4,15 @@ repositories { } dependencies { - implementation 'org.firstinspires.ftc:Inspection:9.0.1' - implementation 'org.firstinspires.ftc:Blocks:9.0.1' - implementation 'org.firstinspires.ftc:Tfod:9.0.1' - implementation 'org.firstinspires.ftc:RobotCore:9.0.1' - implementation 'org.firstinspires.ftc:RobotServer:9.0.1' - implementation 'org.firstinspires.ftc:OnBotJava:9.0.1' - implementation 'org.firstinspires.ftc:Hardware:9.0.1' - implementation 'org.firstinspires.ftc:FtcCommon:9.0.1' - implementation 'org.firstinspires.ftc:Vision:9.0.1' + implementation 'org.firstinspires.ftc:Inspection:9.1.0' + implementation 'org.firstinspires.ftc:Blocks:9.1.0' + implementation 'org.firstinspires.ftc:Tfod:9.1.0' + implementation 'org.firstinspires.ftc:RobotCore:9.1.0' + implementation 'org.firstinspires.ftc:RobotServer:9.1.0' + implementation 'org.firstinspires.ftc:OnBotJava:9.1.0' + implementation 'org.firstinspires.ftc:Hardware:9.1.0' + implementation 'org.firstinspires.ftc:FtcCommon:9.1.0' + implementation 'org.firstinspires.ftc:Vision:9.1.0' implementation 'org.firstinspires.ftc:gameAssets-CenterStage:1.0.0' implementation 'org.tensorflow:tensorflow-lite-task-vision:0.4.3' runtimeOnly 'org.tensorflow:tensorflow-lite:2.12.0'