Pinned Project Overview Post

Project Overview

Introduction There have been numerous researches conducted for the development of algorithms that can be used for environment exploration an...

Thursday, July 27, 2023

[Post :03] Simulating the Algorithm

 In order to simulate and visualize the algorithm, the initial plan was to develop a Python program using 'pygame' library to simulate the robots as blobs and demonstrate the algorithm in it. The program will follow 'Object Oriented Programming' to treat the robots as objects. While this seemed to be the best option at that point as it gives me full control of the implementation, it started spitting a lot of problems during the development. While I can invest more time in debugging, later I realized it might be a waste of time. So I started to look for other options.

Since I'm not writing everything from scratch, I need to figure out the specifics of my project. The main 2 things I need to decide on are,

  • The robot model 
  • The simulator 
The first thing which came to my mind is the Turtlebot3 robot (Turtlebot3 website) and the Gazebo simulator (gazebosim.org/home) which I'm already familiar with.


Gazebo website and images of turtlebots from the official website


But the Robot Operating System (ROS) framework which is used in the turtlebot3 is not suitable for swarm robot implementation as ROS relies on Master-slave architecture (As mentioned in a previous post, centralized anything is not available in a swarm system). While it can be still used for the simulation and demonstrations with some assumptions, I decided to check out other options hoping to find a better solution.


During the online search and supervisor meeting, the robot model e-puck (e-puck.gctronic.com) was discussed as it is frequently used in many swarm implementations. Then while searching for a simulator, I chose to go with the 'Webots' (cyberbotics.com) simulator. 

Webots website and an image of e-puck robot from the official website


The main reason is, it runs on Windows. (No manual configurations are needed during setting it up compared to a Linux environment and my PC is laggy when running heavy applications in Ubuntu). Additionally, there are already configured e-puck simulations in Webots which I can use to fast-track the development of my project.

While experimenting with the demo files of the Webots to familiarize myself with the simulator, I found out that the robots in Webots sim can be programmed with languages like 'C', 'C++', Java, 'Python', and 'Matlab'. For the controllers, my choice of language is going to be Python. Then I wanted to see the types of devices I can add to the robot. The following is the list of sensors and actuators which can be added to the robot.

List of sensors and actuators available in Webots

When trying to figure out how to access the sensor data and add a new sensor like a lidar to the e-puck, I couldn't find how to do it by myself. Then I started searching for tutorials to understand how I can do it. I found this awesome youtube channel @KajalGada with Webots tutorials showing how to make a differential drive robot from scratch and how to make the controller for it.

Additionally, I checked the demo files available on Webots to find any existing components I might be able to reuse in my project.

Still, I haven't decided what kind of robot I'll be using in my demonstrations. I'm going to make the robot once I finalize the requirements of the algorithm because there is no point in spending time on modifying a robot with sensors that I'm not even going to use. I will discuss all the features the robot will have and the reasons for them in another post.


Tuesday, July 25, 2023

[POST :02] Algorithm Development Insight

When I was going through different online resources, there was some confusion in the text from different resources [Turned out I grasped the information in the wrong way]. Despite having these problems resolved after a discussion with my supervisor, I'm going to mention the major problems I had so you too can have an idea about these aspects.

Q1. Do agents need to stick together all the time without separating from the group?

This became a problem for me because when I think of swarm robots, this is what comes to my mind.
Source: https://en.wikipedia.org/wiki/Swarm_behaviour

All the robots clumped together

Then my supervisor pointed out that what makes a group of robots a swarm is not how hard they try to be in a grouped formation (This is known as flocking and also a separate research domain in swarm robotics) but how they communicate with each other (How they should communicate is mentioned in the next question). This means the robots do not have to stick together all the time just because swarms found in nature (a school of fish) stick together. So the short answer to my question is NO. They don't have to stick together all the time.

Q2. Can I use the swarm to update a global map depending on the data collected by the swarm, and make it available to the robots?

Again, the short answer is NO. Here is why. A swarm of robots should have decentralized control and decentralized communication. Meaning a single robot will only communicate with the neighboring robots only. If it has access to a global map located in a central server, the agents become individuals of a multi-robot system.

Q3.Can I assume the robots have a reliable way to communicate with each other and ignore any problems or limitations that might be there in robot to robot communication?

In other words, my question is whether it is okay to forget the technical implications and focus only on the development of the algorithm. While this seems okay since my topic is only about the algorithm, ignoring the real-world technical limitations and implications could make my algorithm not suitable for real-world applications. So if I want this to be real-world compatible, I need to think of the practical implementation of the algorithm too.

Friday, July 14, 2023

Project Overview

Introduction

There have been numerous researches conducted for the development of algorithms that can be used for environment exploration and goal-seeking. A few prominent features in swarm robotics are that the robots used in the swarms are decentralized, cheaper to build, expendable, and have low intelligence on individual robots. One major characteristic which is reduced in the robot when they are built cheaper with less complexity is the processing power. So in environment exploration, the swarm robots should be equipped with algorithms simple enough to be run in primitive robots with low processing power. This research project will focus on the development of a lightweight exploration and goal-seeking algorithm for swarm robots with lower processing power and constrained sensing ability.


Research Questions

·       1. Does the available exploration and goal-seeking algorithms suitable for swarm robots with low processing power?

   2. Exploring the possibility of developing of an exploration and goal-seeking algorithm suitable for robots with low processing power and constrained environmental sensing abilities


Objectives

·         Analysing more existing algorithms for exploration and goal finding in detail.

·         Developing a set of rules, the robots will use during the communication with nearby robots.

·         Developing rules to define how messages will sent throughout the swarm.

     Developing a visualization program to visualize the robots during the testing of the algorithm.


Deliverables 

·         Two dimensional robotic simulator

·         Exploration and goal seeking algorithm

      Thesis report


Evaluation Strategy 

·         Exploration efficiency: Amount of are covered and time spent on searching for a goal

·         Adaptability: Assess the algorithm's ability to handle dynamic changes in the environment

·         Scalability: Measure the performance of the algorithm when the swarm size increases


    Gannt Chart