Code Monkey home page Code Monkey logo

swarmbots's Introduction

Swarmbots

The project aims to automate a decentralized swarm of autonomous mobile robots to carry out different tasks.

The system is completelly decentralized. Each robot only knows its position and the position of the robots within a speciific neighbourhood radius. The bots do not communicate with each other, and perform tasks through 'collective decision making' algorithms.

Various swarm tasks are divided into the following basic tasks:

  • Aggregation/ Clustering
  • Area Coverage
  • Line Formation
  • Shape Formation
  • Forraging
  • Flocking
  • Collective decision making

Complex tasks can be performed through combinations of the above tasks. The project contains implementations of algorithms for simulating these tasks and ROS-packages for implementing them on a physical swarm

Getting Started

Create a local copy of the repository by running the following command:

git clone https://github.com/rmvanarse/swarmbots

Prerequisites

Python libraries required for algorithm simulations - numpy, matplotlib, math, cv2

Running the Tests

The simulate_pyplot.py file can be used to test a graphical simulation of N bots for a particular task.

python3 algorithm_simulation/simulate_pyplot.py

The number of bots can be varied by varying the parameter in initialize_swarm() function. The initialization function can be replaced by any other initialization function from initialize_swarm.py (imported).

The size of the arena can be varied by changing the values of the corresponding global parameters in swarm_lib.py (imported).

The value of task_func in generate_points() decides the task to be carried out. The value could be the name of any of the ask functions from the imported files: aggregation.py, area_coverage.py, formations.py.

2-state decision making is simulated using the simulate_state.py file on terminal (not pyplot) in a similar way.

Description of the Stack

File Structure:

algorithm_simulation - Contains a files for simulating basic algorithms on pyplot. The user can choose the initial configuration, number of bots, arena size, etc. Each basic task has a python file containing different implementations of the task. A library ( swarm_lib.py ) includes all general functions required for simulating the swarm.

The following tasks have been implemented crrently: Aggregation, Area COverage, Circle formation, Line Formation and 2-state decision making

stdr-codes - Contains files for simulating individual bots on ROS. Each bot has its own namespace. The algorithms will publish velocity commands on cmd_vel for each robot. The folder also contains resources (Maps, yaml files) and their corresponding launch files.

apriltag_detection - Attempt to carry out localization using April Tags and OpenCV-2.0 ( in progress ) bash - Bash files for directly running the required rosmasters ( in progress )

Current Stage of Development

The algorithm simulation files are stable and ready to use. Implementations for Aggregation (2 implemntations), Area Coverage, Line Formation, Circle formation and 2-state decision making are complete. The ROS packages are in progress and are not ready to use directly. Simultaneously, more algorithms are being added to algorithm_simulations and simulation results are being studied

Authors:

Rishikesh Vanarse ( rmvanarse ) - Sub-Coordinator, Electronics & Robotics Club, BITS Goa ( ERC-BPGC )

swarmbots's People

Contributors

rmvanarse 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.