Giter VIP home page Giter VIP logo

ramen's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

ramen's Issues

Decouple painlessMesh from ramen

Don't call painlessMesh functions from ramen source. Rather, have an adapter in-between so that painlessMesh can be swapped out for another library down the line.

Generate statistics for large-scale simulation runs

From the proposal:

For our project, we will generate model networks with 20, 50, 100, 200, 500, and 1000 nodes in areas of 500m^2, 1000m^2, and 2000m^2, for both star and mesh topologies. For each combination, we will run 1000 simulations and gather and study the generated statistics.

Work is being done on graphs branch

  • Refactor run_coracle to execute coracle simulator n times in docker command and in parallel
  • Move to plotly because plotly 4 > matplotlib !!
  • Generate table of results showing mean and variance
  • Make a template to generate plot for whatever attribute
  • Find a way to terminate simulation processes on keyboard interrupt (phew!)
  • Find things to generate plots for
  • Generate master script to 1) make test file 2) execute simulator

Problems to fix in the final proposal

  • Add painlessmesh under MCU
  • Redo problem definition so that it is not a solution but actually address a problem - Barkin (trying) (I think Nishant accidentally did this)
  • Quantify the number of nodes and connection issues under problem statement - Barkin
  • Use consistent terms in blackbox model and pugh chart - Barkin
  • Add more pugh charts in relevant section - Nishant
  • Fix the microcontroller vs development board confusion in the pugh charts
  • Identify clearly the aspect that will be optimized and have it quantified - Nishant
  • Breakdown the expected final design into subproblems - Barkin
  • Cite examples about drones and consensus algorithms around reference 12 - Barkin
  • Make obvious which parts are existing literature and which parts are contributions (bringing it to low-power domain, cite vehicle stuff) - Nishant
  • Change name of 5W method - Nishant
  • Don't mention wired protocols in networking protocols section - Nishant
  • Tighten the language and fix grammatical errors - Nishant
  • Itemize the design constraints - Nishant
  • Refactor appendix - Nishant
  • Refactor references - Barkin
  • Spell and grammar check through Grammarly - Barkin
  • New figure for final design - Barkin
  • Answer more than standard set of questions - Nishant

Implementation Details [February 21 2021]

  • Description of how successful it has been to implement proposed design (proper description of implementation with suggestion for improvement)
  • Issues faced during implementation/experiments (identifies issues and why they occured with solutions)
  • Changes made during implementation (changes made with justifications)
  • Initial results (recorded and explained)

Designing PCBs and cases for the project demonstration in the physical world

I think it would be really cool if we go completely wireless in the final prototype for demonstrating the project (related issue #6). Otherwise, there will be many micro USB power cables connected to ESP8266s. It would look bad and kinda against our low-power consumption ideal/metric.

So, we can design a simple PCB with a few buttons, LEDs, 2xAA battery holder, and female pins for plugging an ESP8266 (and maybe even a small OLED screen?). Later, we can 3D print really simple cases for each of these "node"s.

Deliverables Statement [October 2 2020]

Having a bunch of ESPs connected to each other

Propagation of signal from one node to the rest of the nodes

Bringing a new node into the network allows for re-organization autonomously

Find simulators

  • Understand what to simulate
  • Find a simulator for mesh networking
  • Find a simulator for consensus algorithms

A subcomponent of #13

Coracle fails in scenarios where nodes aren't explicitly activated/deactivated

Problem

sim_config.py uses node IDs generated by network_generator.py. However, since the mesh network generation is probabilistic, not the exact number of nodes are generated in the network.

So, if we want a mesh network of 5 nodes, we may actually end up with a list of node IDs in the network such as:

"nodes": [
            {
                "type": "server",
                "id": 1
            },
            {
                "type": "server",
                "id": 4
            },
            {
                "type": "server",
                "id": 5
            },
        ]

instead of

"nodes": [
            {
                "type": "server",
                "id": 1
            },
            {
                "type": "server",
                "id": 2
            },
            {
                "type": "server",
                "id": 3
            },
            {
                "type": "server",
                "id": 4
            },
            {
                "type": "server",
                "id": 5
            },
        ],

As a result, the events section will look like:

"nodes": [
                    {
                        "id": 1,
                        "active": true
                    },
                    {
                        "id": 4,
                        "active": true
                    },
                    {
                        "id": 5,
                        "active": true
                    }
                ]

but Coracle hates that and crashes when it comes across something like that. Turns out Coracle expects node IDs to be sequential and consecutive...

Potential Solutions

  1. Overwrite the node IDs so that it looks like:
"nodes": [
            {
                "type": "server",
                "id": 1
            },
            {
                "type": "server",
                "id": 2
            },
            {
                "type": "server",
                "id": 3
            },
        ]
  1. Fill in the missing nodes in the events section so that
"nodes": [
                    {
                        "id": 1,
                        "active": true
                    },
                    {
                        "id": 2,
                        "active": false
                    },
                    {
                        "id": 3,
                        "active": false
                    },
                    {
                        "id": 4,
                        "active": true
                    },
                    {
                        "id": 5,
                        "active": true
                ]

Unify the reference format in the report

The format used in the references is not unified due to copying BibTeX style citations from different places. We need to make sure that they all follow the same format.

Clean up Zotero

We just hit the free 300MB storage limit, it is time for some cleaning!

Set up Messages Template

Create a template class to avoid code repetition in messages.hpp. All the classes have a similar structure so it is quite repetitive

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.