
New 110mm Wheel with 30A Traction Spike Rollers
The new 110mm wheel delivers a 28% speed boost over the 86mm wheel, increasing top speed from 6.4 ft/s to 8.2 ft/s at the same RPM.
The 110mm wheel uses new 30A rollers for enhanced traction and includes 11 rollers per wheel. Each roller features 418 traction spikes, increasing strafing speed, pushing power, and acceleration.
The 86mm wheel remains available as the compact and the higher-torque option.
Redefine your robot’s potential with SWYFT Drive V2, the most integrated, compact, and powerful drive system engineered for FTC. SWYFT Drive V2 combines a compact module, a robust all-metal gearbox, and the SWYFT Spike motor into a complete drivetrain solution.
Unleash unparalleled maneuverability and speed in an even smaller footprint than ever before. SWYFT Drive V2 is designed to give your robot the definitive edge, allowing you to maximize space for critical mechanisms and dominate the field.
Key Features:


V2 Frame Kit: Get everything you need to build a complete drivetrain

Material List:
SWYFT Spike Motor (SR-MOTOR-DC-01) Specs:
CAD&Drawings
Onshape Configurator
Drivetrain Simulator
110mm Assembly Video
86mm Assembly Video
Spare Parts
Sprint calculator
110mm sprint
0.97 s
86mm sprint
1.11 s
Estimates based on the AMB Calculator drivetrain sim. Four SWYFT Spike motors, 12.7:1. Solid lines are 110mm, dashed are 86mm. Slip is drawn only while the wheels are spinning out.
Robot-centric mecanum teleop with BRAKE on every drive motor. Change the hardware map names to match your Robot Configuration.
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;
/**
* Robot-centric mecanum teleop with BRAKE mode on every drive motor.
*
* Controls:
* Left stick → forward/back + strafe
* Right stick X → rotate
*
* Hardware map names (change these to match your Robot Configuration):
* frontLeft, backLeft, frontRight, backRight
*/
@TeleOp(name = "Mecanum TeleOp (Brake)", group = "TeleOp")
public class MecanumTeleOpBrake extends LinearOpMode {
@Override
public void runOpMode() throws InterruptedException {
// ===== Hardware Map =====
DcMotor frontLeft = hardwareMap.get(DcMotor.class, "frontLeft");
DcMotor backLeft = hardwareMap.get(DcMotor.class, "backLeft");
DcMotor frontRight = hardwareMap.get(DcMotor.class, "frontRight");
DcMotor backRight = hardwareMap.get(DcMotor.class, "backRight");
// ===== Directions =====
// Reverse the right side so positive power drives forward.
// If the robot drives backward when you push the stick forward,
// reverse the LEFT side instead.
frontRight.setDirection(DcMotorSimple.Direction.REVERSE);
backRight.setDirection(DcMotorSimple.Direction.REVERSE);
// ===== BRAKE mode on every drive motor =====
frontLeft.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE);
backLeft.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE);
frontRight.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE);
backRight.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE);
// Run without encoders (standard for pure teleop)
frontLeft.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
backLeft.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
frontRight.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
backRight.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
telemetry.addData("Status", "Initialized – BRAKE mode active");
telemetry.update();
waitForStart();
if (isStopRequested()) return;
while (opModeIsActive()) {
// ===== Gamepad Input =====
double y = -gamepad1.left_stick_y; // Forward / back (Y is inverted)
double x = gamepad1.left_stick_x * 1.1; // Strafe (1.1 helps imperfect rollers)
double rx = gamepad1.right_stick_x; // Rotate
// ===== Normalized mecanum math =====
double denominator = Math.max(Math.abs(y) + Math.abs(x) + Math.abs(rx), 1.0);
double frontLeftPower = (y + x + rx) / denominator;
double backLeftPower = (y - x + rx) / denominator;
double frontRightPower = (y - x - rx) / denominator;
double backRightPower = (y + x - rx) / denominator;
// ===== Apply power =====
frontLeft.setPower(frontLeftPower);
backLeft.setPower(backLeftPower);
frontRight.setPower(frontRightPower);
backRight.setPower(backRightPower);
// Optional live telemetry
telemetry.addData("FL", "%.2f", frontLeftPower);
telemetry.addData("BL", "%.2f", backLeftPower);
telemetry.addData("FR", "%.2f", frontRightPower);
telemetry.addData("BR", "%.2f", backRightPower);
telemetry.update();
}
}
}System Kits