Skip to content
jmalins edited this page Dec 25, 2012 · 16 revisions

VexOS for Vex Cortex

VexOS is a set of objects designed to simplify programming advanced robot capabilities on the Vex Cortex microcontroller in C. As there is no freely available firmware for the Vex Cortex, VexOS depends on the Intelitek easyC for Cortex runtime.

The main functions provided by VexOS are:

  • Command-based Robot Development Environment - VexOS models robot hardware as discrete Subsystems. The behavior of these Subsystems is then orchestrated by a series of Commands. This architecture is based on the WPILib software developed for the FIRST Robotics Competition.
  • Hardware Abstraction Layer - VexOS wraps the easyC hardware API in a set of object-oriented classes. This greatly improves the modularity and readability of hardware access code.
  • Unified User-Interface Framework - VexOS provides a core set of functionality for both the Vex LCD and the "Graphic Display" within the IFI Loader application. Included robot dashboards allow for simplified debugging as well as reviewing robot hardware configurations.

VexOS is free software, licensed under the Lesser GNU General Public License v3. Portions of VexOS, in particular the command scheduler were adapted from the corresponding Java code in the WPILibJ source, which has been released as free software under the more-permissive FIRST BSD License. Where such code is used, it is being redistributed under the terms of that license.

Goals

VexOS was inspired by the elegant robot control scheme introduced to FRC with the release of the WPILib Command-based architecture in 2011. That library brought about a significant change in the way Team 2438 ('Iobotics) taught robot programming and a corresponding increase the quality of code generated by student programmers.

The goal of VexOS is to provide enough high-level functionality in an easy-to-use, object-oriented library to allow VEX robotics students (and their mentors) to focus on the design aspects of robot programming, rather than the raw mechanics. By abstracting out the low-level implementation details, students with less programming experience can learn, model and execute significantly more sophisticated software designs. Put simply, it is difficult to get students thinking in terms of encapsulated functionality, flow-charts and logical design if they have to struggle with state-machine flow control and a cryptic easyC API to implement those concepts. VexOS brings VEX software development more in line with the vast majority of practical software engineering today. Like it or not, the primary task of the modern programmer is piecing together existing libraries to get robust, high-value functionality as quickly as possible. For the students that are interested in going deeper into the low-level internals, the VexOS source code is readily available, with modification strongly encouraged.

An added benefit of using VexOS is that common programmer training can be used for both VEX and FRC students. Skills learned for one competition can be readily applied to the other. Beyond that, significant amounts of code can be shared between the projects as well, with only basic syntax translation required.

Documentation

See the following topics below:

VexOS Design Philosophy
Using VexOS in easyC
Defining the Robot
Defining Subsystems
Working with Hardware
Defining Commands
Defining Buttons
Custom User Interfaces
Building VexOS
Using VexOS outside of easyC
Debugging VexOS in XCode

Download

So, this is the first thing you look for even though we are on github and surrounded by source code. Figures. If you'd like to download only the binary releases of VexOS, those can be found on the VexOS Releases page.