Skip to content
Switch branches/tags

Latest commit

* * Making changes to the build scripts for Windows fixes and also
upgrading to 0.7.0 of capnp

* * Beginning to attempt to bring GAMS back into Windows compilability
* Added capnp feature, similar to the one added to MADARA
* Fixed warnings about conversions in several places
* Updated base_build.bat script to be slightly better for windows
building but still requires forcing installation of capnp or other
tools. I may have to give up on .bat scripting and just use perl or
something else here to properly set variables and dictate installation

* * Fixed template issues in VS 2017
* Fixed some external linking issues involving usage of GAMS_EXPORT
* Fixed OSC linking on Windows
* Only current issue that needs looking into is a set of C4244 warnings involving xutility

* * Forcing using c++ 14 to allow for capnp features

* * Synchronizing recent changes to GAMS windows_fixes. There still appears to be a linking error in clang for gams_controller involving MADARA linking

* * Updated capnp to be a feature so we can disable/enable the compilation on Linux and Windows

* * Updated CI tests to do a capnp optional with clang and g++

* * Updated GAMS CI to only call test_types if capnp is enabled

* * Separating capnp_files format in MPC from the feature of including it

* * Integrated capnp feature into the feature enabling process for building

* * Fixing some issues with the passthrough of capnp feature in the CI

* * Updating CI to include capnp in Android builds, since Java support currently has capnp baked in with no feature enabling

* * Fixed shadow warning in Epsilon.h
* Updated to use latest Eigen and clang 6.0

* * Updating GAMS build scripts to also build capnproto-java, though I'm not entirely sure it's necessary at this point to support the Java and capnp build anymore

* * Updated Multicontroller to no longer fail when resizing after a
default constructor call

* * Added patch file for capnpc-java
* Updated to respect the CC and CXX that is passed to the script as environment variables
* Updated travis.yml to force clang-5.0++

* * Updated Multicontroller to initialize variables in a resize by default. This allows for the creation of appropriate self_ variables within platforms without needing to call init_variables after an init_platform call

* * Fixed capnp types issues in GAMS
* Updated .travis.yml to include types checks on test_any test

* * Attempting to fix issues in Travis CI

* * Updated using_boost for latest boost versions with VS 2017 (required by UE)

* * Added explicit clang-suffix options for
  * Can invoke specific installation and compilation with clang-5, clang-6, clang-8, and clang-9

* * Fixing issue in last commit with special clang instructions to

* * Added support for the clang-SUFFIX build options to also affect all prereqs and not just MADARA and GAMS

* * Fixed issues with clang installation when you haven't set CLANG_SUFFIX or any of the FORCE_CC/CXX options in your bashrc. It should automatically do things now for clang-8 or clang-9

* * Updated base_build.bat to echo a .gams\env.bat that should set variables from command line

* * Added a set environment option to the base_build.bat script (setenv)

* * Updated base_build.bat for both VS2017 and VS2019 to be more seamless in installation process

* * Removing capnp from python and protecting some code with ifdefs for CAPNP

* * Fixed allow_failures issues in Travis CI
* Updated Travis CI config with updated jobs/exclude keywords

* * Removing clang-5 explicit call in Ubuntu Travis CI

* * Reverting change to force cc/c++ compiler clang-5 in ubuntu

* * Removed OSX clang zmq as zmq is no longer building on Mac

* * Adding zmq android build back to allow_failures

* * Added height differentiation and movement to FormationSync

* * Updated FormationSync to use Pose from_container to be more portable

* * Adding brew install for llvm 5, 6, 8 and 9

* * [skip ci]
* Adding Mac build instructions for clang into it's own section

* [skip ci]
* Updating Mac build

* * Updated mac/ to attempt to reference the local directory
  instead of the GAMS_ROOT environment variable (which may not be set

* * Fixed clang-8, clang-9, etc. support for Mac builds. This is needed to
  help with supporting Unreal Engine on Mac and future build features

* * Changed resize in Multicontroller to allow for only setting swarm.size
  instead of requiring all variables to be initialized in swarm vars
* Added refresh_vars to Multicontroller
* Reduced memory footprint for large swarms substantially in

* * Added installation option for opencv on Windows

* * Added opencv installation option for Linux

* * Updated to generate a project that is compilable on Windows

* * Added cmake support for base gams library and gams_controller

* * Windows script is now stable. Installs MADARA and GAMS with cmake
* Updated Cmake to install Boost and MADARA through find_package
* Added configuration and cmake system for GAMS

* * Fixed a scalability issue in gams_controller. The multicontroller was
  creating swarm variables, when it should just init_vars with the id to
  start with for populating self_ variables

* * Updated Windows installation to set PATH appropriately
* Updated MADARA and GAMS installation so linkage

* * Removed warnings in compilation with Cmake and stricter settings on Linux
* Updated CMakeLists.txt to build on Linux

* * Removed versioning from dlls in CMake process

* * Added gams_version
* Fixed incompatibilities between Cmake Windows, Linux, Mac

* * Added feature option for osc since UnrealGAMS is not primary simulator

* * Updated test_utility to properly feature-enable OSC

* * Add default feature of 0 for OSC

* * Adjusting osc feature-enable in for linux/mac

* * Reverted changes to Follow concerning the ReferenceFrame retrieval

* * Implemented initial hive controller

* * Added HiveController sanity checks
* Added test for HiveController
* Added default installs for tests and programs in cmake

* * Updated get_kb and refresh_vars to work with offsets in Hivecontroller

* * Fixed bugs in HiveController
* Added exists function to PlatformFactoryRepository to check if an
  alias is already assigned for a platform factory
* Added more debugging to test_hivecontroller when errors occur

* * Fixed clang warnings in cmake builds

* * Reduced codeowners to 1 user

* Add SCRIMMAGE support to GAMS (#84)

* Added updated base build script which includes scrimmage

* Change from SCRIMMAGE_ROOT to SCRIMMAGE_GIT_ROOT because of collisions in SCRIMMAGE

* Copy pasta file for linking

* Added cleanenv option which resets the environment. Fixes a longtime running bug where switching environments will cause the dependencies to be installed in different locations

* Add scrimmage feature

* Added building and linking files for scrimmage

* Small fix

* Starting work for integrating the build of a SCRIMMAGE plugin

* Fixing long standing bug where GAMS re-clones itself disregarding the fact that gams was already cloned and installed on a PC. Now, if the present working directory name is gams, it will not do so

* Upd

* Fix cleanenv

* Fix circular dependency

* Fix plugin path setting to happen after GAMS_ROOT is set

* Add plugin stubs to test if plugin is loading

* Added xml files and fixed using_scrimmage for include paths

* Small bug fixes to build process. Trying to debug missing headers for plugin linking

* Fix ordering in base build

* Numerous changes and SCRIMMAGE_ROOT fixes

* Added fix for endif in GAMSAutonomy

* Fixed build files, temporarily forcing use of c++14 so it compiles.

* Added updated gams.pc

* Added updated base build script which includes scrimmage

* Change from SCRIMMAGE_ROOT to SCRIMMAGE_GIT_ROOT because of collisions in SCRIMMAGE

* Merge capnp and scrimmage changes in basebuild

* Added building and linking files for scrimmage

* Small fix

* Starting work for integrating the build of a SCRIMMAGE plugin

* Fix circular dependency

* Fix plugin path setting to happen after GAMS_ROOT is set

* Small bug fixes to build process. Trying to debug missing headers for plugin linking

* Fix ordering in base build

* Numerous changes and SCRIMMAGE_ROOT fixes

* Add path to GAMSAutonomy.xml to scrimmage plugin path

* Add changes so that the plugin loads in. Though missing some variables, but loads in SCRIMMAGE

* Add default variables for car controller plugin?

* Add empty functions, still need to modify controller

* Lots of updates, added in scrimmage, still bugs for linking but mostly works

* Divided plugin and the full gams integration, compiles

* Fix 2 bugs with segfaults in gams_controller

* gams controller can now run a scrimmage instance and control its loops, as well as spawn in agents. more to come

* Fix missing env vars, works after a cleanenv now

* Runs and works tested with 1 agent now.

* Runs with 200 agents

* Change default world to just be a quadrotor base so we can control it with GAMS easy

* Some changes to scrimmage code

* Lots of changes, it runs now, just need to figure out how to get a madara file properly setting a KB through a gams controller

* Update

* Added temporary placement of

* Compiles and runs for now. No segfaults. But more coding to do as next position is not set

* Now moves

* Remove accidentally added scrimmage dir, now inside .gitignore

* Hooked up GAMSAutonomy plugin, now we're talking!

* Now moves exactly towards the positions given by GAMS

* Small changes

* Update

* Cleaning up of the GAMS repo with extra files/removal of non essential changes

* Add demo shell scripts

* Revert default world back to working model

* Spawning multiple agents programmatically now

* Now spawns at runtime, pending bugfix on scrimmage side

* Updated with most recent demo code

* Fixed off by 1 bug, agents move accordingly

* Fix multiple frame bugs and touch up some debug lines

* Add orientation function but there's a double orientation set bug atm

* Orientation setup needs to be rethough due to the way the scrimmage sim handles setting orientation

* Added run threaded support for super efficient running

* Update

* Add fixes to the pathing for mission path and plugin path for SCRIMMAGE inside base build

* Add change to prevent GAMS from being pulled from jredmondson master, super annoying when trying to develop

* Fix scrimmage mission path bug

* Add arg to print statement in Multicontroller

* Fix cleanenv params for paths

* Added singleton pattern and support for options for run_simcontrol_threaded and non threaded via KB/CLI scripts

* Added run threaded option as static var

* Fix exception in Follow bug after missed revert causing same bug again

* Update

* Add multiple types and passing of world file via madara mf/kb

* Add fixed wing support to GAMS scrimmage

* Add some function descriptions:

* Added log detailed statements

* Add demo scripts

* set SCRIMMAGE in

* Revert adding double line, already there.

* add $SCRIMMAGE support to testing

* Add #ifdef to SCRIMMAGEBasePlatform.cpp

* Add in #ifdef to SCRIMMAGEBasePlatform.h

* Remove simcontrol pointer in Multicontroller.h

* Remove simcontrol object use from Multicontroller.cpp

* Add auto yes option to PPA for SCRIMMAGE

* * Updated to version 1.3.0
* Adding notes to changes to discuss with Devon about Scrimmage support
* Made sure to add the GAMS_SCRIMMAGE ifdefs in files where appropriate
  to prevent compilation in cmake and any other build system
* Added debug warnings for hive not being set in HiveController

Co-authored-by: TheDash <>

Git stats


Failed to load latest commit information.

Build Status Documentation Status Javadocs

About GAMS

The Group Autonomy for Mobile Systems (GAMS) project at Carnegie Mellon University is intended to provide a distributed operating environment for control of one or more unmanned autonomous systems (UAS). The repository is composed of C++, Java, MADARA, and some LUA bindings that enable a single person to control and understand information from a swarm of agents, robots, or UAS. GAMS provides developers with all tools necessary to take simulations of multi-agent systems to reality by building on the MADARA project for extensible, distributed knowledge and extending a decentralized world view with portable algorithms and robotic or virtual platforms.

GAMS is an extension of an earlier project called SMASH.


See the instructions at for a list of methods for installing GAMS and its prerequisites. For Linux users, we have scripts in $GAMS_ROOT/scripts/linux that are useful for not only building but also getting the latest version of repositories. See the script in the linux directory for more information (pass help to it).

For Windows users, you will need to download the repositories for ACE, MADARA and GAMS along with whatever options you are wanting to compile in. Then, you can use the helpful base_build.bat script in %GAMS_ROOT%\scripts\windows to build GAMS and prerequisites. Pass help from command line to see options.

For the base_build scripts on Linux or Windows, you will need to at LEAST pass in "madara gams" in on a first build. After that, you can pick and choose what you want to update. Tests, vrep, and other options will need to be added by most users. There is a build_c++ script that wraps common options for most users.

Generating GAMS projects

We have a script called in $GAMS_ROOT/scripts/projects that is very useful for generating almost any kind of GAMS or MADARA project. See -h for usage information. The most common GAMS Project Configurator (GPC) usage is the --new-algorithm option and the many options for configuring a VREP simulation. Again, see the help information for specifics.

Compiling GAMS projects

After you've generated a project with the GPC, you should see two scripts in your project directory (action.bat|sh). The .bat file is used by Visual Studio users to compile GAMS projects. The .sh file is used by Linux g++ users to compile GAMS projects. Pass "help" to the script for usage information.


  1. Please see our helpful Wiki which include guides at:

  2. Please see our full c++ doxygen documentation at:

    Java docs are available here:

  3. Issues can be posted to our Issue system (which hasn't gotten any usage):

  4. The SEI at CMU created an Autonomy Tutorial Series that covers usage of GAMS to create multi-agent autonomy.

  5. If you are still having trouble, feel free to contact me directly at: