A robotics development framework
Clone or download
tomtzook Merge pull request #32 from Flash3388/dev
Dev merging: Changing git work method
Latest commit 90b689e Apr 6, 2018

README.md

FlashLib

FlashLib is a robotics software development library for Java, originaly designed to improve and help FRC teams, but can work on other non-FRC platforms. Although currently available only for Java, we aim to make FlashLib available for C++ as well.

The latest version of FlashLib is 1.2.0

Features

The library provides several different tools that can be both used for a robot development and for general softwares:

  • Utilities Functions: Including logs, array utilities, constants handling and data structures.
  • Mathmetical Structures and Functionalities: Vectors, Matrices, Complex, Interpolations, Integrals, Differentials, etc.
  • Communication Managment: Management of communications between two sides, including camera data communications and general communications, Interfacing with any port or bus: Ip sockets, Serial ports, SPI or I2C buses and more.
  • Image Processing: A dynamic vision system which require little to no knowledge about image processing. Can interface with any image processing library, but openCV interfacing is already built-in.
  • Human Interface Devices Interfacing: Remote control of robots using Human Interfacing Devices.
  • Action Scheduler: An action scheduling system to allow simple managment of robot system functionalities.
  • Algorithms: Built-In sensor-based motion algorithms and vision-based motion algorithms.
  • Generic Drive Systems: Built-in generic drive systems, including: Tank drive, Mecanum drive and Omni-Directional drive.
  • Flashboard: A robot operator's sophisticated dashboard with build-in image processing and several tools for monitoring and operating robots.
  • HAL: An Hardware Abstraction Layer with several built-in implementations.
  • Sensor and Motor Controllers Interfacing: Interfaing with motor controllers and sensors.
  • Control Station: Control software for non-FRC robots (integrated with Flashboard).

Dependencies

FlashLib depends on several libraries for its functionalities:

  • The openCV implementation of the vision system uses openCV
  • The openCV implementation for camera interfacing uses openCV
  • FRC robots using FlashLib require WPILib
  • Flashboard requires openCV for its vision functionalities
  • Flashboard uses jinput for reading controller data.

All of those libraries are available in the "libs" folder.

Versions

The versions used for dependencies by FlashLib are:

Building

Building the library requires gradle 4.1. If you have it, run gradle build. If you don't, run the gradle wrapper added to this project gradlew build.

You can find the binary files in the build/libs folder. Flashboard distribution folder is in build/flashboard ready to be used. To run flashboard, run run.bat for windows or run for linux which are located in the distribution folder.

The HAL binaries are located under build/{HAL NAME}/libs. Each HAL builds a shared library and a static library.

For further information, checkout the Wiki main page.

Code Of Conduct

FlashLib is here to help the community in the development of robotics solutions, and thus supports an open and welcoming envirnoment for users and developers. We expect everyone to act with respect and according to our code of conduct.

Please see CODE_OF_CONDUCT.md for information about our code of conduct.

Contributing

As an open-source project we readily welcome anyone wanting to contribute. But in order to maintain organization we have a few rules and guidelines for contributions.

Please see CONTRIBUTING.md if you are interested in contributing to this project.

Wiki

We are working tirelessly to provide has much documentations and guides for anyone who wants to use or learn about FlashLib. The FlashLib wiki contains information from features and how they work to guides for getting started. It is highly recommended to visit the wiki before starting to work with FlashLib.

The wiki is hosted with this repository and can be found here.

Examples

The source code contains several examples for using different features of FlashLib, we recommend checking them out.