glswarm is a c++ toolbox intended to facilitate the study of planar (and eventually 3D) swarming, flocking, collective motion, and cooperative control algorithms. glSwarm is primarily developed by Dan Swain at the Dynamical Control Systems Laboratory at Princeton University.
10/6/08 - glSwarm is in a constant state of development and hence may not build as-is. If you are interested in using glSwarm, please email Dan. playSwarm (playback functionality) will usually build with a little tweaking.
glswarm has three main features:
Simulation Engine - Algorithms may be simulated with the results displayed and parameters modified in real-time. Virtually arbitrary algorithms may be implemented by deriving from the base classes. Heterogeneous groups of agents can be simulated within a single, interactive environment.
Playback - Data generated by external programs (e.g. Matlab) may be loaded and displayed with playback controls such as pause, rewind, fastforward, etc.
Output - The display may be printed to an encapsulated postscript (EPS) file for easy inclusion in Latex documents. Communication digraphs may also be output to Graphviz .dot files which can be easily converted to EPS or PDF. Videos can easily be made by outputing a sequence of frames.
Sample output from a simulation with limited communication, showing sensing regions and connections.
Sample output from a simulation with a large number of individuals with all-to-all communication.
Implementation - glSwarm is written in c++ with an aim for computational efficiency. Multi-core processors can be taken advantage of on OS X and Linux using POSIX threads. Visualization is accomplished via OpenGL. GLUT is utilized to provide windowing and the user interface. Main development of glSwarm is done on Mac OS X, though in theory it should compile on Linux with only minor modifications and Windows with only slightly less minor modifications. If you are interested in testing the build under alternative environments, please contact the author.