UNPKG

webgme-rosmod

Version:

This repository contains ROSMOD developed for WebGME. ROSMOD is a web-based, collaborative, modeling and execution environment for distributed embedded applications built using ROS http://rosmod.rcps.isis.vanderbilt.edu

42 lines (27 loc) 3.35 kB
# ROSMOD Project [ROSMOD](http://github.com/rosmod) is an extension and formalization of [ROS](http://www.ros.org) which extends the scheduling layer, formalizes a component model with proper execution semantics, and adds modeling of software and systems for a full tool-suite according to model-driven engineering. When developing models using ROSMOD, the top-level entity is a ROSMOD `Project`, which is a self-contained collection of * Software * Systems * Deployments * Experiments These collections act as folders to categorize and separate the many different model objects by their associated modeling concept. In this way, the software defined for a project can be kept completely separate from any of the systems on which the software may run. Similarly, the different ways the software may be instantiated and collocated at run-time is separated into specific deployments which are independent of the hardware model and to some degree the software model. ## Project Creation To create a new project, you can either drag and drop a `Project` object from the `Part Browser` into the canvas when viewing the `Projects` _root node_ or you can right click on the `Projects` _root node_ of the `Tree Browser` and create a new child of type `Project`. Please note that you cannot drag a `Documentation` object into the `Projects` canvas to create a documentation object and that if you choose to create a `Documentation` object inside the `Projects` _root node_ it will not be displayed in the `RootViz` visualizer which shows all the Projects and will not be included in any of the generated documentation. ## Project Attributes Each project has special `Code Documentation` attributes: `Authors`, `Brief Description`, and `Detailed Description`, which are best edited by clicking on the `CodeEditor` visualizer. This visualizer fills the canvas with a [CodeMirror](http://www.codemirror.net) instance which allows the user to easily edit multi-line strings with: * automatic saving when changes are made * undo/redo * syntax highlighting * code completion, activated with `ctrl+space` * code folding, using the _gutter_ buttons or `ctrl+q` on the top of the code to be folded (e.g. start of an `if` block) while allowing the user to configure (using drop-down menus): * the currently viewed/edited **attribute** * the current **color theme** of the code editor * the current **keybindings** associated with the code editor (supported keybindings are `sublime`, `emacs`, and `vim`) The `CodeEditor` visualizer is used in many places throughout the UI; any object that has attributes which support editing using the `CodeEditor` will display the `CodeEditor` as a selection in the visualizers list in the `Visualizer Panel`. ## Project Plugins While viewing a project, the user can run the following plugins: * **SoftwareGenerator**: for generating and optionally compiling the `software` defined for the project according to the `host architectures` defined in the `system models` of the project. * **GenerateDocumenation**: aggregates all the `Documentation` objects in the project's tree, converts them to `ReStructuredText` and compiles them into `html` and `pdf`. * **TimingAnalysis**: generates a `Colored Petri-Net` model for performing timing analysis on the `deployments` (software instanced on _abstract_ hardware)