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
 |
| 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.
No comments:
Post a Comment