Giter Site home page Giter Site logo

iot-project's Introduction

IoT-Project v1.1.2

Official repository for the IoT project.

You are required to perform a patrolling task on the given target points. Each target has a certain amount of time in which it has to be patrolled. If a drone does not patrol a target in the given threshold time, the target is considered "expired".

You are given a simulation configuration, with a variable number of drones, targets, targets' positions and their threshold times.
The simulation additionally gives you the weight of each metric presented in class.
Refer to this file if you have missed that: project_description.pdf.

Your solution will have to provide a patrolling algorithm which takes into account the weights of each performance metric. All these metric will be considered with respect to their weight to compute a final evaluation.

Grader

The grader will display the values of your simulation live, while keeping track of the values of each performance metric.
For each target, you can check at any given time its threshold time and its AoI function.

A good solution should be able to keep the Cumulative AoI and Violation as low as possible, while trying to keep the fairness as close as possible to a value of 1.

The importance of which value to prioritize should be decided based on the weights given for each of the three evaluation metrics. In the general case, with equal weights among the three metrics, you should always strive to have the least amount of violation, then to minimize the cumulative AoI, and only after that to have a fair solution.

The score is calculated as follows:

Launching the Simulation

Just clone this repository:

git clone https://github.com/Fede3751/IoT-Project.git

Additionally, for the grader to work, you may need to manually install the DearPyGui library, which is not found by rosdep by default:

pip install dearpygui

Build the workspace

colcon build

And then start the simulation

./start

If you want to load a custom simulation file, you can just add it to the arguments of the start executable:

./start ./sim_files/your_simulation.sim

This executable will automatically compile your solution package, source the environment, and launch the simulation.

Package Organization

The workspace is composed of multiple packages:

iot_project
  Wraps all the other packages together and exposes one launch file to launch the whole simulation
iot_project_manager
  Responsable of keeping track of drones and target positions and update simulation values correctly
iot_project_grader
  Used to visualize the current score, by reading values outputted by the tester
iot_project_animator
  C++ package currently used only to change color of the spheres in the simulation
iot_project_interfaces
  Stores all the interfaces used in this workspace
iot_project_solution_src
  Package for storing your solution to the project
iot_project_solution_interfaces
  Package for storing your solution interfaces to the project

Simulation Instance

A simulation instance can be fully paremtrized by providing a .sim file to the launch file. Current start file automatically selects ./sim_files/simple_simulation.sim, which looks like this:

# simulation name can be defined like this
simulation_name:Simple Simulation

# specifies the number of drones in the simulation
no_drones:6

# specifies simulation time in seconds
simulation_time:300

# specifies targets positions
target_positions:(-5,-5,3);(-5,2,7);(7,7,7);(3,-5,6);(5,5,7)

# specifies threshold values for every target
threshold_values:25,30,25,25,30

# specifies aoi weight
aoi_weight:1.0

# specifies violation weight
violation_weight:1.0

# specifies the fairness' weight
fairness_weight:0.5

# specifies wind vector
wind_vector:(0,0,0)

# specifies wind strength
wind_strength:0

Simulation instances will be provided every week for you to test your solution against new challenges.

Solution Submission

Your solution should go in:

/src/iot_project_solution_src
/src/iot_project_solution_interfaces

Note that files outside of these packages won't be considered for your submission.

A baseline solution which schedule a random patrolling, with not-so-good movements between targets is given as a starting point. This solution is composed mainly of these two files:

  • drone_controller.py which is responsable of moving the drones between a set of points. It should be modified to improve the actual physical, movement of drones.
  • task_assigner.py is instead used to schedule a patrol algorithm of your choice, which submits patrol action to every drone in the simulation. Current solution, as already said, just schedules a random patrolling each time the previous one is completed.

You are free to create and spawn new nodes within your package if you see fit for your solution, but editing the already given ones is encouraged.

Good luck!

iot-project's People

Contributors

fede3751 avatar

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.