Giter VIP home page Giter VIP logo

rosmod / webgme-rosmod Goto Github PK

View Code? Open in Web Editor NEW
16.0 4.0 7.0 18.23 MB

This repository contains ROSMOD developed for WebGME. ROSMOD is a web-based, collaborative, modeling and execution environment for distributed embedded applications built using ROS

License: MIT License

JavaScript 71.82% CSS 1.90% HTML 0.35% SCSS 0.17% EJS 25.76%
webgme model-driven-development ros rosmod vanderbilt robotics distributed-systems model-driven-robotics

webgme-rosmod's Introduction

ROSMOD - Quick Start Guide

Clone Repository

$ git clone --recursive http://github.com/rosmod/rosmod

This Repository contains:

  • ROSMOD GUI v0.3
  • ROSMOD Component Model
  • Test Samples

Dependencies

  • Antlr Python2 Runtime 4.4.1
  • Cheetah 2.4.4
  • Fabric 1.10.1
  • TermEmulator 1.0
  • wxPython 2.8
  • dtach
$ cd <REPOSITORY_HOME>/utils
$ sudo ./dependencies.py

ROSMOD GUI

$ cd <REPOSITORY_HOME>/gui
$ python __main__.py
  • Add the following line to ~/.bashrc
alias rosmod='python ~/PATH_TO_REPOSITORY_HOME/gui/__main__.py'

ROSMOD Communication Layer

  • The ROSMOD Communication Layer is a modified version of the ros_comm communication layer in ROS.
  • ROSMOD introduces PFIFO and EDF-based scheduling schemes to the ROS callback queue.
  • ROSMOD also facilitates deadline monitoring i.e. deadline violation detection and logging for all callbacks.
$ cd <REPOSITORY_HOME>/comm
$ catkin_make -DCMAKE_INSTALL_PREFIX=/opt/ros/<ROS_VERSION> install

webgme-rosmod's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

webgme-rosmod's Issues

Multi-line Text should be specified as a specific base attribute/model type

This will mean that all Network Profile, Documentation, Abstract Business Logic, etc. attributes may have to be children (until WebGME supports custom attribute types) of their respective parents but will allow the CodeMirror - based editing to be more general and flexible (allowing for instance different syntax-highlighting, code completion, and linting for the c++, ROS, markdown, etc. types we support)

User guide for deployment and experiment models and infrastructure.

Should explain how the models work (containment hierarchy, etc.) as well as how they map to hosts on networks for execution. The end of this guide should be the execution of the RunExperiment plugin on a sample model and some explanation of how to get access the output of the experiments.

Running experiment should be saved into the model

Right now the running experiment's relevant info (the actual container->host mapping) is lost when the RunExperiment plugin finishes execution. These data should be saved as children of the experiment in the database. This will allow visualization of the actual experiment as well as more fine-grained StopExperiment execution.

We need a Pre-Experiment script launcher

Currently, in the Run_Experiment plugin, we have a hard-coded command "'export DISPLAY=:0.0'" in the start_processes function. Such commands are a property of the application and not the deployment infrastructure. So, commands like these need to be prepared in the model and therefore required as a concept in the metamodel.

Name constraints need to be added and checkable

Need to ensure that names for package, component, port, message, service and other items that become generated code follow proper naming conventions and don't have name collisions with each other. Need to also ensure that they do not collide with special or used names.

Experiments infrastructure needs a multiplier

I want to run a single experiment 32 times. It would be great if we have a multiplier textbox where users can specify a number. If the experiment needs to run 10 times and the user wants all the logs aggregated, then the user enter 10. Also, we need some way to differentiate between "Run as many times as possible if 10 unique hosts are not available" and "Do not run if you cannot run the experiment 10 times".

Relevant samples should be ported from V0.3

These include

  • client-server
  • publish-subscribe
  • three-component-example
  • timer
  • sequential-leds

Each of these should have at least a Localhost-only system/deployment/experiment (SDE) as well as a cluster based SDE.

Allow generation of source and deployment files without needing to run on server.

Allow SoftwareGenerator and RunExperiment plugins to be run on client side so that they can simply generate and zip the source files and deployment files for the project. This would be useful for guests on rcps.isis.vanderbilt.edu who do not have permission to use the cluster but still wish to create models and get back their generated code to compile and run themselves.

Need default visualizers for all objects

These visualizers need to account for the usage paradigm of the object and provide only the relevant options based on the meta-model (e.g. in Root visualizer (RootViz), only allow creation or deletion of Project objects).

These need support for connection drawing, pointer referencing, set membership, etc.

CodeMirror should be in tabs not modal dialogs

The CodeMirror code editing modal dialogs triggered from decorators should be refactored into separate tabs (fullscreen-able) inside the center-widget as part of a custom visualizer for their respective model object.

User guide for modeling practices and semantics.

Develop a user-guide which walks through one or two simple examples to show how to open/create, traverse, and edit models. Should cover simple software and system models including components, services/messages, networks, and hosts. The conclusion of this guide should be execution of the SoftwareGenerator plugin to produce source code and automatically compile it. Perhaps have a section on adding user-added business logic.

Refactor modelLoader and associated plugins to handle duplicate names and clean code

Use arrays to store objects instead of storing objects as key:value pairs in other objects. Currently the objects are stored with the key being the name of the object so name collisions result in overwriting the original object. By using arrays we easily handle duplicate names without issue and can use array.map(function(element) {}); syntax which is much cleaner

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.