Skip to content
rakar edited this page Jan 15, 2019 · 6 revisions

Welcome to cyborg:

The cyborg project is an attempt to streamline the development of First Robotics Challenge software.

The intent is to provide a core framework to control the overall process, along with a set of extendable, customizable, replaceable, plug-in modules that each perform simple well defined functions. In combination, the framework and these modules, along with custom user modules should be able to perform any of the basic to complex functions required by modern competitive robots.

An overview chart can be found here.

Key to the philosophy for cyborg is that everything about the robot control program is broken up into bite-size chunks and each piece of code has a very specific role with strict boundaries. With cyborg all of the code is setup during robot initialization, this includes the definition of the physical devices on the robot, the structural organization of those devices, as well as mappers (which convert raw sensor and driver data into "request" information), controllers (which convert high-level control information into low level device commands), finally behaviors (which define the intelligence of the robot and determine how the robot will respond in any situation). One this is setup during initialization, the robot is simply left to operate.

For those familiar with standard FRC programming using the TimedRobot structure, this will be a little shift. The iterative structure is hidden by cyborg. Cyborg manages when mappers, behaviors, and controllers should execute. This may sound limiting at first, but it is not. The intent is to simply organize the code differently and in doing so provide a more robust, consistent, and reusable approach to developing code. For example it is common for many operations to be duplicated between Teleop code and any number of Autonomous routines. This often leads to duplication and varying implements of the same functions. But if your robot has a lift on it, it is the same lift whether you are working in Teleop or Autonomous, the only difference is who (or what) is controlling the lift. So by having the driver update cyborg's RequestData or an Autonomous Behavior update that RequestData the robot should operate the same way and the code to manage the lift need only be written once, hopefully only once for the rest of your FRC career.

Project Status:

This project has been updated to build with the 2019 FRC libraries. It is largely experimental, but initial testing shows that it fundamentally works. The Core has been tested in both FTC and FRC code. If issues are found they are likely in the Devices used. If you are interested in working with this project, please contact me. In the meantime, please feel free to explore the code and try it out if you'd like.

Welcome to cyborg Suggested Workflow

cyborg Elements:

  • assemblies
  • behaviors
  • controllers
  • data
    • CBControlData
    • CBLogicData
    • CBRequestData
  • devices
  • mappers
  • utils
    • CBStateMachine

In-work documentation

Clone this wiki locally