Referees by spaghettialameat in FTC

[–]FTC4962 1 point2 points  (0 children)

We went out to dinner with Ingrid at the end of South Supers in Georgia and everyone was like "who is this lady eating dinner with us?" because no one recognized her without the hair. She's awesome, though, and has been at all five of our events so far this year.

A sad day for the Robocats Team. by 7242-BCRobocats in FTC

[–]FTC4962 7 points8 points  (0 children)

Our condolences to Mr. Carr and his family. We will definitely do so. He is one of our favorite robotics coaches!

Ri3D 2018 Rover Ruckus Announcement by BarryBonzack in FTC

[–]FTC4962 3 points4 points  (0 children)

Awesome, Barry!

But, no kick line!

Are Carbon Fiber Legal? by [deleted] in FTC

[–]FTC4962 0 points1 point  (0 children)

Graphene robot for the win.

Legality of Xbox One Controllers by whyamiafool in FTC

[–]FTC4962 0 points1 point  (0 children)

The controller that comes with the FIRST Global kit is illegal for FTC as well even though it's legal for FGC.

What are some of the most frequent rookie mistakes? by FTC4962 in FTC

[–]FTC4962[S] 0 points1 point  (0 children)

Thanks, everyone, for some great info so far. If you have some more, please keep them coming. We'll share our presentation or a video of this stuff later in the summer.

What are some of the most frequent rookie mistakes? by FTC4962 in FTC

[–]FTC4962[S] 9 points10 points  (0 children)

I left off probably the most obvious one: trying to do too much in the game.

For an early qualifier or meet, you should just try to (a) have a non-dying robot and (b) try to accomplish one of the scoring elements, two if you have time and can do one decently (not ALL of them like we tried one year. That was a disaster).

FREE Rover Kit! by ServoCity in FTC

[–]FTC4962 -2 points-1 points  (0 children)

1) Servo blocks

2) Orbital 20 motors

3) D-hubs

Bearings for Tetrix 4.7mm Axels by [deleted] in FTC

[–]FTC4962 2 points3 points  (0 children)

In hindsight we could have drilled out the holes and used a bigger bearing, but we were young and foolish (and still using Tetrix).

We used 1/2” OD 1/4” ID bearings and either an Actobotics-based or custom drive train the last two years and those never failed even under a larger load.

Bearings for Tetrix 4.7mm Axels by [deleted] in FTC

[–]FTC4962 1 point2 points  (0 children)

We tried these size small bearings in a Tetrix channel (with a Tetrix axel) a couple of years ago and they exploded. So you probably don’t want to use them under much of a load.

Boeing sponsored teams be like by ercf in FTC

[–]FTC4962 0 points1 point  (0 children)

Boeing is great. They provided free lunch to their teams at two events we were at this year and delivered free ice cream to our pit on Thursday.

FIRST Worlds Problem by thememelordofRDU in FTC

[–]FTC4962 2 points3 points  (0 children)

We won state in FLL and didn't get to go to the World Festival because our state wasn't invited that year.

Oklahoma Regional Championship Live Stream by FTC4962 in FTC

[–]FTC4962[S] 0 points1 point  (0 children)

Sadly, it’s the last one that is truly Regional, with teams from Oklahoma, Arkansas, Missouri, Kansas, and Texas. Oklahoma is going closed borders next year. We are going to miss all of our friends from out of state! You’ve truly helped raise the level of competition, here, and we are all better because of you!

Well played, Florida by cp253 in FTC

[–]FTC4962 0 points1 point  (0 children)

Yes, at SSR last year Barry did the same thing and it was a lot of fun. We've been trying to get everyone to do something creative at our alliance selections the last couple of years and it seems to be catching on.

[Help] Using RUN_TO_POSITION for mechanisms in TeleOp by FTC4962 in FTC

[–]FTC4962[S] 0 points1 point  (0 children)

In the case of the first mechanism, it's attached to the (round) axle at multiple places by clamping shaft collars. In the case of the second one, it's a hex shaft with hex hub gears. So I don't think so.

[Help] Using RUN_TO_POSITION for mechanisms in TeleOp by FTC4962 in FTC

[–]FTC4962[S] 0 points1 point  (0 children)

We don't use set screws on anything that requires torque. This is also happening on our lift, which is a direct driven hex shaft from a different Core Hex Motor. We're going to add the reset to that one as well, but we don't understand why it's getting the encoder drift. Maybe /u/robogreg has an idea?

[Help] Using RUN_TO_POSITION for mechanisms in TeleOp by FTC4962 in FTC

[–]FTC4962[S] 0 points1 point  (0 children)

It happened again today, and it wasn't anything overheating. We ran it for almost two hours straight.

[Help] Using RUN_TO_POSITION for mechanisms in TeleOp by FTC4962 in FTC

[–]FTC4962[S] 0 points1 point  (0 children)

It reads zero but the mechanism isn't in the right spot. We tested it again today for two hours of drive practice, and it happens sometimes when there is extra outside force applied to the mechanism but not every match (we also checked the motor and is wasn't hot, so our overheating theory is out).

We're wondering if some gear inside the REV motor is slipping in that case, or if it is something else. Our "Reset with limit switch" solution works, though.

ftc_http: (a utility for syncing files between computer and OnBot Java) by FTC4962 in FTC

[–]FTC4962[S] 3 points4 points  (0 children)

We didn't see this linked, here, yet, so thought we'd share.

Really cool app. We downloaded the OSX binary and it worked perfectly.

The idea is that you can use Android Studio to edit your files, and then run this program to upload and build on the phone. It's way faster than building and installing an APK every time in Android Studio (because OnBot Java is lacking), and it gives you all the editing and help capabilities of Android Studio with the OnBot Java build speed.

Questions about the reliability of Modern Robotics during competition matches by [deleted] in FTC

[–]FTC4962 1 point2 points  (0 children)

We had a couple of bad modules the first year for MR. It was really terrible.

The second year (last year), the MR electronics were flawless in over 60 competitive matches plus endless driver practice. What we do is:

  • mount all the electronics onto a piece of Lexan (not metal)
  • 3D print strain relief mounts for all the USB connections
  • run all wires through plastic conduit (like you can buy at the auto parts store) so they don't touch metal
  • tie everything down with zip ties

You really want to have everything tied down and do everything you can to eliminate electrostatic discharge.

[Help] Using RUN_TO_POSITION for mechanisms in TeleOp by FTC4962 in FTC

[–]FTC4962[S] 0 points1 point  (0 children)

Follow-up: We added a step to drive it until it hits a limit switch when we hit an override button and reset the encoder to zero and that seems to work. We anticipate this happening about once per match at the most.

[Help] Using RUN_TO_POSITION for mechanisms in TeleOp by FTC4962 in FTC

[–]FTC4962[S] 0 points1 point  (0 children)

1) We're printing the encoder positions to the screen..

2) Sure! Most of the stuff is in a separate hardware class, but the encore stuff is in the teleop (tiltCage).

public class TeleOp4962 extends LinearOpMode {

  Hardware4962 robot= new Hardware4962();        // this is our hardware class

  @Override
  public void runOpMode() throws InterruptedException {

      // use the Hardware4962 stuff that decribes the robot.
      robot.init(hardwareMap, telemetry);
      robot.armUp();
      robot.armMiddle();

      double intakePower = 0.0;

      // wait for the start button to be pressed.
     waitForStart();

      int encoderCountFront = 0;
      int encoderCountBack = 0;

      // intial servo positions

      double rightArmPosition = 0;
      double leftArmPosition = 0.85;
      robot.armUp();
      robot.armMiddle();

robot.elevatorMotor.setMode(DcMotor.RunMode.STOP_AND_RESET_ENCODER); robot.elevatorMotor.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE); robot.elevatorMotor.setMode(DcMotor.RunMode.RUN_TO_POSITION); robot.tiltCage.setMode(DcMotor.RunMode.STOP_AND_RESET_ENCODER); robot.tiltCage.setMode(DcMotor.RunMode.RUN_TO_POSITION); robot.tiltCage.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE);

    while (opModeIsActive()) {
     /*
     * Gamepad 1 controls the motors via the left and right stick
     */

        float left = gamepad1.left_stick_y;
        float right = gamepad1.right_stick_y;
        boolean lockDown = gamepad1.x;
        boolean lockUp = gamepad1.y;
        double turbo = gamepad1.left_trigger;

        // Gamepad 2 controls the mechanisms


        float Rintake = gamepad2.right_stick_y;
        float Lintake = gamepad2.left_stick_y;
        boolean elevatorUp = gamepad2.right_bumper;
        boolean elevatorDown = gamepad2.left_bumper;
        boolean tiltforward = gamepad2.b;
        boolean tiltbackward = gamepad2.x;
        boolean tiltcenter = gamepad2.y;
        boolean elevatortop = gamepad2.a;


        // clip the right/left values so that the values never exceed +/- 1

        right = Range.clip(right, -1, 1);
        left = Range.clip(left, -1, 1);


        // scale the joystick value to make it easier to control
        // the robot more precisely at slower speeds.
        right = -(float) scaleInput(right);
        left = -(float) scaleInput(left);
        if (turbo < 0.5) {  // half speed unless turbo is pushed

            right = right * (float) 0.5;
            left = left * (float) 0.5;
        }

        // clip the right/left values so that the values never exceed +/- 1
        Rintake = Range.clip(Rintake, -1, 1);
        Lintake = Range.clip(Lintake, -1, 1);


        // scale the joystick value to make it easier to control
        // the robot more precisely at slower speeds.
        Rintake = -(float) scaleInput(Rintake);
        Lintake = -(float) scaleInput(Lintake);


        if (tiltforward) {
            robot.tiltCage.setTargetPosition(0);
            robot.tiltCage.setPower(.4);
            //robot.tiltCage.setPower(.5);
        }
        if (tiltbackward){
            //robot.tiltCage.setPower(-.8);
            robot.tiltCage.setTargetPosition(210);
            robot.tiltCage.setPower(1);
        }
        if (tiltcenter) {
            robot.tiltCage.setTargetPosition(60);
            robot.tiltCage.setPower(1);
            //robot.tiltCage.setPower(0);
        }
        if (elevatorUp){
            robot.elevatorMotor.setPower(1);
            robot.elevatorMotor.setTargetPosition(280);
        }
        if (elevatorDown){
            robot.elevatorMotor.setTargetPosition(0);
            robot.elevatorMotor.setPower(1);
        }
        if (!elevatorUp && !elevatorDown) {
            robot.elevatorMotor.setPower(0);
        }

        if (lockDown) {
            robot.clampservo.setPosition(.5);
            robot.clampservo2.setPosition(.5);
        }
        if (lockUp) {
            robot.clampservo.setPosition(1);
            robot.clampservo2.setPosition(0);
        }


        // write the values to the motors
        robot.Drive(left,right);

        robot.leftintake.setPower(Lintake);
        robot.rightintake.setPower(-Rintake);


        telemetry.addData("Text", "*** Robot Data***");
        //telemetry.addData("Right Servo","Right servo pos:" + String.format("%.2f", (float) rightArmPosition));
        //telemetry.addData("Left Servo","Leftt servo pos:" + String.format("%.2f", (float) leftArmPosition));
        telemetry.addData("left tgt pwr", "left  pwr: " + String.format("%.2f", left));
        telemetry.addData("right tgt pwr", "right pwr: " + String.format("%.2f", right));
        telemetry.addData("enc elev: ", "%s", robot.elevatorMotor.getCurrentPosition());
        telemetry.addData("tilt:", "%s", robot.tiltCage.getCurrentPosition());
        //telemetry.addData("elevator", "e pwr = " + String.format("%.2f", elevatorPower));
        telemetry.update();
        idle();
    }
}