Fire-dog Robot

by RomainDdk in Circuits > Arduino

1550 Views, 11 Favorites, 0 Comments

Fire-dog Robot

Goliath, Our Saviour

Hello there,

We've all experienced the heat from the summer 2022. These heat waves were favorable for extremly dried condition around the world allowing many wildfires to start. Some got out of control and managed to keep firefighters busy for days exhausting them and forcing thousands of people to leave their home.

So this year as a project for our master degree, we chose to make a difference. We tought of a way to detect and extinghuish early stage fire. To achieve this, two robots are necesary, a flying unit and a ground unit. This Instructables will explain the process of making such robots from the early stage of need identification to a working prototype.

We acheived at the end to have a working prototype, a bit simpler than the final product, but that is still capable of roaming autonomously, detecting a fire, alarming its surounding and extinguishing the fire.

Table of Content

  1. Table of content
  2. Project motivation and needs indentification
  3. Functional analysis
  4. State of the art & patent analysis
  5. Conceptual design
  6. Embodiment design of the final product
  7. Sub-systems design
  8. Mechanical systems
  9. Circuitry & sensors
  10. Software
  11. Integration guide
  12. Demo project & quick start guide
  13. Critical review
  14. Sustainability
  15. Bill of materials
  16. The team
  17. Project repo

Project Motivation & Needs Identification

Project Motivation

This summer 2022, we've all experienced the heat waves across Europe or North America. Those heat waves impact everyone and everything. They create extremely dry conditons across the continent, which increases the risk of wildfires.


The Global Fire Assimilation System registered the highest wildfire emission since 2007 and according to the European Forest Information System, 130,000 hectares of forest burned, often forcing hundreds of people to leave their homes and destroying the already fragile forest ecosystem. During these short periods of time, firefighters are under pressure to control the wildfire, often with the weather acting against them.


Needs identification

In order to build an efficient solution to the stated problem, it is important to identify the need for the product. To find the need, the following questions can be answered.


  • What's the product's utility and who will use it ?

a. The product's utility is to detect early-stage fires, alarm the authorities and extinguish the fire or contain it as much as possible, while waiting for reinforcements (other robots or firefighter squads);

b. The users will be mainly fire departments close to forested areas, forest rangers or even forestry companies which all share an interest in preventing or controlling the spread of wildfires.


  • What or who does the product interact with ?

a. The product will interact mainly with the flora and fauna of the forest. It will also encounter humans (firefighters, rangers, hikers, etc.). The weather will interfere with the product, since it is to be used outside. Finally, the robot will also come in contact with water, since it is to be used as the extinguishing medium.


  • To which purpose this product has to be developed ?

a. The product is developed to help firefighters prevent and control more frequent wildfires. It is also developed to help protect the biodiversity that suffers each time a wildfire spreads and devours forests.


The first part of the Instructable will be about the final product. The end game would be to build two robots: a flying unit (to detect fires from above, send the location and alarm the authorithies) and a ground unit (to reach the fire, going through uneven path, and take extinguishing action). The final idea would be to have a fleet of these robots to patrol the forest, to prevent any fires and assist firefighters as much as possible.


The second part of this Instructable will be about building a prototype of the firefighting robot (The Goliath), able to autonomously move around, detect an early fire, alarm its surroundings and finally extinguish the fire.

Functional Analysis & Requirement List

RequFU.png
RequGU.png

Fucntional Analysis

Now that those fundamental questions have been answered, we can develop the need identification more by dividing those needs into objective and subjective ones.

Objective needs

  • Performance: Reliable fire detection for precise readings, movement stability to move on uneven terrain
  • Ergonomy: Waterproof to resist weather and extringuishing medium, user-friendly
  • Security : External body protection to protect all internal components, thermoresistance to avoid damaging the robot in case of engaging with the fire, notification in case of connection loss
  • Maintenance: low-maintenance and ready-to-use

Subjective needs

The only possible subjective need could be for it to be visible for the user to easily spot it and track its movement.


The functional analysis can be defined knowing all the needs. You can find below the different functions that will be introduced with more detail in the requirements list.

  1. Fire detection
  2. Moving on uneven path
  3. Alarm notifications
  4. Extinguishing fire
  5. Long runtime of autonomous patrol
  6. Easiness of set-up
  7. Low cost of ownership
  8. Quiet
  9. Long life cycle


Requirements list

Considering the above mentioned functions, a technical table of all the requirements can be made. Within the frame work of the final products, you can find in Figure 1 the requirements for the flying unit and in Figure 2 the requirements for the ground unit.

These tables quantify our objectives but also serve as a checklist at the end of the project.

State of the Art and Patent Analysis

Combustion.png
Minimax1.png
Minimax2.png
Firefighter.png
Extinghui.png
SoA.png
Thermite.png
Insight.png

The patent analysis we conducted brought forth a slight addition to the overall concept for realisation. A detailed and narrowed down search returned around 150 patents, the majority of which concerned the circuit and programming of fire detection and recognition systems. A few patents contained proposed realisations of robots dedicated to fire-fighting, yet with major conceptual and design differences (for example: internal combustion engines (Figure 3), no extinguishing function).

One patent, however, regarded a solution identical in concept to the one we have tought of for the project. It covers a wide variety of combinations, between a flying detection unit and extinguishing ground units, either mobile or stationary (Figure 4 & 5). [patent link] With that in mind, it was decided to proceed with the drafted realisation, considering a solar panel as a possible addition to the flying unit. It could be introduced as an improvement to the patented solution, allowing for longer runtime on cleaner energy.


The above mentioned patent was filed by a German robot manufacturing company. However, since the patent was filed in April 2020, the products are not yet available on the market nor any practical information from the manufacturer can be obtained. This is why it was not taken into account in the State of the Art analysis.


Between solutions available on the market, none offers the complete set of functions introduced in the ground and flying units. Taken into account were four mobile robots used by squads of firefighters around the world to extinguish fires (Thermite, Colossus) (Figure 9) or access dangerous zones (Spot), as well as one stationary solution (InsightFD) (Figure 10), which serves as a means of monitoring forested areas and provides early-stage fire detection based on thermal imagining.

Conceptual Design

Propell.png
Catpillar.png
extinghuiher.png
ConceptDrone.png
SelectionDrone.png
ConceptGU.png
SelectionGU.png

As we already explored in the Fucntional Analysis, the main objective of the the project is to detect a wildfire in its early stages, report the event, provide location information as well as alarm the users, and then attempt to extinguish the fire. To be able to serve these purposes, the robot should be equipped with a precise system of detection to recognize an early stage fire from patrolling range with surety, thus avoiding fake alarms and unnecessary engagement. Movement stability and obstacle detection are required for efficient patrolling and getting to the reported fire. In case of taking extinguishing action, inflammable external body protection, heat and water resistance are necessary to ensure robot and user safety.

As a device meant for operation in remote areas and to be used by personnel outside technical field, it should also be easily traceable, require little maintenance and be user-friendly; enabling switching from autonomous operation to remote control is a feature that will be implemented in the future.

For efficiency purposes, sustainability, as well as energy conservation, taken under consideration are solely solutions which comprise two separate units - a flying unit for patrolling and fire detection, and a ground unit for extinguishing the fire.

Preliminary Concepts

To present subsequent means of realization of the above-mentioned functions, we made a set of tables. Each table introduces an issue, proposed/existing solutions, and a comparison of their performance regarding assessed features, with an importance rate for each feature. The total score is a sum of products of performance rating and corresponding importance rating, based on which the final choice of solutions/systems to be implemented was made. Those tables can be found in the images section in Step 15: More Resources.


The analysis of the selected working principles and viable implementations led us to different design concepts presented in the following Figures:

A. Propellers: Figures 11 & 12


B. Caterpillar Tracks: Figures 13 & 14


C. Extinguishers: Figures 15 & 16 & 17


Those different working principles can be combined to make different concepts. The proposed solutions for the flying unit design are described in the table on Figure 18.

The concepts and sub-concepts regarding the flying unit, mentioned in the table above, are presented on sketches on Figures 19 & 20 & 21.


Regarding the ground unit, different working principles of chosen means led us to design the concepts described in the table on Figure 22.

Proposed concepts of the ground unit, mentioned in the table above, are presented on sketches on Figures 23 & 24.


Conception Selection

The most promising concept is number 1 for both robots.

For the flying unit, we chose concept 1 because it offers good stability, a lighter robot than the other concepts, good manoeuvrability and limited cost (only basic components and standard implementation required).

For the ground unit, we chose concept 1 because of greater stability provided by the triangular caterpillar tracks on an uneven path. It is less susceptible to falling over on a slope. The position of the different components doesn’t change between the two concepts and their positions are explained in the description of the concepts.

The sub-concepts implementation will be specified later, as we need to do some tests to choose correctly.

Embodiement Design Final Product

Design.png
Block.png
DroneBend.png
MatDrone.png
GUbend.png
MatGU.png
ManuFU.png
ManuGU.png

This section will be split in two parts, since our prototype and the final product are quite different. The first part is where we will make the embodiement design for our final products (the flying unit and the ground unit), and the second part will be more focused on the embodiement design of our prototype called Goliath (see step 7).


Embodiement Design of the Final Products

  • Design

See Figures 25 & 26


  • Material Selection
  1. Flying Unit:

For the material selection of the drone, we focused on the criteria of density and Young's modulus. We wanted our drone to be light, i.e with low density, in order to be more energy efficient. In addition to that, we also wanted it to be strong enough to withstand potential collisions. Given the fact that the drone is mainly composed of one unique part with the propellers fixed at each corner, it can be assumed that the main body part of the drone can be represented by a panel that is bent by acting forces applied by the propellers (Figure 28).

Having written the objective equation and the equation for the constraint linked to a panel in bending, it was easy to eliminate the free variable and find E^(1/2)/r (where E is the young modulus and r the density) as the material index to maximize. This one leads therefore to a slope of 2 in the Ashby diagram. By maximizing this index and adding a flammability limit of “slow burning materials” the choice of materials is directed on composites of epoxy reinforced by carbon fibres as shown in Figure 29.

b. Ground Unit:

Regarding the ground unit, it was decided to compare its structure to a bending plate. Indeed, the weight force exerted on the support plate connecting the caterpillar tracks to the rest of the body will create a flexion on this plate. In addition to this, the potential shocks inflicted on the external structure of the robot during displacements can also be compared to forces causing the bending of the external sheet (see Figure 30).

For this one, the focus has been put on the criteria of the maximum service temperature and the cost per unit of strength. Indeed, the ground unit will be exposed to high temperatures during the extinguishing of fires. In addition, it has to be, of course, really resistant but at lower possible cost.Therefore, using Granta Edupack to compute the value, the equation Cm*r/s^(1/2) (where Cm is the price by kg , r is the density and s is the flexural strenght) has been found for the material index to minimize and it leads to a slope of ½ on the Ashby diagram. By adding a limit removing all materials with a maximum service temperature below 250°C, the choice of material is directed on different kinds of Low Alloy steel that seems fine for the application( see Figure 31).


  • Manufacturing Selection
  1. Flying Unit

Regarding the flying unit, knowing that the material used for the manufacturing of the main body is a composite of epoxy reinforced by carbon fibre as noticed above, it is relevant to move towards moulding with an inflatable bladder (see Figure 32). Indeed, given that the main body of the drone has a specific empty shape, the choice of bladder moulding seems to be good. Thus, after having done the right mould for the external shape of the drone's body, a sheet of pre-impregnated carbon fibre is placed in the mould and then heated up, while an internal bladder is inflating. The bladder will therefore compress the sheet of prepreg carbon fibre with epoxy against the mould and it will take the shape of it.


b. Ground Unit:

Regarding the ground unit, knowing that the material used for the manufacturing of the main body is a low alloy steel as mentioned above, it is relevant to move towards the metal press forming (see Figure 33). Indeed, the ground unit has a quite simple body shape. It is therefore unnecessary to lose time during casting or other manufacturing way like this. The main body part of the ground unit can be press-formed. The main body of the ground unit can simply be machined and transformed from a steel sheet to achieve a desired result. The main structure of the unit will then be composed of well shaped cleats press formed and then machined to allow assembly.


  • Design for Assembly:
  1. Flying unit:

Regarding the assembly of the flying unit, it is quite simple. The 4 propellers are directly fixed to the axes of the motors themselves screwed directly in the support plate. The electronics is also screwed into the support plate and is cleverly positioned in the middle of the 4 propellers to allow a clean cable management. An aerodynamically shaped protective cover is then fixed to the top with screws to provide protection against impact and weather conditions. A second part with landing supports is screwed on the bottom of the main plate.  


b.Ground unit:

Concerning the assembly of the ground unit, it will follow the same principle as for the flying unit. Indeed, the electronics and the motors will be first fixed on a support plate. The transmission to the caterpillars tracks will then be made thanks to the driving wheels connected to the motor as well as other driven wheels. The water tank will also be fixed on the plate, taking care to place it in the middle of it to balance the centre of mass of the robot. The protection plates will then be screwed together as well on the support plate and will be equipped with small holes allowing the placement of the different sensors as well as the water outlet.




Design of Sub-systems

Step1.PNG
Step2.PNG
Step3.PNG
Step4.PNG
Step5.PNG
Step6.PNG
Circuitry.png
Bill.png
FlowChart.PNG

In this section, we will explore in more depth the different systems of the prototype.

  1. Mechanical Systems
  2. Requirements :

Thinking about the design of a fire-fighting robot, two major requirements surfaced. First of all, movement stability. The construction had to allow the robot to move over uneven terrain without tipping over. Moreover, the robot would contain electric circuits and water systems, thus a separation of both had to be ensured. The water system had to be sealed to prevent any leakage which could damage the robot and pose a safety threat to its user.

b. Concept design : Preliminary concepts and selection

A major concern in the process of designing mechanical systems of the robot was ensuring movement stability. The advantages of using wheels were simpler control and drive coupling, as well as higher efficiency of the system (caterpillar tracks introduce losses to power transmission). However, keeping in mind the target working environment of the robot, it was decided to use caterpillar tracks. This would allow effective movement over the uneven forest floor as well as through patches of various types of soil.

c. Embodiment design; manufacturing and assembly:

In the case of this time- and budget-limited project, it was obvious that we would not be able to reproduce the theoretically planned robot. We therefore assembled an affordable prototype that could be easily reproduced in a minimum of time and with accessible resources.

As a result, we obviously did not rely on the use of heat-resistant metals, because in our case, the use case of the Goliath consisted solely of detecting and extinguishing small candles.

In order to achieve this task, we used mostly 4mm MDF planks, a strong, light and easy to machine alternative that seemed perfect for our use case.

After designing our robot in Solidworks, it was easy to cut the boards with a laser cutter. The boards were then ready to use, all we had to do was fix them in place. But first of all, we started by setting up all the electronics on the support plate using mainly well-designed 3D prints to do it. This plate will be just after fixed onto the caterpillar tracks suspension frame. Having done this, we already had a functional robot capable of detecting the presence of candles and putting them out autonomously. So, it was time to add some style to our robot and give it a cover worthy of it.

To do this, we provided a support plate with grooves to fit the laterals as well as 3D printing to connect them at different key points as shown in Figure 36. The main structure of our robot is therefore simply assembled by means of correctly fitted nests and a few screws connecting the 3D prints to the support plate. This makes the Goliath easy to assemble and disassemble if you need to check the internal electronics.

Finally, we designed the top cover of our robot to be easily removable for filling the water tank and checking the electronics. It is then simply snapped into the 3D printed brackets and fits properly.


d. Final CAD design ( component and assembly):

The final CAD design can be found in the image section above (see Figures 34 to 39)

(Note : The support design for the motors is a model since we got a package with the support and the caterpillar tracks. We did not use this model to built the Goliath. Be careful if using this model, it could require some adjustements. The upper plate also needs to be adjusted to your water tank.)

e. Testing:

When it comes to mechanical components of our robot, the ones which needed testing were the water tank with hoses and the nozzle. Since it was to be put on the platform next to electronics and circuitry, it was imperative that the system be sealed and there be no leakage.

f. CAD Files:

The CAD files can be found below in the files section.


2.Circuitry & Sensors

  1. Requirements:

Essential for the realisation of the project were two groups of sensors: sensors allowing autonomous movement of the robot and sensors used for fire detection. Especially in the case of the latter, reliability and surety of detection were required. Aside from sensors, the robot required drive, an extinguishing system and an alarm system.


b. Design process and consideration of component:

For the drive of the robot, only DC motors were considered. DC motors are easily available, come in sizes sufficiently small for such a construction, are easy to control and mount. To establish the minimum value of supplied torque needed, a basic calculation has been performed. The output torque can be calculated using the following formula

Tw = r*M*ms*g/4 = 0.03*(0.3*1.5*9.81)/4 = 0.03310 Nm

  • Tw : torque [Nm]
  • r : radius [m]
  • M : Total mass of the body [kg]
  • ms : static friction coefficient [ / ]
  • g : gravitational constant [N/kg]


In the case of the used caterpillar tracks, two wheels were driven by a separate DC motor each. Keeping in mind the additional losses introduced into the system by this solution, the calculated value of torque necessary to move the robot was still sufficiently low that it did not require any additional action to be taken in order to provide the right drive.

With the robot being able to move around, an obstacle detection system became a necessity. Three ultrasonic sensors – one per the front, left and right side – were added. Such configuration returns sufficient data to avoid walls and any bigger obstacles, and successfully roam spaces of low complexity. Ultrasonic sensors are the most popular for such applications, providing sufficient range and accuracy of measurement as well as simplicity of use.

Considering the scale of the fire to be detected and extinguished (tealights), water has been chosen as the extinguishing medium. A small water pump powered by a DC motor was used.

As for the fire detection system, two types of sensors were considered: Resistance Temperature Detectors (RTD) or infrared sensors. While RTDs offer higher accuracy, stability and repeatability of measurement, their major disadvantage is the nature of the measurement itself – temperature measured is the temperature of the sensor. IR sensors however, although much less accurate regarding the value of measured temperature, allow for performing the measurement from a distance and are characterised by a field of view, which translates to an area in which a heat source would be noticed through the change of returned values. As not the exact values of the temperature around the flame, but the fact of its presence was important for the fire detection system, an infrared phototransistor was chosen.

Last but not least, a piezoelectric buzzer and 8 LEDs were introduced as the alarm system – the simplest possible yet effective solution.

c. Final Circuit Diagram:

The diagram can be found in the images section above (see Figure 40).

d. Testing:

As a first step, each component was tested individually to make sure there were no faulty ones and that we had a good understanding what needed to be done in order to build the circuit or program the robot, as well as what voltage ranges and current values were necessary to power each part. When the circuit was fully tested and considered complete, the components were soldered onto a circuit board and tested again, to check the quality of the soldering and make sure it did not impact circuit’s operation.

e. Exact Components:

The full and detailed list of the components can be found in Step 13 : Bill of materials or in the image section above (see Figure 41).


3.Software

  1. Requirements:

Regarding the software, the main requirement was quick response of the robot to the presence of obstacles and fire. The complexity of the program and the amount of processed data had to be sufficiently low, given the limits of computational power of Arduino Uno. Another important aspect was creating the program in a way that would prioritise the detection of fire and extinguishing action over the reaction to an obstacle, to avoid possible conflicts.

b. Design process and consideration of components:

The first draft of the code was prepared beforehand, however the final version of the program was developed and adjusted step by step along the process of testing the components and subsystems. First, the part responsible for fire detection and alarm was coded and tested. The process was repeated for the movement of the robot. Starting with one ultrasonic sensor and DC motors driving the robot forwards or backwards, a simple version of the code was created. Once it was running smoothly, the complexity grew and added were the two sensors on the sides of the robot, thanks to which the robot could turn left or right to avoid the obstacle. At this stage, the two codes were combined and reassessed. As a final step, the control of the water pump was implemented.

c. Code Flow Diagram:

The flow chart can be found in the image section (see Figure 42).

d. Testing:

Testing of the program was done in a growing-complexity fashion, starting with the simple subsystems. At first, the fire detection system was tested, to establish the right threshold for triggering the alarm, range of detection and time of response. Regarding the movement of the robot, at first a simple control of the DC motors was implemented, and ultrasound sensors were tested separately. After that, the two subsystems were coupled and tested on a stand, together to ensure correct reactions for each possible obstacle combination. Having the fire detection and drive subsystems tested, we created a complex code, covering both movement of the robot and fire detection. Again, reaction times, range, and the general behaviour of the system were tested using a stand. Only after repeated successful attempts the robot was deemed ready to be put on the ground, at first without water and candles in the area. When the robot was roaming the room successfully avoiding obstacles, candles were put on the ground. As a final step in testing, the water tank was filled, to check whether the robot was fully operational.


f. Code

The code can be found below and as a file in the specified section.

Mechatronics 1 and Design Methodology Project
 * Robot Name:   Goliath
 * Date:         November 24, 2022
 * Team Member:  Romain, Aleks, Cedric, Hamed, Ariyan
 */


/********************** Inputs/Outputs **********************/
#define ENA           5           // PWM Enable of left motors
#define ENB           6           // PWM Enable of right motors
#define IR          A0          // IR Sensor Analoge Input


#define INT1          10          // Left Motors Forward Movement
#define INT2          11          // Left Motors Reverse Movement
#define INT3          12          // Right Motors Forward Movement
#define INT4          13          // Right Motors Reverse Movement


#define tpf           A1          // Assign Digital Pin #5 for trigger pin of the front sonar sensor
#define tpr           A3          // Assign Digital Pin #7 for trigger pin of the right sonar sensor
#define tpl           9           // Assign Digital Pin #9 for trigger pin of the left sonar sensor


#define epf           A2          // Assign Digital Pin #4 for echo pin of the front sonar sensor
#define epr           A4          // Assign Digital Pin #6 for echo pin of the right sonar sensor
#define epl           8           // Assign Digital Pin #8 for echo pin of the left sonar sensor


#define buzzer        2           // Assign Digital Pin #2 for activating Buzzer
#define pump          3           // Assign Digital Pin #2 for activating pump


/***********************************************************/


/************************ Variables ************************/
int     Flame_Sensor_Reading;
int     Read        = 0;
float   l_distance  = 0.0;
float   r_distance  = 0.0;
float   f_distance  = 0.0;
float   L_DISTANCE  = 0.0;
float   R_DISTANCE  = 0.0;
float   F_DISTANCE  = 0.0;
int     PWM_Value   = 255;
int     Left_Obstacle, Right_Obstacle, Front_Obstacle;
long    l_duration;
long    r_duration;
long    f_duration;
int     IR_Reading;
/***********************************************************/


void setup() {
  Serial.begin(9600);
  // Reading the Analog Value of the Flame Sensor
  Flame_Sensor_Reading = analogRead(IR);  
  // Setting Motors INT Pins as Outpout
  pinMode(INT1, OUTPUT);
  pinMode(INT2, OUTPUT);
  pinMode(INT3, OUTPUT);
  pinMode(INT4, OUTPUT);
  // Setting Motors PWM Pins as Output (0~255)(FullStop ~ Maximum Speed)
  pinMode(ENA,OUTPUT);
  pinMode(ENB,OUTPUT);
  // Setting Trigger Pins as Output
  pinMode(tpf, OUTPUT);       
  pinMode(tpr, OUTPUT);       
  pinMode(tpl, OUTPUT);
  // Setting Echo Pins as Inputs       
  pinMode(epf, INPUT);        
  pinMode(epr, INPUT);        
  pinMode(epl, INPUT);
  // Setting Buzzer Pin as Output
  pinMode(buzzer,OUTPUT);
  // Setting Pump Pin as Output
  pinMode(pump,OUTPUT);
  // Setting IR Sensor as Input
  pinMode(IR,INPUT); 
  // Make sure motors are all in halt status
  full_stop();       
}


void loop() {


  Flame_Sensor_Reading = IR_Value_Reading(1);


    digitalWrite(buzzer,LOW);
    digitalWrite(pump,LOW);
    // Detecting Obstacles
    Left_Obstacle = left_distance(1);
    delay(5);
    Right_Obstacle = right_distance(1);
    delay(5);
    Front_Obstacle = front_distance(1);


    if (Front_Obstacle < 30)
    {
      if ((Right_Obstacle > Left_Obstacle))
      {
        if ((Right_Obstacle<=20) && (Left_Obstacle<=20))
        {
          full_stop();
          delay(200);
          move_backward();
          delay(1500);
        }
        else
        {
          turn_right();
          delay(1500); 
        }
      }


      else if ((Right_Obstacle < Left_Obstacle))
      {
        if ((Right_Obstacle<=20) && (Left_Obstacle<=20))
        {
          full_stop();
          delay(200);
          move_backward();
          delay(1500);
        }
        else
        {
          turn_left();
          delay(1500); 
        }
      }
    }
    else if (Right_Obstacle <= 20)
    {
      turn_left();
      delay(1500);
    }
    else if (Left_Obstacle <= 20)
    {
      turn_right();
      delay(1500);
    }
    else
    {
      move_forward();
    }
  
  // Fire Has been Detected
  // Stop The Motors
  if (Flame_Sensor_Reading > 200)
  {
  full_stop();
  digitalWrite (pump,HIGH);
    
  digitalWrite (buzzer,HIGH);
  delay(500);
  }
}


/************** Functions to get the distances *************/


int left_distance(int n)
{
  
  long sum = 0;
    for(int i=0; i<n ;i++){
      // Clears the trigPin
      digitalWrite(tpl, LOW);
      delayMicroseconds(2);
      // Sets the trigPin on HIGH state for 10 micro seconds and then set it to LOW level
      digitalWrite(tpl, HIGH);
      delayMicroseconds(10);
      digitalWrite(tpl, LOW);
      // Reads the echoPin, returns the sound wave travel time in microseconds
      l_duration = pulseIn(epl, HIGH);
      // Calculating the distance
      l_distance = l_duration*0.034/2;
      sum = sum + l_distance;
    }
    //Filter the data by getting the average of n values
    L_DISTANCE = sum/n;
    Serial.print("Left Distance: ");
    Serial.println(L_DISTANCE);


  return (int) L_DISTANCE;
}


int right_distance(int m)
{
  
  long sum = 0;
    for(int i=0; i<m ;i++){
      // Clears the trigPin
      digitalWrite(tpr, LOW);
      delayMicroseconds(2);
      // Sets the trigPin on HIGH state for 10 micro seconds and then set it to LOW level
      digitalWrite(tpr, HIGH);
      delayMicroseconds(10);
      digitalWrite(tpr, LOW);
      // Reads the echoPin, returns the sound wave travel time in microseconds
      r_duration = pulseIn(epr, HIGH);
      // Calculating the distance
      r_distance = r_duration*0.034/2;
      sum = sum + r_distance;
    }
    //Filter the data by getting the average of n values
    R_DISTANCE = sum/m;
    Serial.print("Right Distance: ");
    Serial.println(R_DISTANCE);


  return (int) R_DISTANCE;
}


float front_distance(int p)
{
  
  long sum = 0;
    for(int i=0; i<p ;i++){
      // Clears the trigPin
      digitalWrite(tpf, LOW);
      delayMicroseconds(2);
      // Sets the trigPin on HIGH state for 10 micro seconds and then set it to LOW level
      digitalWrite(tpf, HIGH);
      delayMicroseconds(10);
      digitalWrite(tpf, LOW);
      // Reads the echoPin, returns the sound wave travel time in microseconds
      f_duration = pulseIn(epf, HIGH);
      // Calculating the distance
      f_distance = f_duration*0.034/2;
      sum = sum + f_distance;
    }
    //Filter the data by getting the average of n values
    F_DISTANCE = sum/p;
    Serial.print("Front Distance: ");
    Serial.println(F_DISTANCE);


  return (int) F_DISTANCE;
}


/***********************************************************/


/****************** Moving Around Functions ****************/


void turn_right()
{
    analogWrite(ENA,PWM_Value);
    analogWrite(ENB,PWM_Value);


    digitalWrite(INT1,HIGH);
    digitalWrite(INT2,LOW);
    digitalWrite(INT3,LOW);
    digitalWrite(INT4,HIGH);
}


void turn_left()
{
    analogWrite(ENA,PWM_Value);
    analogWrite(ENB,PWM_Value);


    digitalWrite(INT1,LOW);
    digitalWrite(INT2,HIGH);
    digitalWrite(INT3,HIGH);
    digitalWrite(INT4,LOW);
}


void move_forward()
{
    analogWrite(ENA,PWM_Value);
    analogWrite(ENB,PWM_Value);


    digitalWrite(INT1,HIGH);
    digitalWrite(INT2,LOW);
    digitalWrite(INT3,HIGH);
    digitalWrite(INT4,LOW);
}


void move_backward()
{
    analogWrite(ENA,PWM_Value);
    analogWrite(ENB,PWM_Value);


    digitalWrite(INT1,LOW);
    digitalWrite(INT2,HIGH);
    digitalWrite(INT3,LOW);
    digitalWrite(INT4,HIGH);
}


void full_stop()
{
    analogWrite(ENA,0);
    analogWrite(ENB,0);


    digitalWrite(INT1,LOW);
    digitalWrite(INT2,LOW);
    digitalWrite(INT3,LOW);
    digitalWrite(INT4,LOW);
}


/***********************************************************/


/**************** Reading the Phototransistor **************/
int IR_Value_Reading(int n)
{
  float average = 0;
  float sum = 0;
  float value = 0;
  for (int i=1 ; i<=n ; i++)
  {
    value = analogRead(IR);
    sum = sum + value;
  }
  average = sum/n;
  return (int) average;


}
/***********************************************************/


Integration Guide

Our robot is composed of different subsystems:

  • Motion part
  • Extinguishing part
  • Electronics part
  • Protection part

As said earlier, all the electronics are placed on the main support plate and protected by the body of our robot.

The electronics then connect all the external components. It allows the control of the motors, which are part of the movement underneath the body and drive the tracks to create a motion.

It also controls the water pump, also protected by the body and allows to create a sufficient pressure to produce a jet of water coming from the water tank and extinguish the candles detected beforehand.

Let's not forget all the sensors, which are part of the electronics and allow to detect the external elements and to communicate them in order to correctly direct the actions of the robot afterwards.

Demo Project & Quick Start Guide

Goliath

Demo Project

A demo of the Goliath can be found above in the image section


Quick Start Guide

Some steps were already explained above, but an explicit instruction with steps is also presented here.

  1. Cut and print all necessary parts (see DXF files in the files section)
  2. Once all the pieces are cut, fix all the components on the main plate (see Figure 34); don't forget the battery holder under the plate.
  3. You can now place the back corners and fix them to the main plate (see Figure 35).
  4. Slide the back plate and the side plates inside the back corners and in the notches cut in the main plate (see Figure 36). You can also assemble the front part with the front plate and "pare-choc" . Once the front part is assembled, you can also place it in the notches already cut in the main plate.
  5. Place the corner support on the front of the Goliath (see Figure 36), then slide the "parChocHaut" and fix it to the corner support (Figure 37).
  6. You can already place the upper part to close the body and already have a nice looking robot (see Figure 38).
  7. Flip around the robot (note: if the water tank is already placed and is higher than the robot, temporarily remove the water tank). Fix the motor support as well as the motors (see Figure 39).
  8. Place the caterpillars.
  9. Launch the robot and let's save some forests!

Critical Review

First of all let's acknowledge the fact that it works! With limited time and limited resources, the main objective of the project was achieved. What could be improved? More IR sensors could be introduced to cover a bigger area with better surety of detection. Ultrasonic sensors could be placed closer to the ground to make detection of smaller obstacles possible. This in turn would allow the robot to roam around more complex surfaces. Finally, a nozzle that would break up the stream of water more to extinguish the fire more easily.

One of the most important parts of the system that could become problematic with further development of the robot, but one that we neither had time nor sufficient equipment to resolve, was the speed of the motors. Obviously, the two 12V DC motors that have been used for the movement of the robot were not made perfectly identical. Hence, the speed of both motors was not the same for the same parameters set in the code. Some deviation appeared during the testing. Of course this becomes a more prominent problem while using caterpillar tracks, which also can introduce an asymmetry to the system. Therefore, a good control system is required to measure the speed of each wheel and send a correct signal to make them as synchronised as possible.

The design of the prototype has been changed several times. We started with a caterpillar track configuration but first had to improvise with a set of wheels, since the tracks were not available at that time. Nevertheless, the wheels had a serious mechanical power transmission problem, so we had to go back to using the tracks once more. During these processes we lost a lot of time, and the overall integrity of the design suffered. For the future, we would like to make sure that the design will be compatible with the available parts.


Sustainability

We tried to keep sustainability in mind during the entire process of creating our robot. That is why as much of its body as possible was made of wood. 3D printing was very limited and only used for components necessary, hard or impossible to substitute for, and only for the final version of the robot. During the process, we recycled what we could, using components or material discarded by other groups. We made the robot as easy to assemble, disassemble and reassemble again as possible, to not throw anything out and not create waste each time something needed to be changed outside or inside the robot’s body.


Bill of Materials

We've compiled a list of all the materials we used during this project. The project cost is 185€. The details can be found in the attached pdf file.

The Team

Our dream team:

Burkiewicz Aleksander : BSc in Electric and Hybrid Vehicles Engineering (2021), mechatronics technician (2017); I moved to Belgium to continue my education as a BRUFACE Master student with specialisation in Module Robotics and Mechatronics Construction. I was engaged mostly in the process of designing and building the circuits, choice of sensors and electronic components, with providing some help in coding.


 Dedoncker Romain: I'm a first year student of a BRUFACE Master specialisation in Module Robotics and Mechatronics Construction at Université Libre de Bruxelles. I was mainly on the design part of this project and helped in the assembly part. What I enjoyed in this project was to be able to share my experience with other students coming from different horizons and learning from them.


Firouzipouyaei Hamed: BRUFACE Master specialisation in Module Robotics and Mechatronics Construction. Member of Programming Team: hamed.firouzipouyaei@vub.be


Fovel Cédric: I just finished 3 years of bachelor's in industrial engineering option health engineering at ECAM and I'm currently bridging towards the BRUFACE program where I’m in the first year of the Civil Engineering’s Master with specialisation in Mechatronics and Robotics Construction.



Project Repo

More Ressources

0001.jpg
0002.jpg
0003.jpg
0004.jpg