Learn how I made by Mine Sweeper Robot using IoT!!!

Learn how I made by Mine Sweeper Robot using IoT!!!

Robo-Tech MineSweeper Robot 2022


In the past and exactly in the year 1939 were the worst thing happened which is World war 2, Countries were fighting and planting landmines for the enemy whenever someone moves over it exploded, And here it comes the solution and the use of Robots they made our life easier where we can easily do all dangerous jobs. In Egypt, there are planted mines in the El-Alamein city certain places not all over the city and here it comes the idea of creating a competition that invites all motivated and brilliant teams from all over the world to take part in and have the chance to join this wonderful experience and I got the chance to join this competition and be the Software Engineer of this MineSweeper Robot.


In this Competition called ARC (Alamein Robotics ChampionChip), In this competition, all teams work independently to figure out the best mechanism, landmine detector, and best software that handle all data transmitted from the metal detector and the Co-pilot GUI also the PS4 JoyStick that will solve the map of landmines in a good way.

Information about me and my Team:

I am a software Engineer at Robo-Tech Team that was founded in 2017 at Alexandria University in the faculty of Engineering, Robo-tech mainly focuses on ROVs that used to participate in MATE ROVs Competition, ROV (Remotely operated vehicle) which is:

Robo-Tech ROV 2022

This robotic submarine's main mission is to solve simulated real-life dangerous problems underwater instead of any human to prevent any loss or danger for anyone.

My team won in 2019 1st place in Egypt in the MATE ROV competition  and 25th international (ranger category), 2nd place in Egypt, and 8th place international

also, The team won 2nd place in the international 2021 Microsoft Machine Learning computer coding challenge by Microsoft Azure challenge and MATE ROV.

How to build Minesweeper Robot Software:

before we get into the software parts we need to know all the required components that need to be programmed to work together and we need to find a good way to make them work homogeneously with no delay or any error, Components are PS4 JoyStick to control the robot, Arduino to control the motors, Raspberry pi which is the main computer that does all the calculation beside the co-pilot laptop, the metal or landmine detector, IMU sensor to get the direction, 2Encoders to get the linear distance traveled by the robot to map the mines, and the laptop itself that used to program everything.

The competition made a bonus for using ROS (Robot operating system) which is a very easy way used for the communication of the robot data, simply you make a topic with a specific given name you want, then in the code of encoder, for example, you make a function that publishes those encoders values into that topic and then anything else connected to the ROS environment can listen to or subscribe to that topic and get those data.

To be more clear let's take an example, the encoder is a device connected to the motor, and when the motor rotates it gives ticks which is by a simple equation can be transformed into several rotations that the wheel made so we used two encoders for both sides in the middle you can see it in the image above, so to get those ticks from the encoder which is, by the way, is connected to the Arduino and we need those values on the Raspberry pi to make the required calculations which are calculating the linear distance moved by the robot (the map was 20 by 20 meters), so I created a topic called "Encoder" in the Arduino code and then I published the values in an array to that topic, then I subscribed into that topic from the Raspberry pi and made all calculation that I want on raspberry pi.

this is the Arduino code example I created to explain the publishing into the topic as you see there is a topic called Encoder and a node called chatter, this node publishes encoders data into that topic, and then the raspberry pi with ubuntu 20 installed gets those data and do calculations as bellow:

this is the code that gets the data and makes all calculations to get the linear distance in meters, all other components communicate with the same method.

Now after getting the value of the encoder on the Encoder topic, there are many topics else such as IMU, ControllerValues, and mine detector.

The mine detector is made of two coils that make a magnetic field around it with the number of fluxes and there is a transmitter-receiver, when the receiver notice a change in the magnetic field that means there is a metal (landmine) and the robot makes a sound and also a map for each landmine, in the end, it gives the judge a CSV file that has all detected maps, those sender and receiver data are managed by two ways one with hardware components and the other with the code by receiving a reference data which is constant and another analog data if the analog data change concerning the reference value it means there is a mine so map it and it's co-ordinated like x-axis has values (A, B, C, etc) and y-axis with numbers starting from 0, for example, a mine found at A 0, which means in the square of 'A' at x-axis and y-axis at 0.

this is an example of the map generated from the robot to the GUI.

I hope I explained everything very well that the robot mission.

  • Mohamed Bahaa
  • Mar, 27 2022

Add New Comments

Please login in order to make a comment.

Recent Comments

Be the first to start engaging with the bis blog.