Skip to content
Tom Tzook edited this page Jul 19, 2019 · 14 revisions

Welcome to the FlashLib wiki!

In this wiki we will be reviewing the FlashLib library - its features and functionalities, advanteges and disadvanteges; and learn about robot development.

Introduction

FlashLib is a robotics software development library for Java and C++. It provides various tools and features for developers, making the creation of robotics solutions much easier.

Initially, FlashLib was developed specifically for use in the FIRST Robotics Competition (FRC), but over time it has grown and can now provide the same services for non-FRC robots.

FlashLib is an open-source library. Our main aim for the library is community development, and as such, we welcome anyone who wants to contribute. We have several guidelines for contribution, which were placed to avoid misunderstandings or some other issues. The guidelines are specified in CONTRIBUTING.md. In addition, we use a BSD license and hence FlashLib is free for both academic and commercial use.

Features

FlashLib provides a lot of features for users, some can even be used for non-robot projects.

Robot Framework

The robot framework provides a base for running and controlling robots and managing operations on the robot with ease. In addition to that, users have access to control loops, algorithms and more, all of which is completely optional. So basically, it is possible to immediately jump into creating a software without worrying about planning the robot control.

Robot Control

FlashLib uses a control loop for robot control. Users define control modes for their robot and the framework runs a continuous loop which execute user code for the appropriate operation mode when necessary. Selecting operation modes depends on users, because there are many ways choose modes. So it is possible to set the mode from the robot, or an entirely different and remote software.

Task Scheduling

Most robots have multiple systems, each performing a different task at the same time, and controlling that from code can sometimes get messy. Because of that, FlashLib introduces a scheduling system which allows users to execute and schedule tasks for multiple robot systems quickly. Using the scheduling system allows for quick execution of a dozen different tasks, something that can be incredibly useful with autonomous robots.

Please refer to the Scheduling System page for further information.

Human Interface Devices

Sometimes manual control is wanted for the robot, and this too, is already taken care of. FlashLib provides an HID package, filled with different types of controls and execution tasking. The actual retrieval of HID data is abstracted, so users can read data from controllers however they like.

Control Algorithms

FlashLib features several awesome control algorithms which provide control of popular drive systems, such as: tank drive, mecanum drive, etc; as well as autonomous motion algorithms for sensor-based operation.

PID

FlashLib provides a build-in PID controller, allowing users to control the robot's operation more reliably. The controller itself is used in FlashLib's motion algorithms extensively.

Vision Library

Image processing is awesome. It copies the power of the human eyesight and allows our robot to collect more data from its surroundings. But, for all its merits, it is extremely difficult to code. So FlashLib introduces the Dynamic Vision System which makes image processing a lot easier to execute and control.

You can read this wiki page for more information.

Getting Started

To start developing robot software using FlashLib, please refer to our guide.

Building

FlashLib uses version 4.9 of the Gradle build tool for building. It is recommended to use the gradle-wrapper provided with the project. Use gradlew.bat in windows and ./gradlew in linux.

To build all of FlashLib, simply run gradlew.bat build (on Windows platforms) or ./gradlew build (on Linux platform) in the root directory of the project. But, it is possible to build only parts of the library depending on which is wanted.