7 Commits

Author SHA1 Message Date
9d71ef670c Merge remote-tracking branch 'origin/Branch-Yixuan' into Branch-Yixuan 2024-04-19 21:40:35 -07:00
a9ebe79e01 Added motors array 2024-04-19 21:40:22 -07:00
5d99d94430 I type 2024-03-26 16:16:22 -07:00
d77067538a I type 2024-03-26 15:50:01 -07:00
bf1b45618e I type 2024-03-19 16:31:35 -07:00
1da45a36c6 Merge pull request #941 from FIRST-Tech-Challenge/20240215-115542-release-candidate
FtcRobotController v9.1
2024-02-16 14:13:01 -08:00
c303962469 FtcRobotController v9.1 2024-02-15 13:10:49 -08:00
8 changed files with 270 additions and 11 deletions

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:versionCode="52"
android:versionName="9.0.1">
android:versionCode="53"
android:versionName="9.1">
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

View File

@ -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;

View File

@ -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;

View File

@ -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();
}
}
}

View File

@ -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

View File

@ -0,0 +1,41 @@
package org.firstinspires.ftc.teamcode;
import com.qualcomm.robotcore.hardware.DcMotor;
import com.qualcomm.robotcore.hardware.DcMotorSimple;
public class MovementLibrary {
public static void setDirectionForward(DcMotor rhw, DcMotor rlw, DcMotor lhw, DcMotor llw){
rhw.setDirection(DcMotor.Direction.REVERSE);
rlw.setDirection(DcMotor.Direction.FORWARD);
lhw.setDirection(DcMotorSimple.Direction.FORWARD);
llw.setDirection(DcMotorSimple.Direction.REVERSE);}
public static void setDirectionBackward(DcMotor rhw, DcMotor rlw, DcMotor lhw, DcMotor llw){
rhw.setDirection(DcMotor.Direction.FORWARD);
rlw.setDirection(DcMotor.Direction.REVERSE);
lhw.setDirection(DcMotorSimple.Direction.REVERSE);
llw.setDirection(DcMotorSimple.Direction.FORWARD);
}
public static void setSpeed (double speedValue,DcMotor rhw, DcMotor rlw, DcMotor lhw, DcMotor llw){
rhw.setPower(speedValue);
rlw.setPower(speedValue);
llw.setPower(speedValue);
lhw.setPower(speedValue);
}
public static void setDirectionRight(DcMotor rhw, DcMotor rlw, DcMotor lhw, DcMotor llw){
rhw.setDirection(DcMotor.Direction.REVERSE);
rlw.setDirection(DcMotor.Direction.REVERSE);
lhw.setDirection(DcMotorSimple.Direction.FORWARD);
llw.setDirection(DcMotorSimple.Direction.FORWARD);
}
public static void setDirectionLeft(DcMotor rhw, DcMotor rlw, DcMotor lhw, DcMotor llw){
rhw.setDirection(DcMotor.Direction.FORWARD);
rlw.setDirection(DcMotor.Direction.FORWARD);
lhw.setDirection(DcMotorSimple.Direction.REVERSE);
llw.setDirection(DcMotorSimple.Direction.REVERSE);
}
}

View File

@ -0,0 +1,99 @@
package org.firstinspires.ftc.teamcode;
import static java.lang.Math.round;
import com.qualcomm.robotcore.eventloop.opmode.Autonomous;
import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode;
import com.qualcomm.robotcore.eventloop.opmode.TeleOp;
import com.qualcomm.robotcore.hardware.AnalogSensor;
import com.qualcomm.robotcore.hardware.ColorSensor;
import com.qualcomm.robotcore.hardware.DcMotor;
import com.qualcomm.robotcore.hardware.DcMotorSimple;
import com.qualcomm.robotcore.hardware.DistanceSensor;
import com.qualcomm.robotcore.hardware.TouchSensor;
import org.firstinspires.ftc.teamcode.MovementLibrary;
import org.firstinspires.ftc.robotcore.external.navigation.DistanceUnit;
import java.util.ArrayList;
import java.util.List;
@Autonomous(name="Name")
public class Name extends LinearOpMode {
private DcMotor rightHandWheel;
private DcMotor rightLegWheel;
private DcMotor leftHandWheel;
private DcMotor leftLegWheel;
private TouchSensor touchSensor;
private DistanceSensor distanceSensor;
private ColorSensor colorSensor;
@Override
public void runOpMode() throws InterruptedException {
rightHandWheel = hardwareMap.get(DcMotor.class,"right hand wheel");
rightLegWheel = hardwareMap.get(DcMotor.class,"right leg wheel");
leftHandWheel = hardwareMap.get(DcMotor.class, "left hand wheel");
leftLegWheel = hardwareMap.get(DcMotor.class, "left leg wheel");
touchSensor = hardwareMap.get(TouchSensor.class, "touchsensor");
distanceSensor = hardwareMap.get(DistanceSensor.class , "distancesensor");
colorSensor= hardwareMap.get(ColorSensor.class , "colorsensor");
DcMotor[] motors = {rightHandWheel, leftHandWheel, rightLegWheel, leftLegWheel};
MovementLibrary.setDirectionForward(rightHandWheel, rightLegWheel, leftHandWheel,leftLegWheel);
//from this
DcMotor[] motors = {rightHandWheel, leftHandWheel, rightLegWheel, leftLegWheel};
//thismotors
MovementLibrary.setDirectionForward(motors);
// Wait for the game to start (driver presses {Play
waitForStart();
// Wait for the game to start (driver presses PLAY)
waitForStart();
while(opModeIsActive()){
/* telemetry.speak( "Oh see, you see" +
"By the dusk's late light" +
"What so proudly we rained" +
"At the twilight's last gleaming?" +
"Whose broad stripes and dark stars" +
"Through the perilous fight" +
"Under the ramparts we watched" +
"Were so gallantly, no, streaming?" +
"And the rockets' red glare" +
"The bombs contracting in air" +
"Gave proof through the night" +
"That our flag was not there" +
"O say, that star-spangled banner doesn't wave" +
"Over the land of the enslaved and the home of the cowardly");*/
MovementLibrary.setSpeed(0.2, rightHandWheel, rightLegWheel,leftHandWheel,leftLegWheel);
if(touchSensor.isPressed()) {
telemetry.speak("Ouchie that hurt me and my feelings");
telemetry.addData("was i triggered", touchSensor.isPressed());
}
double nicerValue = distanceSensor.getDistance(DistanceUnit.INCH);
telemetry.addData("you are this far (in inches) --> ", "%.2f", nicerValue);
telemetry.addData("green color value",colorSensor.green());
telemetry.addData("blue color value" ,colorSensor.blue());
telemetry.update();
if (colorSensor.blue() > 800 && colorSensor.green() > 1100) {
MovementLibrary.setSpeed(0.4, rightHandWheel, rightLegWheel,leftHandWheel,leftLegWheel);
}else {
MovementLibrary.setSpeed(0.2, rightHandWheel, rightLegWheel,leftHandWheel,leftLegWheel);
}
}
}
}

View File

@ -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'