OpenSwarm
![]() | |
| Developer | Stefan Trenkwalder |
|---|---|
| Written in | C (programming language) |
| OS family | Embedded operating systems |
| Working state | pre-alpha |
| Source model | Open source |
| Initial release | 2015 |
| Marketing target | Swarm robotics |
| Available in | English |
| License | adapted BSD License |
| Official website | www |
OpenSwarm is an open source embedded operating system for MMU-less robotic systems with a particular focus on low-computational-power devices.[1] OpenSwarm is an easy-to-use, event-driven, preemptive operating system for miniature robots such as e-Pucks or Kilobots. It offers abstract, hardware-independent functions written in C to make user code more extensible, maintainable, and portable.
OpenSwarm has been designed, from the start, as a hybrid kernel and provides two execution models: preemptive and cooperative scheduling. This enables the user to write long, computationally intensive threads or use short, run-to-completion segments of code that are executed asynchronously when needed. Together with system-wide event handling, the programmer can either use an asynchronous programming model where certain sections of code are executed on demand (e.g., on occurrence of an event) or a synchronous programming model where threads suspend while waiting for data/events.
OpenSwarm was designed to be highly customizable and portable. OpenSwarm can be configured to use or change the scheduling algorithm—even during runtime. The sensor values of a robot are pre-processed to provide hardware-independent information. Similarly, the hardware-independent output values for actuators are post-processed before they are applied to the output devices. This gives the user the opportunity to write applications that can be reused on several different platforms.
OpenSwarm was created by Stefan M. Trenkwalder during his PhD at the Natural Robotics Lab at the University of Sheffield in 2015. Currently, it is still in development and released as a pre-alpha.
Hardware
OpenSwarm is designed to run on hardware that is severely constrained in regard to memory, processing power, and communication bandwidth. The required computational resources of OpenSwarm are dependent on the platform's actuators, architecture, use of buses, and sensors. On the e-Puck, OpenSwarm requires about 1 kB of RAM and 12 kB of ROM.
Programming model
OpenSwarm has been designed, from the start, as a hybrid kernel and provides two execution models: preemptive and cooperative scheduling. This enables the user to write long, computationally intensive threads or use short run-to-completion segments of code that are executed asynchronously when needed. Together with system-wide event handling, the programmer can either use an asynchronous programming model where certain sections of code are executed on demand (e.g., on occurrence of an event) or a synchronous programming model where threads suspend while waiting for data/events.
The threads are time-sliced preemptively scheduled. Inter-process communication and synchronization are supported by using (system-provided or user-defined) events. Events can transport data or can be used as a trigger/flag. Through the system-wide support of events, event-driven programming can be used.
Features
OpenSwarm supports the following features:
- threads
- time-sliced preemptive scheduling
- cooperative scheduling
- Inter-process communication
- process synchronization
- event-driven programming
- providing a hardware-independent interface to I/O
References
External links
| Wikimedia Commons has media related to OpenSwam. |
This article "OpenSwarm" is from Wikipedia. The list of its authors can be seen in its historical. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.

