/r/FTC
We are currently private in protest of Reddit's poor management and decisions related to third party platforms and content management.
/r/FTC
We want to name our bot Cheese 803 but we dont want to get disqualified
i recently end to assemble rev mecanum wheels with ultraplanetary motors, but when i tried the drive the mecanum doesn’t really move like i would like, i search for videos and gobilda mecanum looks good on all the videos, the question is, it is possible to balance the speed of my mecanum wheels with code so any of them go faster or slower? and if it’s possible someone has code or the logic to adapt it
I am using the old models of mecanum wheels and Mark, with HD Rex 40:1 motors transmitting movement through gears from 15 to 10. However, the robot cannot move sideways; it can only go forward and backward, and sometimes diagonally. What could be causing this, and how can I fix it?
hello all currently trying to do more CAD work for my team, and I've been learning the ropes
using on shape, anyone got any good tutorials to really speed up the learning fr
We are big believers in students doing everything, mentors only touch the robot when a second set of hands are necessary and all other students n/a etc.
Looking for opinions on whether this is over the line. Here's the situation.
Students choose a design change few weeks before first comp. Mentor orders parts. Parts come, they realize on the spot mentor forgot some components critical to assembly. Knowing it's needed immediately mentor 3d prints the components and spares in CF-PETG, taps them. Mechanism works, only concern is potential stripping of threads but it's all good. Team rocks on. Mentor makes note - order proper part to swap later.
5 days before comp, mechanism has to be rebuilt, swap motor etc. During reassembly it's clear the 3d printed parts are stripping. Student pulls it apart again for the second time that night, replaces 3D printed parts with the spares. All seems good, but the mentor sees that there may be an impending catastrophe at the competition. This is when mentor realizes that they had not yet ordered the proper parts. Mentor immediately orders parts.
Here's the problem. With luck, parts will arrive the day before the competition. Unfortunately this is after the team will have its last meeting.
Mentor, knowing that this is a situation they created, feels extremely guilty. They have offered to replace the part themselves if the students are unable to do it before the competition. They will not make any design changes to anything else, fully understands that the students need to see things work exactly as they built it. The swap is more than just a few bolts, it is probably about a 30 minute job.
What say ye?
Normally having a mentor do solo work on the robot like this would be a big no no for us. However in this case they are only rectifying a situation they created. There is no functional difference in what the students will end up with from what they had originally intended, whether the design itself is good or not. Likewise I hate to ask an already stressed out student to go through this rebuild process yet again.
If it matters, the students generally love this mentor and hold no ill will against them whatsoever and immediately brushed off the lack of order has an honest mistake.
Hey there,
I am seeking help regarding a DC Motor that powers a piece of an arm on our robot. It seems that the higher we increase the positon of our elbow, the more it oscillates back and forth. We are using a scaling system based on the minimum and maximum positions we want the elbow to be (0 and 116 being the minimum and maximum positons for the elbow) where, based on variable “scale”, the elbow will change the target position of the elbow motor (for example, if scale = 50, the motor will go to 50% of the maximum position.
The problem we have been having is that the elbow motor tends to oscillate back and forth as if not being able to get to the target position.
here are the following things we have tested and found:
-it does not seem to be a motor problem for we have substituted the motor for others with no avail.
-we tried using the zeropowerbehavior, set velocity, and position tolerance but to no success -we have the same code for another motor that has a longer part of the arm to handle and has the same type of job but it does not have the same problem
We appreciate any help we can get!
So I'm trying to run my Teleop and Debug my code but nothing is running and when I try to edit the code. It resets and I can't program. what might be the error?
package org.firstinspires.ftc.teamcode;
import com.qualcomm.hardware.rev.RevHubOrientationOnRobot;
import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode;
import com.qualcomm.robotcore.eventloop.opmode.TeleOp;
import com.qualcomm.robotcore.hardware.CRServo;
import com.qualcomm.robotcore.hardware.DcMotor;
import com.qualcomm.robotcore.hardware.DcMotorEx;
import com.qualcomm.robotcore.hardware.IMU;
import com.qualcomm.robotcore.hardware.Servo;
import org.firstinspires.ftc.robotcore.external.navigation.AngleUnit;
u/TeleOp(name = "Happy Hawks TeleOp", group = "Robot")
public class Ri3dTeleop extends LinearOpMode {
/* Declare OpMode members */
public DcMotor leftFrontDrive = null;
public DcMotor rightFrontDrive = null;
public DcMotor leftBackDrive = null;
public DcMotor rightBackDrive = null;
public DcMotor armMotor = null;
public DcMotor liftMotor = null;
public CRServo intake = null;
public Servo wrist = null;
// Constants
final double ARM_TICKS_PER_DEGREE = 5.0; // Placeholder, adjust to match your robot
final double FUDGE_FACTOR = 15 * ARM_TICKS_PER_DEGREE;
final double INTAKE_COLLECT = -1.0;
final double INTAKE_OFF = 0.0;
final double INTAKE_DEPOSIT = 0.5;
final double WRIST_FOLDED_IN = 0.1667;
final double WRIST_FOLDED_OUT = 0.5;
u/Override
public void runOpMode() {
/* Initialize hardware */
leftFrontDrive = hardwareMap.dcMotor.get("frontLeft");
leftBackDrive = hardwareMap.dcMotor.get("backLeft");
rightFrontDrive = hardwareMap.dcMotor.get("frontRight");
rightBackDrive = hardwareMap.dcMotor.get("backRight");
armMotor = hardwareMap.get(DcMotor.class, "armMotor");
liftMotor = hardwareMap.dcMotor.get("liftMotor");
intake = hardwareMap.get(CRServo.class, "intake");
wrist = hardwareMap.get(Servo.class, "wrist");
/* Motor Directions */
leftFrontDrive.setDirection(DcMotor.Direction.REVERSE);
leftBackDrive.setDirection(DcMotor.Direction.REVERSE);
/* Zero Power Behavior */
leftFrontDrive.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE);
rightFrontDrive.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE);
leftBackDrive.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE);
rightBackDrive.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE);
armMotor.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE);
/* Arm Motor Initialization */
armMotor.setMode(DcMotor.RunMode.STOP_AND_RESET_ENCODER); // This is done once
/* Initialize IMU */
IMU imu = hardwareMap.get(IMU.class, "imu");
IMU.Parameters imuParameters = new IMU.Parameters(new RevHubOrientationOnRobot(
RevHubOrientationOnRobot.LogoFacingDirection.UP,
RevHubOrientationOnRobot.UsbFacingDirection.LEFT
));
imu.initialize(imuParameters);
telemetry.addLine("Robot Ready.");
telemetry.update();
waitForStart();
/* Main loop */
while (opModeIsActive()) {
// Driving controls
double y = -gamepad1.left_stick_y; // Forward/backward
double x = gamepad1.left_stick_x; // Strafing
double rx = gamepad1.right_stick_x; // Rotation
double botHeading = imu.getRobotYawPitchRollAngles().getYaw(AngleUnit.RADIANS);
double rotX = x * Math.cos(-botHeading) - y * Math.sin(-botHeading);
double rotY = x * Math.sin(-botHeading) + y * Math.cos(-botHeading);
rotX = rotX * 1.1; // Counteract imperfect strafing
double denominator = Math.max(Math.abs(rotY) + Math.abs(rotX) + Math.abs(rx), 1);
double frontLeftPower = (rotY + rotX + rx) / denominator;
double backLeftPower = (rotY - rotX + rx) / denominator;
double frontRightPower = (rotY - rotX - rx) / denominator;
double backRightPower = (rotY + rotX - rx) / denominator;
leftFrontDrive.setPower(frontLeftPower);
leftBackDrive.setPower(backLeftPower);
rightFrontDrive.setPower(frontRightPower);
rightBackDrive.setPower(backRightPower);
// Intake controls
if (gamepad1.left_bumper) {
intake.setPower(INTAKE_COLLECT);
} else if (gamepad1.right_bumper) {
intake.setPower(INTAKE_OFF);
} else if (gamepad1.y) {
intake.setPower(INTAKE_DEPOSIT);
}
// Arm control (example, replace with actual control logic)
if (gamepad1.a) {
armMotor.setTargetPosition(500); // Example target position
armMotor.setPower(0.5); // Move arm
}
armMotor.setMode(DcMotor.RunMode.RUN_TO_POSITION);
// Update telemetry
telemetry.addData("Heading", botHeading);
telemetry.addData("Arm Position", armMotor.getCurrentPosition());
telemetry.update();
}
}
}
Title says it all - we have brand new PS5 controllers and when we plug them in our driver station turns off immediately.
We have had intermittent battery issues so we use external power pack. Not sure what the issue is.
Any help is appreciated
I'm trying to get telemetry for a servo and I have not been able to find info to help with my endeavor. I tried telematry.addData and it doesn't work for some reason. Android Studio is what I am using please help.
I have read through the awards details, and I’m a little confused about the “equitable distribution” of awards.
I see that each team can only get one 1st place judged award, but does that include Inspire? For example can a team get 1st place Design and 1st Inspire? Is the Inspire Award the exception to that? What if a team gets 2nd place Inspire; can they also get a 1st place in another award?
Hi! Does anyone happen to know the total packaging weight of FIRST Tech Challenge INTO THE DEEP℠ Full Game Set? Thanks in advance!
we are confusing when try to attach our viper slide into our robot, which built mostly in REV parts. does anyone have some advice for us?
As title says
Hey, we have been using road runner to plan out our autonomous, and we have been having a problem where our lift does not go all the way down and zero out with our touch sensor. This is not a problem in Tele-Op, or in a separate code where we only test the lift.
Inside the PwmControl class, there is a method called "setPwmRange." What will happen if we change the range using this method?
For example, what is the difference between (500, 2500), (500, 1500), and (2000, 2500)?
From my online research, I understand that we can change the speed of the servo motor by changing the PWM. So, does it mean that for the (500, 1500), the servo motor will rotate at a higher speed, and for the (2000, 2500) range, the servo motor will rotate at a lower speed?
my team is looking for active intakes systems for into the deep, and after looking we didn’t found any system that convince us, i want to know if anyone has an intak el system easy to build, we have 3d printer and core hex but we doesn’t have chains or something like that, i want to know if anyone could help us with a tutorial or a manual to build an intake easily
My team uses the newer IMU BHI260IMU (rather than the older BNO055IMU). The syntax between the old and new IMU is different, so I'm running into a ton of syntax errors. Is there any documentation online that could help? I can't find anything using this link. Thanks.
we are looking for the cad of viper slide 4 stage 336mm but only find step file from gobilda and it not really mate to each other and we can't simulate movement. does anyone have a viper slide cad which can simulate motion on them?
We are a new middle school team at our first competition of the year. During one of our matches, both us and our alliance team lost the ability to control our robots just as the match started.
Our driver noticed that there was an unidentified SSID message at the top of the hub. It would flicker between unidentified SSID and our actual wifi.
Before the match and since we have not seen the message and we have no issues in control.
We are using a fairly complex wifi password. What other advice can you give us?
Hey everyone! I am a captain for a team with 22 members (wow!) and although the growth has been great, we’ve been dealing with new sets of challenges, including how to approach our judging.
In previous years we only had at most 13 members so we were able to fit everyone in the judging room and give lines for everyone to say. However with 22 members I don’t know if that’s going to be possible.
For people who have managed large teams, how should we approach this? Only having some members going to judging would make it easier but I don’t know how to equitably select those members. Having everyone go will be a nightmare for everyone involved.
It’s not just judging- our pit is always filled to the brim so we have to bring most of our team members to the stands. It’s really nice for cheering but not so nice managing the team. Let me know any advice you guys have!
We have been having issues with our BWT slides, specifically not smooth extension/retraction and dethreading screws. We are using UMWHPE string to cascade/continuous rig.
The screws that came with the slides are dethreading and get loose after a bit, and we've tried disassembling and cleaning out the slides for the extension issue (and regreasing), which did not work.
We've basically had it with our BWT slides and are considering Misumi slides (We used Viper last year however want to cascade for faster extension and have a little more torque, since we are putting some more weight this year on the slides.)
Any ideas to fix our BWT slides or experiences with Misumi (or similar slides that fit our criteria)?
Good morning, my team and I are finding the gobilda viper slide very heavy and slow and we are thinking about making a cascade elevator with 3 floors similar to the frc but we have no idea how to do it, would any team have any tips? how to do it or suddenly a cad of something similar to help us?
My team is fire department themed and we were wondering if there was a rule against using a light bar that flashes?
Since the latest FTC Controller requires Android Studio Ladybug, I upgraded my M1 Mac to that version. Gradle sync works fine and seemingly downloads required files. When I switch to offline mode and connect to the Controller Hub over ADB WiFi, however, I get this error:
Caused by: org.gradle.internal.resolve.ModuleVersionResolveException: Could not resolve com.android.tools.build:aapt2:8.7.0-12006047.
Any idea how to resolve this issue? I've had no luck downgrading Android Studio, as then I get the error that the Gradle build tool requires version 8.7.
I can’t add another video but it does the same thing with the big number and nothing changes. I know that the mat moving slightly as it’s running doesn’t help but I know it’s not the biggest issue because this same thing happened on our actual big mat.
I had to take the robot home for thanksgiving to try and get rr to work because I was able to use it last year and now it is expected of me :/
Hey everyone, our team (Overclocked 22059) have started a website where we interview other FTC teams to learn their engineering processes and to share it with the community. As of posting, we have one interview with the Techno Maniacs of Massachusetts and one example interview with ourselves but more will be coming about once every week depending on how many people we can get. If you go on our website and click the contact us button at the bottom, you can fill out a form which we can contact you through.