forked from ftctechnh/ftc_app
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix gradle files and create drive system
- Loading branch information
1 parent
f5f8dbd
commit d823364
Showing
9 changed files
with
591 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -22,6 +22,8 @@ repositories { | |
flatDir { | ||
dirs '../libs' | ||
} | ||
google() | ||
jcenter() | ||
} | ||
|
||
apply from: 'build.release.gradle' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,8 @@ | ||
dependencies { | ||
compile (name:'Inspection-release', ext: 'aar') | ||
compile (name:'Blocks-release', ext: 'aar') | ||
compile (name:'RobotCore-release', ext: 'aar') | ||
compile (name:'Hardware-release', ext: 'aar') | ||
compile (name:'FtcCommon-release', ext: 'aar') | ||
compile (name:'WirelessP2p-release', ext:'aar') | ||
implementation (name:'Inspection-release', ext: 'aar') | ||
implementation (name:'Blocks-release', ext: 'aar') | ||
implementation (name:'RobotCore-release', ext: 'aar') | ||
implementation (name:'Hardware-release', ext: 'aar') | ||
implementation (name:'FtcCommon-release', ext: 'aar') | ||
implementation (name:'WirelessP2p-release', ext:'aar') | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
76 changes: 76 additions & 0 deletions
76
TeamCode/src/main/java/org/firstinspires/ftc/teamcode/Tele.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
package org.firstinspires.ftc.teamcode; | ||
|
||
import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode; | ||
import com.qualcomm.robotcore.eventloop.opmode.TeleOp; | ||
import com.qualcomm.robotcore.hardware.DcMotor; | ||
import com.qualcomm.robotcore.hardware.DcMotorSimple; | ||
import com.qualcomm.robotcore.util.ElapsedTime; | ||
import com.qualcomm.robotcore.util.Range; | ||
|
||
import java.lang.Math; | ||
|
||
@TeleOp(name="TeleOp", group="Linear Opmode") | ||
public class Tele extends LinearOpMode { | ||
|
||
// Declare OpMode members. | ||
private ElapsedTime runtime = new ElapsedTime(); | ||
private DcMotor leftMotorFront = null; | ||
private DcMotor leftMotorBack = null; | ||
private DcMotor rightMotorFront = null; | ||
private DcMotor rightMotorBack = null; | ||
|
||
@Override | ||
public void runOpMode() { | ||
telemetry.addData("Status", "Initialized"); | ||
telemetry.update(); | ||
|
||
|
||
leftMotorFront = hardwareMap.get(DcMotor.class, "left_motor_front"); | ||
leftMotorBack = hardwareMap.get(DcMotor.class, "left_motor_back"); | ||
rightMotorFront = hardwareMap.get(DcMotor.class, "right_motor_front"); | ||
rightMotorBack = hardwareMap.get(DcMotor.class, "right_motor_back"); | ||
leftMotorFront.setDirection(DcMotor.Direction.REVERSE); | ||
leftMotorBack.setDirection(DcMotor.Direction.REVERSE); | ||
|
||
waitForStart(); | ||
runtime.reset(); | ||
|
||
while (opModeIsActive()) { | ||
//Stuff to display for Telemetry | ||
telemetry.addData("Left Motor Power", leftMotorFront.getPower()); | ||
telemetry.addData("Right Motor Power", rightMotorFront.getPower()); | ||
telemetry.update(); | ||
|
||
if (gamepad1.left_stick_y != 0 && gamepad1.right_stick_x == 0) { | ||
leftMotorFront.setPower(gamepad1.left_stick_y); | ||
leftMotorBack.setPower(gamepad1.left_stick_y); | ||
rightMotorFront.setPower(gamepad1.left_stick_y); | ||
rightMotorBack.setPower(gamepad1.left_stick_y); | ||
} | ||
if (gamepad1.right_stick_x != 0 && gamepad1.left_stick_y == 0) { | ||
leftMotorFront.setPower(-gamepad1.right_stick_x); | ||
leftMotorBack.setPower(-gamepad1.right_stick_x); | ||
rightMotorFront.setPower(gamepad1.right_stick_x); | ||
rightMotorBack.setPower(gamepad1.right_stick_x); | ||
} | ||
if (gamepad1.left_stick_y != 0 && gamepad1.right_stick_x > 0) { | ||
leftMotorFront.setPower(0); | ||
leftMotorBack.setPower(0); | ||
rightMotorFront.setPower(Math.abs(gamepad1.right_stick_x) + Math.abs(gamepad1.left_stick_y)/2); | ||
rightMotorBack.setPower(Math.abs(gamepad1.right_stick_x) + Math.abs(gamepad1.left_stick_y)/2); | ||
} | ||
if (gamepad1.left_stick_y != 0 && gamepad1.right_stick_x < 0) { | ||
leftMotorFront.setPower(Math.abs(gamepad1.right_stick_x) + Math.abs(gamepad1.left_stick_y)/2); | ||
leftMotorBack.setPower(Math.abs(gamepad1.right_stick_x) + Math.abs(gamepad1.left_stick_y)/2); | ||
rightMotorFront.setPower(0); | ||
rightMotorBack.setPower(0); | ||
} | ||
else { | ||
leftMotorFront.setPower(0); | ||
leftMotorBack.setPower(0); | ||
rightMotorFront.setPower(0); | ||
rightMotorBack.setPower(0); | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
186 changes: 186 additions & 0 deletions
186
TeamCode/src/main/java/org/firstinspires/ftc/teamcode/VuforiaID.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,186 @@ | ||
/* Copyright (c) 2017 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.teamcode; | ||
|
||
import com.qualcomm.robotcore.eventloop.opmode.Disabled; | ||
import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode; | ||
import com.qualcomm.robotcore.eventloop.opmode.TeleOp; | ||
|
||
import org.firstinspires.ftc.robotcontroller.external.samples.ConceptVuforiaNavigation; | ||
import org.firstinspires.ftc.robotcore.external.ClassFactory; | ||
import org.firstinspires.ftc.robotcore.external.matrices.OpenGLMatrix; | ||
import org.firstinspires.ftc.robotcore.external.matrices.VectorF; | ||
import org.firstinspires.ftc.robotcore.external.navigation.AngleUnit; | ||
import org.firstinspires.ftc.robotcore.external.navigation.AxesOrder; | ||
import org.firstinspires.ftc.robotcore.external.navigation.AxesReference; | ||
import org.firstinspires.ftc.robotcore.external.navigation.Orientation; | ||
import org.firstinspires.ftc.robotcore.external.navigation.RelicRecoveryVuMark; | ||
import org.firstinspires.ftc.robotcore.external.navigation.VuMarkInstanceId; | ||
import org.firstinspires.ftc.robotcore.external.navigation.VuforiaLocalizer; | ||
import org.firstinspires.ftc.robotcore.external.navigation.VuforiaTrackable; | ||
import org.firstinspires.ftc.robotcore.external.navigation.VuforiaTrackableDefaultListener; | ||
import org.firstinspires.ftc.robotcore.external.navigation.VuforiaTrackables; | ||
|
||
/** | ||
* This OpMode illustrates the basics of using the Vuforia engine to determine | ||
* the identity of Vuforia VuMarks encountered on the field. The code is structured as | ||
* a LinearOpMode. It shares much structure with {@link ConceptVuforiaNavigation}; we do not here | ||
* duplicate the core Vuforia documentation found there, but rather instead focus on the | ||
* differences between the use of Vuforia for navigation vs VuMark identification. | ||
* | ||
* @see ConceptVuforiaNavigation | ||
* @see VuforiaLocalizer | ||
* @see VuforiaTrackableDefaultListener | ||
* see ftc_app/doc/tutorial/FTC_FieldCoordinateSystemDefinition.pdf | ||
* | ||
* 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. | ||
* | ||
* IMPORTANT: In order to use this OpMode, you need to obtain your own Vuforia license key as | ||
* is explained in {@link ConceptVuforiaNavigation}. | ||
*/ | ||
|
||
@TeleOp(name="VuforiaID", group ="Concept") | ||
public class VuforiaID extends LinearOpMode { | ||
|
||
public static final String TAG = "Vuforia VuMark Sample"; | ||
|
||
OpenGLMatrix lastLocation = null; | ||
|
||
/** | ||
* {@link #vuforia} is the variable we will use to store our instance of the Vuforia | ||
* localization engine. | ||
*/ | ||
VuforiaLocalizer vuforia; | ||
|
||
@Override public void runOpMode() { | ||
|
||
/* | ||
* To start up Vuforia, tell it the view that we wish to use for camera monitor (on the RC phone); | ||
*/ | ||
int cameraMonitorViewId = hardwareMap.appContext.getResources().getIdentifier("cameraMonitorViewId", "id", hardwareMap.appContext.getPackageName()); | ||
VuforiaLocalizer.Parameters parameters = new VuforiaLocalizer.Parameters(cameraMonitorViewId); | ||
|
||
// OR... Do Not Activate the Camera Monitor View, to save power | ||
// VuforiaLocalizer.Parameters parameters = new VuforiaLocalizer.Parameters(); | ||
|
||
/* | ||
* IMPORTANT: You need to obtain your own license key to use Vuforia. The string below with which | ||
* 'parameters.vuforiaLicenseKey' is initialized is for illustration only, and will not function. | ||
* A Vuforia 'Development' license key, can be obtained free of charge from the Vuforia developer | ||
* web site at https://developer.vuforia.com/license-manager. | ||
* | ||
* Vuforia license keys are always 380 characters long, and look as if they contain mostly | ||
* random data. As an example, here is a example of a fragment of a valid key: | ||
* ... yIgIzTqZ4mWjk9wd3cZO9T1axEqzuhxoGlfOOI2dRzKS4T0hQ8kT ... | ||
* Once you've obtained a license key, copy the string from the Vuforia web site | ||
* and paste it in to your code on the next line, between the double quotes. | ||
*/ | ||
parameters.vuforiaLicenseKey = "AfDTG3b/////AAABmQnAWkqPDkVztdcIurPa8w5lO6BWlTpltO5r1m4s9oA9w3cfFdIBqJ4rjZB0We4YHcRMdc5LkWwOvJk+xcDr2VFpLP8m6zEqLWlrVNQvBnNxmGO8BeZ+xRQeQ34AgPhrqQQqeheWJbfoOn+lekIz2ZMm9f+j+1ng/X0vKDHyFGfxbtXbJuUx4Qh6E3t0esH0b3VQtbuJiOOTpWi9xFAqBsHWp+DQbwub+a6HZV5q42OabnOAyr0GZ7u1vJZs+I/Vlnf7qEMLD4RTIYA5OmMyzOdl5aikZqDSgG223ETSwcbwd3QFKewYE3oXXxkpI0vmsxCiaqBJ1oL9e6n0RXbC8Zdvn2VYwh6oSemcpp+fSjGa"; | ||
|
||
/* | ||
* We also indicate which camera on the RC that we wish to use. | ||
* Here we chose the back (HiRes) camera (for greater range), but | ||
* for a competition robot, the front camera might be more convenient. | ||
*/ | ||
parameters.cameraDirection = VuforiaLocalizer.CameraDirection.BACK; | ||
|
||
/** | ||
* Instantiate the Vuforia engine | ||
*/ | ||
vuforia = ClassFactory.getInstance().createVuforia(parameters); | ||
|
||
|
||
/** | ||
* Load the data set containing the VuMarks for Relic Recovery. There's only one trackable | ||
* in this data set: all three of the VuMarks in the game were created from this one template, | ||
* but diffaer in their instance id information. | ||
* @see VuMarkInstanceId | ||
*/ | ||
VuforiaTrackables relicTrackables = this.vuforia.loadTrackablesFromAsset("RelicVuMark"); | ||
VuforiaTrackable relicTemplate = relicTrackables.get(0); | ||
relicTemplate.setName("relicVuMarkTemplate"); // can help in debugging; otherwise not necessary | ||
|
||
telemetry.addData(">", "Press Play to start"); | ||
telemetry.update(); | ||
waitForStart(); | ||
|
||
relicTrackables.activate(); | ||
|
||
while (opModeIsActive()) { | ||
|
||
/** | ||
* See if any of the instances of {@link relicTemplate} are currently visible. | ||
* {@link RelicRecoveryVuMark} is an enum which can have the following values: | ||
* UNKNOWN, LEFT, CENTER, and RIGHT. When a VuMark is visible, something other than | ||
* UNKNOWN will be returned by {@link RelicRecoveryVuMark#from(VuforiaTrackable)}. | ||
*/ | ||
RelicRecoveryVuMark vuMark = RelicRecoveryVuMark.from(relicTemplate); | ||
if (vuMark != RelicRecoveryVuMark.UNKNOWN) { | ||
|
||
/* Found an instance of the template. In the actual game, you will probably | ||
* loop until this condition occurs, then move on to act accordingly depending | ||
* on which VuMark was visible. */ | ||
telemetry.addData("VuMark", "%s visible", vuMark); | ||
|
||
/* For fun, we also exhibit the navigational pose. In the Relic Recovery game, | ||
* it is perhaps unlikely that you will actually need to act on this pose information, but | ||
* we illustrate it nevertheless, for completeness. */ | ||
OpenGLMatrix pose = ((VuforiaTrackableDefaultListener)relicTemplate.getListener()).getPose(); | ||
telemetry.addData("Pose", format(pose)); | ||
|
||
/* We further illustrate how to decompose the pose into useful rotational and | ||
* translational components */ | ||
if (pose != null) { | ||
VectorF trans = pose.getTranslation(); | ||
Orientation rot = Orientation.getOrientation(pose, AxesReference.EXTRINSIC, AxesOrder.XYZ, AngleUnit.DEGREES); | ||
|
||
// Extract the X, Y, and Z components of the offset of the target relative to the robot | ||
double tX = trans.get(0); | ||
double tY = trans.get(1); | ||
double tZ = trans.get(2); | ||
|
||
// Extract the rotational components of the target relative to the robot | ||
double rX = rot.firstAngle; | ||
double rY = rot.secondAngle; | ||
double rZ = rot.thirdAngle; | ||
} | ||
} | ||
else { | ||
telemetry.addData("VuMark", "not visible"); | ||
} | ||
|
||
telemetry.update(); | ||
} | ||
} | ||
|
||
String format(OpenGLMatrix transformationMatrix) { | ||
return (transformationMatrix != null) ? transformationMatrix.formatAsTransform() : "null"; | ||
} | ||
} |
Oops, something went wrong.