Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Robot Autonomous Code Generator (python)
- -----
- # request dimensions from user
- try:
- length = float(input("Please enter length of patrol zone in feet: "))
- # return error if not give a number
- except ValueError:
- print("Invalid input, please enter a number.")
- if length != 0:
- width = float(input("Please enter width of patrol zone in feet: "))
- # multiply length in feet by 400 to give us motor steps needed to go that distance
- length_steps = length * 400
- # convert that float to a string
- length_steps_string = str(length_steps)
- # multiply width by 400 then divide by 467 to give us the number of cycles needed to cover the entire area
- width_steps = width * 400 / 467
- # round this number to the closest one to ensure we can use it for our loop
- round_width_steps = round(width_steps)
- # convert this number to a string
- width_steps_string = str(round_width_steps)
- # template robot code to use parameters, works for all rectrangular areas
- template_code = ' \n \n Here is your generated code: \n \n package org.firstinspires.ftc.teamcode; \n \n import com.qualcomm.hardware.rev.RevHubOrientationOnRobot; \n import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode; \n import com.qualcomm.robotcore.eventloop.opmode.TeleOp;\n import com.qualcomm.robotcore.hardware.DcMotor; \n import com.qualcomm.robotcore.hardware.IMU; \n import org.firstinspires.ftc.robotcore.external.navigation.AngleUnit; \n import org.firstinspires.ftc.robotcore.external.navigation.AxesOrder; \n import org.firstinspires.ftc.robotcore.external.navigation.AxesReference; \n import org.firstinspires.ftc.robotcore.external.navigation.Orientation; \n @TeleOp(name = "RealPatrolAutoEx (Blocks to Java)") \n public class RealPatrolAutoEx extends LinearOpMode { \n private IMU imu_IMU; \n private DcMotor frontRight; \n private DcMotor backRight; \n private DcMotor leftRear; \n private DcMotor leftFront; \n \n @Override \n public void runOpMode() { \n imu_IMU = hardwareMap.get(IMU.class, "imu"); \n frontRight = hardwareMap.get(DcMotor.class, "frontRight"); \n Intake = hardwareMap.get(DcMotor.class. "Intake"); \n backRight = hardwareMap.get(DcMotor.class, "backRight"); \n leftRear = hardwareMap.get(DcMotor.class, "leftRear"); \n leftFront = hardwareMap.get(DcMotor.class, "leftFront"); \n \n waitForStart(); \n \n if (opModeIsActive()) { \n for (int count = 0; count < times; count++) { \n telemetry.update(); \n for(;;) { \n Intake.setPower(0.4) \n } \n frontRight.setMode(DcMotor.RunMode.RUN_USING_ENCODER); \n frontRight.setMode(DcMotor.RunMode.STOP_AND_RESET_ENCODER); \n frontRight.setTargetPosition(length); \n while (!(frontRight.getCurrentPosition() >= frontRight.getTargetPosition())) { \n backRight.setPower(0.5); \n frontRight.setPower(0.5); \n leftRear.setPower(-0.5); \n leftFront.setPower(-0.5); \n } \n leftRear.setPower(0); \n leftFront.setPower(0); \n backRight.setPower(0); \n frontRight.setPower(0); \n frontRight.setMode(DcMotor.RunMode.STOP_AND_RESET_ENCODER); \n while (!(IMU.getAxisX == 90)) { \n leftFront.setPower(1); \n frontRight.setPower(-1); \n leftRear.setPower(1); \n backRight.setPower(-1); \n sleep(1000); \n leftFront.setPower(1); \n frontRight.setPower(1); \n leftRear.setPower(1); \n backRight.setPower(1); \n sleep(1000); \n leftFront.setPower(-1); \n frontRight.setPower(-1); \n leftRear.setPower(-1); \n backRight.setPower(-1); \n sleep(1000); \n } \n leftRear.setPower(0); \n leftFront.setPower(0); \n backRight.setPower(0); \n frontRight.setPower(0); \n frontRight.setMode(DcMotor.RunMode.STOP_AND_RESET_ENCODER); \n frontRight.setTargetPosition(467); \n while (!(frontRight.getCurrentPosition() >= frontRight.getTargetPosition())) { \n backRight.setPower(0.5); \n frontRight.setPower(0.5); \n leftRear.setPower(-0.5); \n leftFront.setPower(-0.5); \n } \n IMU.GetAxisX = 0; \n while (!(IMU.GetAxisX == 90)) { \n leftFront.setPower(1); \n frontRight.setPower(-1); \n leftRear.setPower(1); \n backRight.setPower(-1); \n sleep(1000); \n leftFront.setPower(1); \n frontRight.setPower(1); \n leftRear.setPower(1); \n backRight.setPower(1); \n sleep(1000); \n leftFront.setPower(-1); \n frontRight.setPower(-1); \n leftRear.setPower(-1); \n backRight.setPower(-1); \n sleep(1000); \n } \n backRight.setPower(0); \n frontRight.setPower(0); \n leftRear.setPower(0); \n leftFront.setPower(0); \n } \n } \n } \n } \n '
- # add our parameters to the code
- length_code = template_code.replace("length", length_steps_string)
- final_code = length_code.replace("times", width_steps_string)
- # print the final product
- print(final_code)
- -----
- Robot Tele-Op Mode (java)
- -----
- //import packages and modules
- 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;
- @TeleOp(name = "TH EcoGolfer Tele-Op")
- public class noomnitank extends LinearOpMode {
- //configure motors
- private DcMotor leftRear;
- private DcMotor leftFront;
- private DcMotor LeftIntake;
- private DcMotor RightIntake;
- private DcMotor frontRight;
- private DcMotor backRight;
- @Override
- public void runOpMode() {
- leftRear = hardwareMap.get(DcMotor.class, "leftRear");
- leftFront = hardwareMap.get(DcMotor.class, "leftFront");
- LeftIntake = hardwareMap.get(DcMotor.class, "LeftIntake");
- RightIntake = hardwareMap.get(DcMotor.class, "RightIntake");
- frontRight = hardwareMap.get(DcMotor.class, "frontRight");
- backRight = hardwareMap.get(DcMotor.class, "backRight");
- // reverse left motors
- leftRear.setDirection(DcMotorSimple.Direction.REVERSE);
- leftFront.setDirection(DcMotorSimple.Direction.REVERSE);
- waitForStart();
- if (opModeIsActive())
- while (opModeIsActive()) {
- //turn on intake motors
- if (opModeIsActive()) {
- LeftIntake.setPower(0.4);
- RightIntake.setPower(-0.4);
- }
- //if stick up, go forward
- if (gamepad2.left_stick_y > 0.1) {
- leftFront.setPower(-1);
- frontRight.setPower(-1);
- leftRear.setPower(-1);
- backRight.setPower(-1);
- } else {
- //if stick down, go backward
- if (gamepad2.left_stick_y < -0.1) {
- leftFront.setPower(1);
- frontRight.setPower(1);
- leftRear.setPower(1);
- backRight.setPower(1);
- } else {
- //if stick right, turn right
- if (gamepad2.left_stick_x > 0.1) {
- for (int count = 0; count < 1; count++) {
- leftFront.setPower(1);
- frontRight.setPower(-1);
- leftRear.setPower(1);
- backRight.setPower(-1);
- }
- } else {
- //if stick left, turn left
- } else {
- if (gamepad2.left_stick_x < -0.1) {
- leftFront.setPower(-1);
- frontRight.setPower(1);
- leftRear.setPower(-1);
- backRight.setPower(1);
- //if no direction is being held, stop the drive mototrs
- } else {
- leftFront.setPower(0);
- frontRight.setPower(0);
- leftRear.setPower(0);
- backRight.setPower(0);
- }
- }
- }
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment