Skip to content
Tom Tzook edited this page Jun 19, 2017 · 14 revisions

Welcome to the FlashLib wiki!

In this wiki we will be reviewing the FlashLib library - its features and functionalities, and learn about robot development. We will talk about the uses of FlashLib, about advanteges and disadvanteges. We will explain simple advanced topics in robotics. And most of all, we will have a lot of fun!

Intoduction

FlashLib is a robotics software development library for Java and C++. It provides different tools and functions which assist in the development of robotics solution, mostly for starting developers. Although initially meant for FRC teams, it is more than possible to use it them developing on other platforms, such as BeagleBone Black and Raspberry PI.

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 guidlines for contibution, which were placed to avoid misunderstandings or some other issues. The guidlines are specified in CONTRIBUTING.md and are also discussed in the contribution section of this wiki. In addition, we use a BSD license and hence FlashLib is free for both academic and commercial use.

Features

FlashLib provides several main features that make up its core, and several utility features and other small helping features.

Main Features

  • Dyanmic Vision System: The Dynamic Vision System provides an easy-to-use automatic image processing which requires 0 code writing to process an image. Each image is processed through user-defined filters that filter out unwanted contours in several different ways. At the end of such process, the resulting contours are analysed and analysis data is returned to the user. Users can define filters in XML files for the system to use. The vision system uses openCV to perform the analysis, but it is possible to use the system with a different library, provided an interface is created.
  • Communication Management System: The Communication Management System offers a complex network control to allow seperation of data that passes through a single port. The communication is splited into mini-networks of 2 Sendable objects that communicate with each other. Each Sendable object is seperate and can send or receive data seperatly from other Sendables. The communication is done between 2 Sendable objects - one on each side. When a Sendable object is added to the Manager, data about it is sent to the other side. If a correspanding Sendable object exists, communication between the 2 is initiated on the same port. Otherwise, a new Sendable object is created according to the user parameters, if possible, and starts communication with the given object. To allow maximum flexability, the Manager can send and receive data in any wanted way through the use of CommInterfaces.
  • Robot Scheduling System: The Robot Scheduling System acts like a small operating system and allows easy control of multiple systems at the same time. Each system on the robot is represented by a System object and can run a single Action at each given time. Those Actions are managed and scheduled by the Scheduler, which is also resposible of making sure to avoid collision between multiple Actions on a single System. When an Action is started, the Scheduler checks if the System already has an Action running on it, and cancels that Action. It is possible to define a default Action for each System. If no Action is running on that System and a default Action exists, that Action will be executed.
  • Flashboard: Flashboard is a dashboard for robot operators. It includes a dynamic control creation system and integrated vision runners. Through the robot, by creating a simple class, it is possible to control complex GUI controls on the Flashboard. Those controls are created based on code written on the robot. The integrated vision system uses the Dynamic Vision System. It is possible to load filters from the robot, or from files on the computer. Analysis data is sent back to the robot.

Other Features

  • Mathmatical functions: FlashLib contains an array of Math functions, like: Vectors, Matrices, Interpolations and more.
  • Generic Systems: Pre-made generic drive systems, like: Tank drive, Mecanum drive, Omni drive, etc.
  • Algorithms: Algorithms for sensor-based or vision-based motion.
  • Cameras: Camera interfacing using openCV.
  • Human Interface Devices: Human control using joystick and controllers.
  • Log: A basic log for robot operation tracking.
  • Constants Handling: The ConstantsHandler provides a simple way of saving and accessing data.

In Development

  • HAL: The FlashLib Hardware Abstraction Layer provides abstract control of IO for several platform, thus allowing easy development for multiple robotic platforms. Current platforms in development are BeagleBone Black and Raspberry PI.
  • Robot Control Station: A software for remote control of robots. Allows use of Human Interface Devices and operations tracking.