BLine is an open-source path generation and tracking suite designed for holonomic drivetrains (swerve, mecanum, etc.) made by students for students. It's built around simplicity and performance in time-constrained environments where quick iteration and rapid empirical testing prove advantageous.
📚 Documentation — full guides, tutorials, and reference.
📖 Javadoc — full Java API documentation.
🎨 BLine-GUI — visual path planning interface.
💬 Chief Delphi Thread — discussion, feedback, and announcements.
- Open VS Code with your FRC project
- Press
Ctrl+Shift+P(orCmd+Shift+Pon Mac) - Type "WPILib: Manage Vendor Libraries"
- Select "Install new libraries (online)"
- Paste this URL:
https://raw.githubusercontent.com/edanliahovetsky/BLine-Lib/main/BLine-Lib.json
Add JitPack repository to your build.gradle:
repositories {
maven { url 'https://jitpack.io' }
}Add the dependency:
dependencies {
implementation 'com.github.edanliahovetsky:BLine-Lib:v0.8.1'
}For a complete getting started guide, see the Full Documentation.
import frc.robot.lib.BLine.*;
import edu.wpi.first.math.controller.PIDController;
// 1. Set global constraints
Path.setDefaultGlobalConstraints(new Path.DefaultGlobalConstraints(
4.0, // maxVelocityMetersPerSec
3.0, // maxAccelerationMetersPerSec2
360.0, // maxVelocityDegPerSec
720.0, // maxAccelerationDegPerSec2
0.05, // endTranslationToleranceMeters
2.0, // endRotationToleranceDeg
0.3 // intermediateHandoffRadiusMeters
));
// 2. Create a reusable path builder
FollowPath.Builder pathBuilder = new FollowPath.Builder(
driveSubsystem,
driveSubsystem::getPose,
driveSubsystem::getChassisSpeeds,
driveSubsystem::drive,
new PIDController(5.0, 0.0, 0.0), // translation
new PIDController(3.0, 0.0, 0.0), // rotation
new PIDController(2.0, 0.0, 0.0) // cross-track
).withDefaultShouldFlip()
.withPoseReset(driveSubsystem::resetPose);
// 3. Load and follow a path
Path myPath = new Path("myPathFile"); // loads deploy/autos/paths/myPathFile.json
Command followCommand = pathBuilder.build(myPath);BLine has been validated through extensive testing with a WPILib physics simulation, utilizing Theta* for initial pathfinding and an Artificial Bee Colony (ABC) optimizer to benchmark the system against PathPlanner.
Quantitative Results from randomized Monte Carlo trials:
- 97% reduction in path computation time
- 66% reduction in cross-track error at waypoints
- Negligible 2.6% decrease in total path tracking time compared to PathPlanner
./gradlew buildGenerate Javadoc locally:
./gradlew javadoc
# Open build/docs/javadoc/index.htmlIf another robot repo consumes your local BLine-Lib checkout (for example via includeBuild) and you run ./gradlew clean in this repo, you may need to rebuild the jar before the robot repo can package/sim successfully.
./gradlew jarThis regenerates build/libs/BLine-Lib-<version>.jar that some downstream fat-jar tasks expect.
BSD 3-Clause License — See LICENSE file.