Git Product home page Git Product logo

infdist's Introduction

This repository contains the main part of the information distribution optimization middleware.

ROS node

The whole repository has a structure of ROS2 node. The node can be used to optimize information distribution in ROS2. An example usage of this node is available at: https://gitlab.aau.at/aau-nav/development/camera_streaming .

Simulations

Directory infdist/simulator contains a framework to run simulated experiments in NS3. We also provide a docker image to make it easier to install and run simulations.

Using the docker container

Using the provided Docker container is the easiest way to re-produce our results. First, install Docker and make sure that Docker deamon is running. Then:

$ cd docker
$ ./build.sh
(...)  # takes around 40 minutes on my laptop
$ ./start.sh
# This will start the docker container and switch us to the shell opened
# inside this container
# Read the instructions to find out the supported commands.
$ infdist DropRateVsUtility
(...) # This might take a couple of hours.
# After the command is finished the resulting plots should appear in /tmp

In the example above the experiment "DropRateVsUtility" is started. In order to see a list of all available experiments use infdist command without any arguments. For your convenience the list of available experiments is also provided below. Keep in mind, however, that this readme is updated less often than the code, so it might still be a good idea to check the output of infdist command.

Available experiments:

DropRateVsUtility

To be published in:
Information Distribution in Multi-Robot Systems: Generic, Utility-Aware Optimization Middleware
Description:
The experiment designed to show the relationship between the amount of messages that can be transmitted and utility. It also plots mission characteristics as a way to quantify problem difficulty.

GoodputVsRate

To be published in:
Information Distribution in Multi-Robot Systems: Adapting to Varying Communication Conditions
Description:
The experiment plots relationships between publishing rate, amount of data inflight and various measurable factors like the value used in variable goodput constraint (called 'TCP Vegas' on graphs), latency and reception rate. It is helpful to understand how the network behaves.

GraphMessages

Published in:
Information Distribution in Multi-Robot Systems: Utility-Based Evaluation Model
Description:
This simple experiment only graphs the messages and their utilities on a time scale.

LimitedThroughput

To be published in:
Information Distribution in Multi-Robot Systems: Adapting to Varying Communication Conditions
Description:
The experiment is designed to show how the adaptive goodput constraint performs under limited throughput conditions.

VaryingBackgroundTraffic

To be published in:
Information Distribution in Multi-Robot Systems: Adapting to Varying Communication Conditions
Description:
The experiment shows how the adaptive goodput constraint performs under varying background traffic.

Manual installation

  1. Install NS3
  2. Install all requirements from requirements.txt
  3. Run main_ns3.py from NS3

In order to generate plots you also need plotly and plotly-orca. The Dockerfile [https://github.com/zeroos/infdist/blob/master/docker/Dockerfile] can serve as a working example of what needs to be done.

Code structure

If you are just interesting in having a look at the code in order to better understand how it is working, below we provided descriptions of the most interesting files:

infdist's People

Contributors

zeroos avatar

Watchers

 avatar

Forkers

yuxinmo

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.