Giter Club home page Giter Club logo

javaautobuilder's Introduction

JavaAutoBuilder

Team 238's new and improved autonomous mode builder (name in progress)

Goal

we already had a perfectly serviceable program to work with that had been getting small updates every now and again. Unfortunately, it had some minor annoyances with it, and the students who worked on it were long gone. yes, we could have learned c# and added to the program, but I decided that wouldn't teach me what i wanted to know, so i completely rewrote the program from the ground up in Java and Kotlin using the in-development java-gtk language bindings, allowing theoretical cross-platform support for linux, windows, and mac. And it was fun.

what does it do?

the program makes a json file in your deploy directory that holds all of your autonomous modes. each entry is a list of commands, their parameters, and what (if any) mode of parallel it uses. optionally, if you have wpilib installed, and you wrote your code in java, you can use THE POWER OF REFLECTION to type check the parameters of the commands and change any entry fields that have an enum associated with them in your robot code to a drop-down of all of its possible values. additionally, if there is something that cannot be known at compile time, such as all of the possible trajectories in your pathplanner directory, you can add a handy-dandy .kts file into the plugins directory of the app to make your own custom source for dropdowns!

only java-based robot projects are supported at the moment. if you are savvy with c++ and kotlin, feel free to develop the c++ library as a part of the AutoBuilderLib project that goes with this.

Setting up your Robot Project

the robot side of things is handled by the AutoBuilderLib vendordep conveniently created for this very purpose, so head over there to learn more

Building the program on your own

in case you would like to contribute to the project, or you want to test the main branch, this is the part of the guide for you.

Windows

The program requires gtk-4 and libadwaita-1 as build dependencies

the easiest method to get them without building gtk yourself is using msys2.

  1. install msys2 from their website, or from chocolatey
  2. open MinGW64.exe and run this:
pacman -S mingw-w64-x86_64-gtk4 mingw-w64-adwaita-icon-theme mingw-w64-libadwaita
  1. then add the bin, lib and include directories of the msys2 install directory to your windows path
  2. this project should install all required gradle dependencies, although you may need to install jdk17 using your preferred method
  3. optionally, install wpilib, vscode is not required, only the libraries.

Build on Linux distros

NOTE: until flatpak support is added, only distros providing Libadwaita 44 and above are usable

OpenSUSE Tumbleweed

  1. download the dependencies
sudo zypper install libgtk-4-1 libadwaita-1-0 java-17-openjdk
  1. optionally, install wpilib, vscode is not required, only the libraries.

Ubuntu 23.04

sudo apt install libgtk-4-1 libadwaita-1-0 openjdk-17-jdk
  1. optionally, install wpilib, vscode is not required, only the libraries.

Fedora 38

coming soon

Set up development on MacOS

coming soon

javaautobuilder's People

Contributors

me6262 avatar bailuk avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.