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 start, as hybrid kernel and provides two execution models: preemptive and cooperative scheduling. This enables the user to write long computational 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 synchronous programming module where threads suspend while waiting for data/events.
OpenSwarm was designed to be highly customisable and portable. OpenSwarm can be configured to use/change the scheduling algorithm—even during runtime. The sensor values of an robot are pre-processed to provide hardware independent information. Similarly, the hardware-independent output values for actuators are post-processed before they are applied on 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[edit]
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 buses, and sensors. On the e-Puck, OpenSwarm requires about 1 kB of RAM and 12 kB of ROM.
Programming model[edit]
OpenSwarm has been designed, from start, as hybrid kernel and provides two execution models: preemptive and cooperative scheduling. This enables the user to write long computational 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 synchronous programming module where threads suspend while waiting for data/events.
The threads are time-slicing preemptive scheduled. Inter-process communication and synchronisation is 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[edit]
OpenSwarm supports the following features:
- threads
- time-sliced preemptive scheduling
- cooperative scheduling
- Inter-process communication
- process synchronisation
- event-driven programming
- providing a hardware independent interface to I/O
References[edit]
External links[edit]
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.