Giter Club home page Giter Club logo

Nevermore FMS

The Nevermore FMS is a fully-customizable and all-around agnostic FMS with the goals of being:

  • Extensible: The Nevermore FMS embeds a full V8 Javascript engine within itself to run "Nevermore Plugins". These plugins have the ability to add React components to the UI, listen for events from the field, send messages to it's UI components, implement new hardware, and much more.
  • Safe: The Nevermore FMS employs overrides for all critical components that can be invoked by referees and administrators at anytime, bypassing any code written inside plugins. This provides a safety net that removes the mission critical aspects of designing a FRC game and can allow for custom game design to be far more accessible for FRC students.
  • Fully-Featured: The Nevermore FMS is designed to be capable of handling all of the same parts as the Official FIRST FMS, while also making them more accessible to all students. This includes the networking components (VLAN and DHCP setup), hardware components (PLC's controlling lights and sensors), and UI components necessary for competition.

Quick Disclaimer

TLDR: Robots are dangerous, try not to kill nor injure anyone with this software, but if you do I take no responsibility :)

I would assume that if you're reading this you have some familiarity with either FIRST and the FIRST Robotics Competition or general robotics. In both cases they teach the same thing: safety, safety, and more safety. Please, please, please be careful with this FMS, I can't tell you how many close call I've had from neglecting simple safety when interacting with robots being controlled by this FMS. All major releases of this FMS are both unit tested and manually tested, though misuse is still possible, please read the documentation (TODO) carefully to take proper precautions.

Building

If you want to use this in production, make sure you only use released builds from the releases page. Though if you want to test or help develop, you can build it through the following steps.

  1. First ensure you have Rust fully installed for your system. Follow the instructions on the install page for more info.
  2. Run the following commands:
# Clone the repository.
git clone https://github.com/Nevermore-FMS/nevermore-fms.git

# Move into the downloaded directory.
cd nevermore-fms

# Build a release build
cargo build --release

# Run the build (Linux/OSX)
chmod +x ./target/release/nevermore-fms
./target/release/nevermore-fms

# Run the build (Windows)
target/release/nevermore-fms.exe

Developing Plugins

Want to create your own Nevermore Plugins? Well the good news is it's as simple as a single command to get started:

npx @nevermore-fms/create-plugin

Yep, that's right, with one command you can create a full plugin project scaffold, including all the utilities you could want for easy development.

Once you have configured the project it can easily be run on a local development instance of Nevermore with:

# This command will automagically download the latest compatible Nevermore developer build
npm run develop

Your plugin should then be deployed to the local Nevermore instance and begin running immediately. More information on plugins can be found in our documentation (TODO).

Contributing

Want to help in developing the Nevermore FMS? Feel free to take on one of our outstanding issues, add your own features, or contact me for recommendations and help on things to work on.

Licensing

This project is under the GPLv3 license. Essentially, this means that you can modify this code in any way you want, though if you distribute the code you must provide the source code to them. For more information, go here

Nevermore FMS's Projects

nevermore-fms icon nevermore-fms

A fully-customizable FMS designed around extensibility and compatibility.

openwrt icon openwrt

This is a fork of OpenWRT designed to mimick FIRST's radio firmware. Will be used to propose improvements that can be integrated with the Nevermore FMS.

website icon website

The Official Website of the Nevermore FMS

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.