Skip to content
Ball Aerospace COSMOS
Ruby C AutoHotkey Batchfile HTML Shell Other
Branch: master
Clone or download


Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE Update issue templates Apr 30, 2019
autohotkey fix config_editor ahk Dec 30, 2019
bin Check syntax before instrumenting & remove require_utility Nov 6, 2019
data Add arbitrary field setting to serial drivers Mar 25, 2020
demo Fix cmd param table size and display hazardous descriptions Apr 1, 2020
ext Add faster identification method as default. closes #911 Oct 30, 2018
install Release COSMOS 4.4.2 Mar 9, 2020
lib Merge pull request #1160 from BallAerospace/ccscs_time_precision May 21, 2020
spec Fix precision in ccscs2sec May 4, 2020
tasks Fix gemfile_stats and reorder Excel output Aug 5, 2019
test Merge branch 'master' into handbook_assets Jun 19, 2019
vendor Update mac installer for latest Macos, and update to ruby 2.5.8 May 21, 2020
.coveralls.yml re#9 Integrate with coveralls Jan 14, 2015
.dockerignore closes #1104. Create releases from Docker Dec 30, 2019
.gitattributes closes #126 GUI chooser updates May 8, 2015
.gitignore closes #1104. Create releases from Docker Dec 30, 2019
.rubocop.yml Cleanup gui/dialogs according to rubocop rules Jan 12, 2017
.travis.yml Bump ruby versions Dec 6, 2019
.yardopts Update documentation Jan 2, 2018
CONTRIBUTING.txt Resolve inconsistent failures in specs. Remove windows quotes from CO… Jan 5, 2015
Dockerfile Minor updates Mar 9, 2020
Gemfile loosen termios requirement Jul 11, 2018
Guardfile #3 Remove copyright symbols which bother simplecov and rdoc Dec 29, 2014
LICENSE.txt Initial commit Dec 22, 2014
Manifest.txt Release COSMOS 4.4.1 Dec 30, 2019 Add reference to Docker documentation Dec 4, 2019
Rakefile Minor updates Mar 9, 2020
appveyor.yml Remove appveyor ruby 2.6 Oct 10, 2019
cosmos.gemspec Fix benchmark-ips version May 4, 2020 add script to build gems on linux for release May 16, 2018
roodi.yml Initial commit Dec 22, 2014
run_gui_tests.bat Add cmd_params and update AHK testing Nov 18, 2019

Welcome to Ball Aerospace COSMOS

"The User Interface for Embedded Systems"


Ball Aerospace COSMOS provides all the functionality needed to send commands to and receive data from one or more embedded systems referred to as "targets". Out of the box functionality includes: Telemetry Display, Telemetry Graphing, Operational and Test Scripting, Command Sending, Logging, Log File Playback, Table Management, and more.

So what can you use this for? We use it to test about everything we create and COSMOS is great for automating any system of embedded systems. It can provide a fully featured user interface to any piece of hardware that provides an electronic way of communicating with it (TCP/IP, UDP, Serial, etc). Potential uses range from testing embedded systems, to home automation, to verifying cell phones, to helping you make that next great thing that changes the world! The sky is the limit...

After configuring COSMOS to talk to your hardware, you immediately can use the following 15 tools:

COSMOS Architecture

  1. Command and Telemetry Server

    • This is the heart of the realtime functionality within the Ball Aerospace COSMOS system. It maintains realtime connections to each target in your system and is the single point for all outgoing commands and incoming telemetry packets. By default, it logs all commands and telemetry sent/received for later review and analysis. The Command and Telemetry Server also monitors limits on all telemetry packets received.
  2. Replay

    • Replay masquerades as the Command and Telemetry Server but it sources telemetry packets from telemetry log files instead of realtime streams. VCR style controls are provided to move backwards and forwards through telemetry logs and play them back into the other COSMOS realtime tools. Especially useful with Telemetry Viewer. Cannot be used at the same time as the Command and Telemetry Server (at least on the same computer).
  3. Limits Monitor

    • The Limits Monitor tool provides an overview of all telemetry points in the system that are currently out of limits. It also maintains a log of limits changes and continues to display items that have gone out of limits even after they have been restored to green status.
  4. Command Sender

    • Command Sender allows you to manually send one-off commands with conventient drop downs and descriptions of each command and command parameter.
  5. Script Runner

    • Script Runner allows for running COSMOS test procedures or any other Ruby code from a graphical environment that highlights each line as it executes. At anytime during execution, the script can be paused or stopped. If a telemetry check fails or any other exception occurs, the script is immediately stopped and the user notified. Built-in code completion makes writing COSMOS scripts easy.
  6. Test Runner

    • Operations and formal testing meet the unit test framework paradigm. Test Runner allows you to break your operational or test procedures down into discreet test cases that each complete with either SUCCESS or FAILURE. After running, a test report is automatically created for you. Convenient features such as the ability to loop testing help get the kinks out of your system before formal runs.
  7. Packet Viewer

    • Packet Viewer provide a simple key value list of each telemetry item in the system giving you full view of the most recent realtime value of any telemetry point.
  8. Telemetry Viewer

    • Create custom organized telemetry screens using a wide variety of available telemetry widgets for display. Provide exactly the views that your users need to see for each subsystem in you system.
  9. Telemetry Grapher

    • Realtime and offline line graphing and x-y plotting of telemetry points. Multiple telemetry points per plot, multiple plots per tab, and multiple tabs allow you to efficiently organize your data. Great for graphing temperatures and voltages both in realtime and post-test.
  10. Data Viewer

    • Sometimes data cannot be displayed effectively in telemety widgets or is not as useful without being able to scroll back through a history of values. Data Viewer is used to provide a textual display of telemetry items and packets with scrollable history. It provides a great display for log messages, events, memory dumps, and other forms of data that don't fit well into the other display options.
  11. Telemetry Extractor

    • Used for offline analysis of telemetry log files. Telemetry Extracts extracts a given list of telemetry items from a telemetry log file into a CSV file for further analysis in other tools such as Excel or Matlab.
  12. Command Extractor

    • Used for offline analysis of command log files. Takes binary command log files and converts them into human readable text.
  13. Handbook Creator

    • Creates Command and Telemetry Handbooks using the information in the COSMOS configuration files in both HTML and PDF formats. This provides a more human readable reference document to give to people who want to use a COSMOS system.
  14. Table Manager

    • Table Manager provides a graphical binary file editor that provides a convenient method for creating and modifying binary configuration files/tables.
  15. OpenGL Builder

    • OpenGL Builder helps in building 3d scenes of objects made of STL (stereolithography) files that can then be used within custom written COSMOS applications where they can be animated or change color based on telemetry.

COSMOS is built and maintained by Ryan Melton (ryanatball/ryanmelt) and Jason Thomas (jmthomas) at Ball Aerospace & Technologies Corp.

Getting Started

  1. Install COSMOS at the command prompt if you haven't yet:

     gem install cosmos

    Note on non-windows systems you will need to have all necessary prerequisites installed (primarily cmake and qt 4.8.x). See the Installation Guide for detailed instructions.

  2. At the command prompt, create a new COSMOS project:

     cosmos demo test

    where "test" is the application name.

  3. Change directory to test and start the COSMOS Launcher:

     cd test
     ruby Launcher

    Run with --help or -h for options.

  4. Click on the various tools to start experimenting with COSMOS!

  5. Follow the Documentation to start developing your configuration.


See our Docker documentation here: COSMOS Docker Directions


We encourage you to contribute to COSMOS!

Contributing is easy.

  1. Fork the project
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

Before any contributions can be incorporated we do require all contributors to sign a Contributor License Agreement here: Contributor License Agreement

This protects both you and us and you retain full rights to any code you write.

Code Status

  • Travis Build Status
  • AppVeyor Build Status
  • Code Climate
  • Codecov


Ball Aerospace COSMOS is released under the GPLv3.0 with a few addendums. See LICENSE.txt

You can’t perform that action at this time.