COSMOS is a controller interface with real-time packet based communication to your embedded device (with a little configuration). COSMOS can send commands, receive telemetry, has tools to do real-time and post processed graphing, telemetry display and playback with limits, limits responses, and much much more.
A C&DH architecture handles I/O (for communicating from your embedded device to your controller interface), mode based command filtering, command routing, in some cases OS abstraction (but not in this case), configuration management, filesystem management, and rate based telemetry (tlm) production.
Telemetry is considered any data the target embedded device produces, such as State of Health (SOH) tlm like temperatures and voltages, or science data such as images.
- Alagna is named after a ski resort near Ivrea Italy where the Arduin cafe is. Namesake of Arduino.
- based around a packet interface to COSMOS with rate based telemetry and thread execution
- The main intent is to have an Arduino-to-COSMOS setup predefined so any DIYer can get started for no effort.
Have 5 minutes? Get COSMOS talking to an Arduino: https://bitbucket.org/dholshouser/alagna/wiki/HowTo
- It's not 100% flight ready, but it’s got a registration scheme for cmd and tlm packets so applications are separated from the core
- Uses NilRTOS real-time preemptive kernel
- git clone https://github.com/greiman/NilRTOS-Arduino.git
- To install NilRTOS, copy the NilAnalog, NilRTOS, NilTimer1, and TwiMaster folders to your Arduino/libraries folder.
- Commands are routed to apps (currently, just from serial I/O)
- Rate based telemetry (10ms granularity for now)
- Every app inherits from the Application superclass which comes with predefined commands and State of Health tlm
- Cmd: Clear counters
- Clears SOH tlm counters
- Tlm: State of Health tlm
- number of cmds received, accepted, rejected, and last command response (OK, Reject, Fail, Param)
- Application registers with Command so your app doesn't need to do anything in order to receive commands.
- Your app declares instances of pkt structures then registers them with Telemetry at some rate or can push pkts asynchronously based on your own timing or events.
- Cmd: Clear counters
- COSMOS template start up configuration
- Uses 1KB of RAM space
- asynch tlm pushes so a app can push tlm based on events or at higher rates
- commandable/modifiable tlm rates,
- get a tlm pkt from another app (for inter-app communication)
- send internal cmds between apps,
- better mission unique separation from the core
- Cmd & Tlm app threads run at 100hz
- to be changed to an interrupt driven system
- mode based command filtering
- filesystem management
- file up/down loads
- SD card access
- I/O modularized so user can change based on their needs
- driver for xBee