A simple and fast FRC autonomous path planner (designed for swerve drive)! (Desktop/Laptop only)

Overview

What is this project?

This is a website developed for planning autonomous paths for FRC robots. It is intended to be a simple and fast tool to create autos, which works offline at competitions.

How it works

Autonomous programs are defined in this app as a series of points (as a linear spline), where each point has a custom rotation value.

The rotation feature is available for holonomic drive trains (such as swerve) that can separate the direction of the drivetrain from the direction of travel.

After generating a path (keys and features below in Usage), copy the path as json from the text box at the top right.

Note: the points are all in field position as opposed to being pixel values on the screen.

Usage

Menu

i - Toggles the menu at the top right (with the clear button and json export box)

Point controls

Space or Left Click - Add a point at the mouse cursor position (field position is displayed in the box below the cursor)

z - Remove the selected point (the selected point is highlighted gray)

r - Rotate the selected point towards the mouse cursor (angle shown visually and above the cursor numerically)

e - "Edit" (Move the selected point to the current mouse position)

a and d - a selects the previous point, while d selects the next point

c - Splits the selected point into two (doesn't work on edge points)

Development

This app is built with rust and macroquad (compiled to WASM). I originally created this project as a simple project to learn rust with, but I decided to flesh it out. Because of this, it is likely that there are various possible improvements to my code.

I am also currently considering switching away from macroquad because of the large package size.

Testing and building the code

First, clone the repository locally, and install rust (I recommend using the Visual Studio tools method).

Next, add WASM as a target for rust (assuming rust is installed)

rustup target add wasm32-unknown-unknown

Next, to build it in development mode, run

cargo build --target wasm32-unknown-unknown

Then, to see it working, run a local server hosting the index.html file in the main directory.

The codebase is currently setup to automatically build using a github action, so if you want to build it completely locally you will need to run

cargo build --release --target wasm32-unknown-unknown

and then copy the field image into dist/assets and the wasm file from target/wasm32-unknown-unknown/release/frc-auto-generator.wasm to dist/frc-auto-generator.wasm.

You might also like...
secmem-proc is a crate designed to harden a process against low-privileged attackers running on the same system trying to obtain secret memory contents of the current process.

secmem-proc is a crate designed to harden a process against low-privileged attackers running on the same system trying to obtain secret memory contents of the current process. More specifically, the crate disables core dumps and tries to disable tracing on unix-like OSes.

Fast and simple PHP version manager written in rust

[WIP] phpup (PHP-up): Fast and Simple PHP version manager ⚡ Fast and simple PHP version manager, written in rust Features No requirements for system P

qn (quick note) is a simple, fast and user-friendly way to save notes 🦀⚙️
qn (quick note) is a simple, fast and user-friendly way to save notes 🦀⚙️

Quick Note qn Install This is currently for my personal use. I may push breaking changes at any time. If you want to use it, bring down the code and r

A simple, fast and fully-typed JSPaste API wrapper for Rust

rspaste A simple, fast and fully-typed JSPaste API wrapper for Rust. aidak.tk » Installation Put the desired version of the crate into the dependencie

Beanstalk is a simple, fast work queue.

beanstalkd Simple and fast general purpose work queue.

A dead-simple, extreme fast permission flag system for Rust with no dependencies

A dead-simple, extreme fast permission flag system for Rust with no dependencies

This is a simple Telegram bot with interface to Firefly III to process and store simple transactions.
This is a simple Telegram bot with interface to Firefly III to process and store simple transactions.

Firefly Telegram Bot Fireflies are free, so beautiful. (Les lucioles sont libres, donc belles.) ― Charles de Leusse, Les Contes de la nuit This is a s

An implementation of Code Generation and Factoring for Fast Evaluation of Low-order Spherical Harmonic Products and Squares

sh_product An implementation of Code Generation and Factoring for Fast Evaluation of Low-order Spherical Harmonic Products and Squares (paper by John

MeiliSearch is a powerful, fast, open-source, easy to use and deploy search engine
MeiliSearch is a powerful, fast, open-source, easy to use and deploy search engine

MeiliSearch is a powerful, fast, open-source, easy to use and deploy search engine. Both searching and indexing are highly customizable. Features such as typo-tolerance, filters, and synonyms are provided out-of-the-box. For more information about features go to our documentation.

Owner
Weaver Goldman
I'm a junior at Hershey High School! I do lots of coding on my own time, and I am the head programmer on my robotics team, @FRC2539.
Weaver Goldman
Polydrive an experimental open source alternative to Google Drive

Polydrive is an experimental open source alternative to Google Drive. It allows users to synchronize their files on multiple devices.

null 3 Apr 20, 2022
Explore the WWW and find the shortest path between two HTML documents

explore Find shortest path between two web resources. About I decided to create this project because some day I started to wonder: In how many clicks

Eryk Andrzejewski 1 Apr 10, 2022
Finding the shortest and fastest path in the graph to optimize traffic.

Finding the shortest and fastest path in the graph to optimize traffic. Because we don't want to spend unnecessary time searching for the optimal route back to home.

Tomáš Petržela 2 Oct 26, 2021
Small and simple stateful applications, designed to facilitate the monitoring of unwanted behaviors of the same.

Violet Violet é um pequeno e simples monitorador de aplicação, voltado para receber eventos de erro e estado. Instalação simples: Dependencias: Docker

Lucas Mendes Campos 3 Jun 4, 2022
Try to find the correct word with only first letter and unknown letter count

Try to find the correct word with only first letter and unknown letter count

Alexandre 6 Apr 11, 2022
`Debug` in rust, but only supports valid rust syntax and outputs nicely formatted using pretty-please

dbg-pls A Debug-like trait for rust that outputs properly formatted code Showcase Take the following code: let code = r#" [ "Hello, World!

Conrad Ludgate 12 Dec 22, 2022
Shows only the first page of rustc output

cargo-first-page Shows only the first page of rustc output. Installation cargo install cargo-firstpage Usage Prefix the cargo command by firstpage: T

Cecile Tonglet 11 Dec 19, 2021
An example of Brainf*** JIT-compiler with only the standard library.

jit-compiler An example of Brainf*** JIT-compiler with only the standard library. Prerequisite Rust(1.56.0-nightly or later, but it must work kind of

Akihito KIRISAKI 18 Jan 22, 2022
The missing desktop-autotype for Bitwarden.

bitwarden-autotype The missing desktop-autotype for Bitwarden. Autotype/Autofill support has been a requested feature in Bitwarden for years, yet no p

M*C*O 26 Nov 29, 2022
Building a better screen reader for the Linux desktop, one step at a time.

Building a better screen reader for the Linux desktop, one step at a time.

Odilia 44 Dec 31, 2022