Compare commits
7 Commits
v9.0.1
...
Branch-Yix
Author | SHA1 | Date | |
---|---|---|---|
9d71ef670c | |||
a9ebe79e01 | |||
5d99d94430 | |||
d77067538a | |||
bf1b45618e | |||
1da45a36c6 | |||
c303962469 |
@ -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" />
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
39
README.md
39
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
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -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'
|
||||
|
Reference in New Issue
Block a user