FTC Team 10298 ยท Brain Stormz

Neuron Pathing

A custom autonomous path-following library for FTC, plus a browser-based visual tool for drawing a path on the field and generating the Java to drive it.

This quickstart is built on the official FIRST-Tech-Challenge/FtcRobotController SDK.

๐Ÿงญ

Open the Neuron Path Planner

Draw a path on the field, tune it visually, and copy the generated Java straight into an OpMode. Start here: no setup required, it just runs in your browser.

Launch the planner โ†’
๐Ÿ› ๏ธ

Installation

Clone the repo, wire up your Pinpoint and drive motors, and construct the library in your OpMode.

Read the guide โ†’
๐ŸŽ›๏ธ

Tuning

A step-by-step order of operations: localizer sign conventions, PID gains, then the spline follower. Don't skip ahead.

Read the guide โ†’
๐Ÿงฉ

Subsystems & Public Methods

Add your own mechanisms (intake, arm, shooter...) alongside NeuronDrive, and call them from both TeleOp and Autonomous.

Read the guide โ†’
๐Ÿงฏ

Troubleshooting

Robot driving the wrong way, oscillating, cutting corners? Look here before you start changing gains at random.

Read the guide โ†’

Get started in 3 steps

1

Clone & open

Clone this repo and open the root folder in Android Studio. Build once to confirm everything syncs cleanly.

2

Configure & tune

Set your Pinpoint offsets and track width, then work through Tuning in order: localizer first, PID second, spline follower last.

3

Plan a path

Open the Neuron Path Planner, draw your auto, and paste the generated code into an OpMode like NeuronSplineAuto.java.

What's in this repo

TeamCode/.../neuronpathing/ : the library itself: Pose2D, Spline, NeuronLocalizer, NeuronDrive
TeamCode/.../opmodes/ : NeuronTeleOp, NeuronSplineAuto, NeuronLocalizerTest example OpModes
tools/neuron-path-planner.html : the visual path planner (open directly in a browser)
docs/ : installation, tuning, troubleshooting
FtcRobotController/ : unmodified official FTC SDK

The shape of the code

This is what the planner generates, and what every example OpMode follows:

NeuronLocalizer localizer = new NeuronLocalizer(hardwareMap, telemetry, xOffsetMm, yOffsetMm);
NeuronDrive drive = new NeuronDrive(hardwareMap, localizer, trackWidthIn);
localizer.setPosition(new Pose2D(0, 0, 0));
localizer.calibrate(true);

waitForStart();

drive.splineToPoint(new Pose2D(24, 24, Math.toRadians(90)), false, false, 1, 0.8);
while (opModeIsActive() && drive.isBusy()) {
    drive.update();   // NeuronDrive only moves while this is being called
}