Home Hoover

by andresgutierreza0 in Circuits > Arduino

392 Views, 4 Favorites, 0 Comments

Home Hoover

front_picture.png
Home Hoover

To keep the order all the content is in the steps :)

Supplies

.....

Project Abstract


Hello dear reader!


In this instructable, the process of designing and building a robotic vacuum cleaner using recycled and easy-to- access components is presented. Robotic vacuum cleaners are an automatic solution for dust accumulation, making indoors more enjoyable, cleaner and safer. This kind of vacuum cleaner has a hard time accessing corners, therefore a product able to clean corners is demanded. This robot is intended to clean surfaces and avoid obstacles.

Table of Contents

  1. Project Abstract
  2. Table of Contents
  3. Project Motivation
  4. Project Working Modes/Functionality/Requirements
  5. Patent Analysis
  6. Conceptual Design
  7. High-Level Design + Embodiment Design
  8. Design of Sub-Systems
  9. Integration Guide
  10. Demo project show + Quick start guide
  11. Review your project critically
  12. Sustainability
  13. Bill of Materials
  14. Presenting The Team
  15. Project Repo


Project Motivation

Motivation

We spend weekends cleaning and organizing our homes. Dirty and messy homes can be a breeding grounds for germs and bacteria. Those with dust allergies and illnesses like asthma are most affected (source). There are many ways to clean homes. Many of the basic tools used for cleaning throughout history are still familiar to us today, from cloths to brooms, brushes and buckets. But more recently, technological solutions to household dust and dirt—like the vacuum cleaner—have altered our expectations of what 'clean' really means. Aside from the prominent perk of not having to do the vacuuming yourself, here are some other benefits of owning a robot vacuum: convenience and time-saving, cleans different home surfaces, low maintenance, etc. Home hoovers are used on a daily basis, but most of them do not allow you to get into corners and edges of walls. In this regard, developing an automatic hoover to reach the usually difficult areas of a flat to avoid dust accumulation seems to be necessary.


Persona Identification

Even though the market for robotic vacuum cleaners is segmented by end-users and includes commercial and residential use, its size is quite important: $4.80B in 2023. With a compound annual growth rate (CAGR) value of 13.8%, it is expected to reach $9.12B by 2028 (source). Given that investors generally consider the market to be large enough to be worth $100 million or more, the market for robotic vacuum cleaners is significant. 


Consumers are nowadays more likely to purchase robotic vacuum cleaners because of their capability to clean a room without any human intervention. Furthermore, COVID-19 helped increase the market for home automation since people were forced to stay at home for weeks. However, the high installation and maintenance costs of those robots slow market growth.


Current users of automatic vacuum cleaners are baby boomers (born between 1946 and 1964) (source). This is probably  due to the differences in living situations between them and other generations (source). However, the potential for growth in popularity among Gen X (born between 1965 and 1979) is important, since their. proportion in the population is as big as the baby boomers in the US, with a smaller portion - but not the smallest one - of the wealth. This leads to a clear objective: by lowering the price of robot vacuum cleaners, a new generation of consumers could be reached, and sales of the proposed robot could work.

Project Working Modes/functionality/requirements

table_requirements_desig_methodology.png

Requirements

The project has two main functions to accomplish: clean surfaces and navigate indoor environments, including room corners. Since these functions englobe multiple aspects that must be satisfied, the following requirements are listed:

Geometry

The size of the hoover is a high-priority attribute because it will dictate its mobility and range of movement. The area taken by the robot in the horizontal plane also gives an idea of how much surface can be cleaned at once.

Forces

The weight can be divided into one of the body cases as well as the different interior components. Obviously, the case needs to be heavier to avoid deformations or huge constraints on it.

Energy

Different aspects need to be looked at, in particular the suction power, which is different from the device power; it measures the capacity to suck air in efficiently. The working voltage is of higher priority because of the electronic components being used, such as the Arduino.

Materials

The cost is an attribute of the hoover that needs to be minimized. Its quantification is based on the total price to achieve divided by the total weight to achieve. This value can vary based on further design processes.

Kinematics

The speed needs to be high enough to complete a task in minimal time while not being too high to avoid danger for the user and damage to the robot.

Noise

The noise is a low-priority criteria that is being quantified based on the usual values of the competitors.

 

In Image 1, the requirements are listed by priority.

One of the main goals of the automatic vacuum cleaner is to clean corners. This functionality dictates a specific geometry and position of horizontal brushes in order to reach corners fully. An effective home hoover requires a capable vacuum motor to clean the kind of surfaces for which it is designed; in this case, we are going to assume the cleaning of bare floors without high-pile carpets. From an environmental point of view, an energy-efficient product is an ideal solution since it can clean more with the same energy consumption. The use of recycled parts in order to give them new life is a way to avoid the disposal of said components and integrate them into the solution.

State of the Art

Imagen3.png

Example Roomba i1

We chose the example of the Roomba because it’s the most telling example of what we want to achieve. The Roomba is an autonomous vacuum and one of the most popular consumer robots in existence. It navigates around clutter and under furniture, cleaning your floors, and returns to its charging dock when finished. It includes a sensor to detect obstacles and allows for the creation of a map of the surrounding area. From that model, we can draw strengths and weaknesses:

• Strengths: effective, vacuum corners, autonomous, easy charge, easy disposal method, able to draw maps

• Weaknesses: noise, expensive, trouble going on rugs, going over some patches that already went on, bumping into obstacles.

In conclusion, we are going to try to have the same strengths as the Roomba i1 and correct its weaknesses.

 

Example of the Roborock Q5

The Roborock Q5 is one of the most competitive automated vacuum cleaners on the market, as it contains certain features of the premium series of the brand at a lower price.

• Strengths: powerful suction power, long run-time on a single charge, low-weight body small enough to fit under most furniture.

• Weaknesses: struggles picking up pet hair and long hair, terrible air filtration performance, struggles climbing onto high-pile carpets.

Example of the Neato D7

The neato D7 is a particularly designed automated vacuum cleaner, as it has a D-shaped body. It has a very good performance cleaning bare floors and a good enough performance on low-pile and high-pile carpets. It is fairly easy to maintain but has many recurring costs. It’s D-shape does not access the corners fully.

• Strengths: able to climb on to and clean high-pile carpet fairly well, has an overall good performance on all surfaces and climbing rugs.

• Weaknesses: It has fairly high recurrent costs, struggles to pick up small debris, and is not a very powerful vacuum.

Example of Roomba j7

Is one category under the flagship of the company Roomba S9. It integrates a live hazard detection system to avoid cords and pet waste. It is able to regulate its front height to adapt to different types of floors and can adapt to the user’s schedule. Includes room mapping. Has a good cleaning performance on bare floors and an average performance on low-pile and high-pile carpet.

• Strengths: advanced automation capabilities, build quality, maneuverability.

• Weaknesses: high recurrent costs, struggles to pick up small debris on high-pile carpet, slow room mapping.

Example of Euffy G30

It is a basic robot vacuum cleaner with a not-so-powerful vacuum motor that can easily pick up small debris but struggles with pet hair. It can be used with an internet connection and includes physical boundary strips to prevent the robot from entering certain spaces. It has a good cleaning performance on the bare floor but is an inadequate solution for low-pile and high-pile carpets.

• Strengths: decent build quality, including physical boundary strips, low cost.

• Weaknesses: Poor pet cleaning performance. Poor performance on low-pile and high-pile carpets

Example of Shark IQ

Is a basic robot vacuum cleaner with an exceptionally good navigation system and battery life. It is able to clean bare floors nicely but performs poorly on low-pile and high-pile carpets. It also has problems picking up bulky materials like corn flakes.

• Strengths: navigation, battery life, build quality.

• Weaknesses: high recurring costs, poor performance on carpet floors, struggles to pick up bulky objects.

5.2. Competitors Table

The competitors are evaluated on a scale from F to S (F,D,C,B,A, S), where S is excellent and F is really bad.

 

See image 1.

 

Comparison criteria

• Navigation Efficiency: increases when the home hoover navigates the room, not cleaning the same places multiple times.

• Navigation Effectiveness: increases when the home hoover navigates the room without missing spots.

• Cleaning effectiveness increases when the home hoover cleans everything in its path.

• Corner cleaning increases when the home hoover is able to clean room corners.

• Size: dimensions of the home hoover.

• Cost: the market price of the home hoover.

• Environment Versatility: increases when the home hoover is able to clean multiple kinds of surfaces: carpets, ceramic tiles, laminate flooring, etc.

• Cleaning Versatility: increases when the home hoover is able to pick up all kinds of objects on the floor: short or long hairs, dust, and small pieces like cereal.

5.3. Indirect competitors

Non-automatic hoovers are a popular solution for dust accumulation. Since the users have to use them as a tool to clean instead of doing it automatically, they are considered the main indirect competitor. Their main characteristics include a powerful vacuum motor, a smart weight distribution for user comfort, and a hose with detachable heads with multiple geometries. A brief list of indirect competitors is:

·       Eureka Airspeed Ultra.

·       Bissel Cleanview .

·       Dirt Devil.


5.4. Conclusion of competitors analysis

The competence products that accomplish above-average performance in cleaning systems and above-average navigation systems are capable of doing the fundamental task of cleaning the house. Features like rug climbing, edge cleaning, a down-stairs detector, an object detector, and an avoidance program are important to accomplish the main task. More features like auto-bin emptying, mopping, self-charging, an app interface, smart-home integration, and low noise are not essential but still preferred by the users.

Conceptual Design

concept_comparison.png
Ability to move.png
Cleaning corners and small spaces.png
Cleaning of floors.png
Detection of obstacles and fall risk.png
Getting over carpets.png
Power for operation.png
Storing of dirt and dust.png

A list of problems to solve was developed. Each of those problems is intended to be solved by the features of the product. To englobe all the technically possible solutions, only the concept of a feature is described.

Functions the product should be able to perform:

 

1. Ability to move

This product’s mobility is achieved through contact with the ground, primarily facilitated by a mechanical wheel system. The robot will navigate across various types of flooring, including tiles, carpets, and parquet flooring, and must adapt its movement despite changes in the ground material. To achieve this, it must maintain an effective contact surface with the ground. Different combinations of wheels can fulfill this function.

Below the characteristic to take into account when comparing the different wheel combination by order of importance of the different characteristic.

  • Stability: A stable robot is less likely to get stuck or to lose balance and thus interrupt its work.
  • Cost: The cost of the components is still an important part of the project.
  • Maneuverability: When avoiding obstacles, moving alongside the walls, cleaning a corner or even following a path.
  • Surface adaptability: A home hoover will likely encounter different types of floors and will need to be able to move on it.

According to this table and order of importance of the characteristic of comparison, using two drive wheels and a ball is the most suitable solution in our case.


2. Cleaning of floors

The floor cleaning function offers a wide range of options, depending on the type of floor to be cleaned and the level of efficiency required. So it’s important to choose the right cleaning system for the job.

Below the characteristic to take into account when comparing the different cleaning tools by order of importance and a comparative table of the different characteristic.

  • Cleaning efficiency: The primary purpose of the home hoover is to clean, the cleaning efficiency is thus the highest priority
  • Cost: The cost of the components is still an important part of the project.
  • Maintenance needs: For an automated home hoover, the robot need to be able to operate without constant supervision. It is thus important that the robot is low maintenance.
  • Suitability for small spaces: A robot that don’t take much space and thus cleaning tools that are compact is essential to be able to clean everywhere.

Figure: Cleaning of floors

According to this table and order of importance of the characteristic of comparison, using the two sweeping brushes and a vacuum is the most suitable solution in our case



3. Storing dirt and dust

A vital function of a hoover is to reduce the amount of dust and dirt on the floor. To do so, a way of storing it is needed, otherwise the vacuum cleaner would just scatter it.

Below the characteristic to take into account when comparing the different containers by order of importance and a comparative table of the different characteristic.

  • Capacity: It’s important that the home hoover need a good waste capacity to be able to be as independent as possible and for as long as possible.
  • Cost: The cost of the components is still an important part of the project.
  • Convenience and maintenance: Convenience is an important part of consumer appreciation, the change of container must be user-friendly.
  • Sustainability: The environmental factor is increasingly becoming a priority for consumers

Figure: Storing dirt and dust

According to this table and order of importance of the characteristic of comparison, using the container with the foam filter is the most suitable solution in our case.

4. Detection of obstacles and fall risk

In order to move as required, the robot must detect whether or not there is an obstacle or a risk to fall. The detection is done by sensors mounted at the front and sides of the robot. One of the sensor at the front is slightly oriented to the floor to detect if there is a floor the other one detect if there is an obstacle in front. If it detects an obstacle or it fails to detect a floor, it will avoid the area concerned. The sensors on the sides detect if there is an obstacle and if it’s free to turn.

Below the characteristic to take into account when comparing the different distance sensor by order of importance and a comparative table of the different characteristic.


  • Detection range: It’s the most important characteristic in obstacle detection. With a too low detection range, the sensor is not going to detect anything.
  • Cost: The cost of the components is still an important part of the project.
  • Interference: If there is too much interference the sensor is not going to be reliable
  • Accuracy and precision: Determine how reliable is the sensor, it is important to avoid false positive or negative.


Figure: Detection of obstacles and fall risk

According to this table and order of importance of the characteristic of comparison, using the ultrasonic sensor is the most suitable solution in our case.



5. Getting over carpets

The robot must be able to access all cleanable areas, including carpets. For that it would need a way to climb on it and thus overcome the thickness of the carpet.

Below the characteristic to take into account when comparing the different way to go over carpets by order of importance and a comparative table of the different characteristic.


  • Stability: Stability is really important in the case of an automated home hoover. To stay as independent as possible the robot need to stay operational and don’t tip over.
  • Traction: To go over carpet, the robot is going to need a good traction to maintain control and don’t slip.
  • Adaptability: The robot is going to go through different types of floor, it needs to adapted to different texture.


Figure: Getting over carpets

According to this table and order of importance of the characteristic of comparison, using larger wheels is the most suitable solution in our case


6. Power for operation

To operate the robot’s main functions, it will need access to energy.

Below the characteristic to take into account when comparing the different way to power the robot by order of importance and a comparative table of the different characteristic.


  • Charging time: The power supply should be rechargeable and more importantly the charging time should be short to avoid a long downtime.
  • Energy density: It’s the amount of energy stored per volume. The robot needs a high energy power supply that take the less amount of space possible.
  • Lifetime cost: It refers to the cost of replacing or purchasing the battery supply for the robot as long as it is in working condition. A low cost is then preferable.
  • Weight: The robot needs to be as light as possible.


Figure: Power of operation

According to this table and order of importance of the characteristic of comparison, using a lithium-ion battery is the most suitable solution in our case.



7. Cleaning corners and small spaces

To be truly effective, the robot will need to be able to clean more difficult areas, such as corners and small spaces.

Below the characteristic to take into account when comparing the different way to clean edges and corners by order of importance and a comparative table of the different characteristic.

  • Corner and edge cleaning: This is the main criteria to evaluate which solution is the best fit.
  • Cost: The automated home hoover is on a tight budget, a solution too expensive could bejust ignored.
  • Maintenance: To keep the robot independent it has to be low maintenance.

Figure: Cleaning corners and small spaces.

According to this table and the order of importance of the characteristics of comparison, usingside cleaning and a D-shape robot is the most suitable solution in our case


 

How to implement those functions?

Let us compare the different ways each of our system's key functionalities should be implemented.

First and foremost, the motion aspect must make use of motors attached to either wheels or tracks. While both can be retrieved from old devices or bought freely, the wheels are more widespread. On top of that, tracks are much harder to implement in real life because they need at least two rotating cylinders to make them move. It is also slightly harder to find the ratio between the motor's rotation and the gear's to write in the speed control code.

Then, the main function of the hoover, which is its cleaning abilities, can be achieved through either sweeping, sucking, or a combination of both. Sweeping can either be done with a full disc mounted on the bottom of the robot or with counter-rotating brushes rotating in the vertical direction. As for the sucking, it can be attained through a fan inside the robot connected to a pipe, creating a difference in pressure in the pipe. Finally, if both solutions are mixed, then two brushes rotating in the horizontal plane, this time coupled with the same vacuum, can be assembled. This last solution is more demanding in terms of energy and is harder to implement, but it allows for the best cleaning performances. Consider the brush to help the vacuum by directing the dirt towards it.

CONCEPTS

Emerging concept 1

If the cost and difficulty of implementation are not an issue, the first emerging concept for an automated home hoover intended for indoor and outdoor use would have:

  • Tracks
  • Two sweeping brushes and a vacuum
  • A container followed by a filter
  • LiDar sensors
  • Lithium-ion battery
  • Vacuum arm extension

Emerging concept number 2

Create a concept whose primary aim is to fit into the smallest spaces in an apartment. This means prioritizing maneuverability and the size of the various robot parts. With that in mind, that robot would be composed of those components and features:

  • Two caster wheels and a steering wheel
  • Disc sweeper
  • There is no need for a container case because, with the disc sweeper, there is no need to contain any debris.
  • LED TOF sensor
  • Acceleration to climb on carpets
  • D-shaped robot

This automated vacuum cleaner is used for day-to-day operation so that no dirt accumulates and can be picked up by the disc sweeper. The robot moves thanks to a steering wheel and two caster wheels following the LED sensor directions. When it approaches a surmountable obstacle, it picks up speed to be able to climb it. The disc sweeper cleans the floor while the robot is moving.

For maintenance, only the disc sweeper has to be washed regularly to maintain its efficiency.

Emerging concept 3

To create a robot that is low-budget, low-maintenance, and reliable with minimal downtime, the following components and features are needed:

  • Two drive wheels and a ball
  • Two sweeping brushes and a vacuum
  • A container
  • Ultrasonic senso
  • Larger wheels
  • Lithium-ion battery
  • Side cleaning and d-shaped

This automated home hoover is mounted on two drive wheels and a ball wheel, allowing it stability and maneuverability. The ultrasonic sensor enables it to avoid the obstacles in its way. It uses two sweeping brushes that scrub any dirt that would not come off with a vacuum and send them to the vacuum. The dirt and other debris are then forwarded to the container. 

For maintenance, the container must be emptied when full, and the sweeping brushes must be replaced or washed when the robot loses efficiency.

Comparison of the concepts

In the concept comparison table, the fulfillment of the required features is evaluated, and concept 3 is the winner.

High-Level Design / Embodiment Design

block_diagram.png
granta1.png
grantalaw.png
grantaselection.png

BLOCK DIAGRAM:

The Block diagram

CAD Model:

Model is in section 15.

Material selection:

The materials need to be relatively solid to resist impacts and constraints while not being too heavy for performance and safety reasons or too expensive. In order to fulfill those requirements, the following model was implemented in Granta Edupack to find a law constraining the materials to between 1 and 5 GPa with a density and price limit.

The result gives us wood as the hardest material in our selection and plastics as well as metal foam on the softer end. Metal foam being harder to control in terms of shape, wood and plastic are retained. The different pieces of the hoover will be connected to the bottom plate with 3D-printed holders, and the curvy side plates will also be printed. This means those will be PLA, while the rest of the body and the container will be made with MDF and shaped with a laser cutter.

In contrast with the market's hoovers, where they use plastic for nearly all the parts, including the casing, the use of wood allows for easier implementation in the prototype while also making it more resistant in case of accidents during the testing.

Assembly:

The pieces are to be assembled with nuts and bolts, while the size of the ultrasonic sensors' holes being too small will require them to be attached with wires to the body. Not many options are available for the assembly, but the use of both the vertical and the bottom plates to place the electronic circuit is a smart choice that enables great space optimization. To avoid having dust go inside the device's body, the pipe should act as a female with regards to the extruded printed pieces attached to the container and the bottom plate. Finally, the plates are cut with interlocking parts, enabling the top plate to be opened at will while staying attached to the whole.

Manufacturing processes

1. Laser Cutting:

The material in this manufacturing process is MDF wood.

a. Robot Body

  • Front plate
  • Left and right side plates
  • Bottom plate
  • Top plate

b. Dirt Container

In this part, laser cutting was used since the dist container is a box made of constant-thickness walls.

2. 3D printing:

The material used in this manufacturing process is generic PLA.

a. Robot Body

  • Curved back plates
  • Motor holders
  • assemble L pieces
  • Hose attachments
  • stairs sensor mount

b. Cleaning system

  • Attachments to fit the hose.


Design of Sub-Systems

circuit_diagram.jpg
arduino_connections2.png
mechxdiagram (1).png

Mechanical Systems

The mechanical systems included in the robot are the vacuum, motors, wheel gear reductions, and brush gear reductions.

The vacuum is generated by a suction motor located in the dust bin. It generates a pressure difference that enables the robot to pick up dirt from the floor through a hose with an internal diameter of 15 mm.

In the case of the recycled motor-wheel gear reduction, it is composed of six gear reductions, which compose a total end-to end gear ratio of 40:1. This enables the wheels to have a higher torque and lower speed, and it is beneficial to place the optical encoders on the motor shaft because a higher resolution of the wheel speed will be obtained.

 

Circuitry and Sensors

As the robot has to include its own power source but has to power multiple voltage devices, two buck converters (LM2596) were used. The first one reduces the battery voltage to 5V to power the Arduino, sensors, and small brush motors; the second one reduces the voltage to 9V to power the vacuum motor and the wheel motors. A button was included on the top of the robot so the user could turn it on or off.

The Arduino connections are shown in the ASCII art Arduino diagram. Since Arduino, some Arduino pins have special operation modes required for this project. Those pins were assigned first:

Interruption pins: pins 2 and 3 on the Arduino board support interruptions. So these were assigned to get the pulse lecture of the encoders every time the motor rotates 0.1 PI.

PWM pins: to control the speed of the motor, a pulse-wide modulation is required. Pins 10 and 11 are selected.

The other connections to the motor driver LM298N (in1, in2, in3, in4) and ultrasonic sensors (trig #, echo #) are selected to keep order.

 

Software

The software shown in the above flow diagram should enable the product to process the sensor signals to detect obstacles and avoid them with a change of behavior in the actuators. When avoiding one of them, the code should provide a rotating motion when such an obstacle is met so that the robot follows a random cleaning path in the room. Otherwise, the robot should go forward and keep checking the sensors without trying to regulate in a straight line, as the goal here isn't to follow a track but to clean.

Sensors on each side, encoders, an Arduino, and a motor driver are the components in use. When rotating and thus regulating, to determine the position of the wheels, the rising edge of the optical encoder triggers an interruption function in the Arduino code that adds up the number of times the motor rotates by 18 degrees, which corresponds to a 0.45 degree rotation of the wheels. Based on this, the distance traveled at time t can be computed.

The closed loop itself uses the difference between each position to be attained at time t and the one that was attained at time t, as the flow diagram explains. A proportional controller with K was found on the basis of experiments, and the control ends when the total length covered is sufficiently close to the one that corresponds to that of the actual rotation's circumference.

//                                               +-----+
//                  +----[PWR]-------------------| USB |--+
//                  |                            +-----+  |
//                  |         GND/RST2  [ ][ ]            |
//                  |       MOSI2/SCK2  [ ][ ]  A5/SCL[ ] |    
//                  |          5V/MISO2 [ ][ ]  A4/SDA[ ] |    
//                  |                             AREF[ ] |
//                  |                              GND[ ] |
//                  | [ ]N/C                    SCK/13[ ] |   Motor left int4
//                  | [ ]IOREF                 MISO/12[ ] |   Motor left int3
//                  | [ ]RST                   MOSI/11[ ]~|   Motor left PWM ENB
//                  | [ ]3V3    +---+               10[ ]~|   Motor right PWM ENA
//                  | [ ]5v    -| A |-               9[ ]~|   Motor right int2
//                  | [ ]GND   -| R |-               8[ ] |   Motor right int1
//                  | [ ]GND   -| D |-                    |
//                  | [ ]Vin   -| U |-               7[ ] |   TRIG 3
//                  |          -| I |-               6[ ]~|   ECHO 3
//                  | [ ]A0    -| N |-               5[ ]~|   TRIG 2
//                  | [ ]A1    -| O |-               4[ ] |   ECHO 2
//                  | [ ]A2     +---+           INT1/3[ ]~|   ENCODER L
// cleanning syst   | [ ]A3                     INT0/2[ ] |   ENCODER R
//          ECHO 4  | [ ]A4/SDA  RST SCK MISO     TX>1[ ] |   TRIG 1
//          TRIG 4  | [ ]A5/SCL  [ ] [ ] [ ]      RX<0[ ] |   ECHO 1
//                  |            [ ] [ ] [ ]              |
//                  |  UNO_R3    GND MOSI 5V  ____________/
//                   \_______________________/ 
//


//pins for encoders
#define CLK_PINA 2
#define CLK_PINB 3 


//pins for motor voltage
#define ENA 10 //right motor input voltage IN1 = HIGH IN2 = LOW to go forward
#define IN1 8
#define IN2 9
#define ENB 11
#define IN3 12
#define IN4 13


//globals for loop control
#define DIRECTION_CW 0   // clockwise direction
#define DIRECTION_CCW 1  // counter-clockwise direction
#define KP 20     //1.03/(2*0.135 )
#define PI 3.14159265358979323846
#define E 0.18
#define RADIUS 0.038


//variables used in the interrupts should be "volatile" type to avoid unexpected behavior
volatile int rotatingCounterA = 0;
volatile int rotatingCounterB = 0; 
volatile int numberOfRotationsA = 0; 
volatile int numberOfRotationsB = 0; 
volatile int directionA = DIRECTION_CW;
volatile int directionB = DIRECTION_CW; 
const int numberOfHoles = 20; 


//dutycycles of PWM signals 
float dcA = 0; 
float dcB = 0; 


//ultrasonic sensors output and input 
const int triggerPin1 = 15;
const int echoPin1 = 14; 
const int triggerPin2 = 4;
const int echoPin2 = 5; 
const int triggerPin3 = 7;
const int echoPin3 = 6;
const int triggerPin4 = 16;
const int echoPin4 = 17;


//timevariables for each sensors measuring the time the sound signal takes to come back
//sensor 1 is left, 2 is below, 3 is right, 4 is front
long sensorTime1;
long sensorTime2;
long sensorTime4; 


//distances between sensors and obstacles
float distanceLeft;
float distanceFront;
float distanceRight;
float minimalDistance = 20; 
////////////////////////variables for loop control
float Kp = 0; 
float totalAngle = 90;  
float distanceTotal = 0; 


//length of the rotation displacement spend in acceleration, continous speed and deceleration of motors
float distanceAccel = 0.25;             //const because acc= 1
float distanceDecel = 0.25;             //const because dec= -1
float distanceContinuous = 0;         


//time spent in each phase
float accelTime = 1 ; 
float decelTime = 1;
float continuousTime = 0; 
float totalTime = 0; 


float t = 0; 
unsigned long t_start = 0; 
float t_continuous = 0; 
float t_decel = 0; 
float ref = 0; 
float tolerance = 0.08; 


//positions on the wheels in m and degrees
float posA = 0; 
float posB = 0; 
float posADegree = 0;
float posBDegree = 0; 


//errors on the position towards the ref and the total distance
float errorA = 0; 
float errorB = 0;
float errorTotalA = 0; 
float errorTotalB = 0;


bool stopRotation = 1; 


void calcul(){
  distanceTotal = totalAngle * PI/180 * E/2;
  Kp = KP;
  if(distanceTotal>0.5){    //in case the angle chosen by the user is big like 180 or 360
  distanceContinuous = distanceTotal - distanceAccel - distanceDecel; 
  continuousTime = distanceContinuous/0.5; 
  totalTime = accelTime + decelTime + continuousTime;
  }
  else{
  distanceContinuous = 0; 
  continuousTime = 0; 
  distanceAccel = distanceTotal/2;
  distanceDecel = distanceTotal/2;
  accelTime  = sqrt(2 * distanceAccel/0.5); //acceleration of motors is 0.5 s/m^2
  decelTime = sqrt(2 * distanceDecel/0.5); 
  totalTime = accelTime + decelTime ;
  }
}


//calculates the distances in meters done by prototype
void calculate_posA(){
    posADegree = numberOfRotationsA*360 + (rotatingCounterA)*0.45;      
    posA = posADegree*2*PI/360*RADIUS;                    
}


void calculate_posB(){
    posBDegree = numberOfRotationsB*360 + (rotatingCounterB)*0.45;
    posB = posBDegree*2*PI/360*RADIUS;
}


void regulate(float ref){
    calculate_posA(); 
    calculate_posB(); 
    
    errorA = ref-posA; 
    errorB = ref-posB;  
    dcA = Kp * errorA; 
    dcB = Kp * errorB;
}


//defines the input signal
void accel(){
    ref = 0.5*pow(t,2)/2;  ///2.5000e-07
    regulate(ref);  
}


void continuous(){
    t_continuous = t-accelTime; 
    ref = 0.5*t_continuous + distanceAccel; 
    regulate(ref); 
}


void decel(){
    t_decel = t-accelTime-continuousTime; 
    ref = -0.5*pow(t_decel,2)/2 + distanceAccel + distanceContinuous + (0.5*accelTime)*t_decel; 
    if (ref <0){
      stop(); 
    }
    regulate(ref);
}


void stop(){
    Serial.println("stop"); 
    stopRotation = 1; 
    dcA = 0.5; //go forward again
    dcB = 0.44; 
}


void sample_time(){     //once a turning motion is launched, this function is called and doesn't use the sensors (check sensors is not being called) until the rotation is done
  rotatingCounterA = 0; //initializing all the variables for the regulation
  rotatingCounterB = 0; 
  numberOfRotationsA = 0; 
  numberOfRotationsB = 0; 
  posA = 0; 
  posB = 0; 
  posADegree = 0; 
  posBDegree = 0; 
  t = 0;
  t_start = millis(); 
  while(!stopRotation){
    t = 0.001*(millis()-t_start);
    Serial.println("t="); 
    Serial.println(t); 
   
    errorTotalA = distanceTotal-posA; 
    errorTotalB = distanceTotal-posB;
    if ( (errorTotalA > tolerance) || (errorTotalB > tolerance) ){
        if (t<accelTime && t>=0){
          accel();
        }
        else if(t<(continuousTime+ accelTime)){
          continuous(); 
        }
        else if(t>(accelTime +continuousTime)){
          decel(); 
        }
        analogWrite(ENA, dcA*255); 
        analogWrite(ENB, dcB*255); 
    }
    else{
        stop(); //we stop once one of the wheels is close enough to its destination
    }
  }
}


//interrupt functions called on rising edge of pin 2 and 3 (each time a hole passes in front of the encoder)
void ISR_encoderA() {
  rotatingCounterA = rotatingCounterA + 1 ;
  if(rotatingCounterA == 800){
    numberOfRotationsA = numberOfRotationsA + 1;
    rotatingCounterA = 0; 
  }
}


void ISR_encoderB() {
  rotatingCounterB = rotatingCounterB +1;  
  if(rotatingCounterB == 800){
    numberOfRotationsB = numberOfRotationsB + 1;
    rotatingCounterB = 0;  
  }
}


Integration Guide

The following is a step-by-step guide on how to assemble a home hoover prototype.

  1. Assemble the body: Use the laser-cut, 3D-printed pieces and 3M bolts and nuts to assemble the base body of the robot. including the dirt container pieces.
  2. Attach the motors to the body with its 3D-printed supports. Add the encoder disk to the motor shaft. After doing so, place the encoders in a position such that they are able to work properly. You will notice if you energize the encoder and a led turns on/off when the disk is detected.
  3. Place the ultrasonic sensors in place with a cable. Pass the cable through the sensor and chassis holes.
  4. Weld the buck converts to a small universal PCB with holes for 3M bolts in such a way that you get 4 wires for the 5V, GND, and 9V,GND. Connect the in+ of the two buck converters together, and repeat for the in-. Soler two wires to the XT60 connection that goes to the battery. Positive of the battery should go to in+ through a button and negative to in-.
  5. Assemble the dirt bin box, including the 3D-printed part for the hose and the recycled filter. Then, attach the vacuum motor with glue; in this way, no gaps are guaranteed. Add the hinge to the dirt bin and use it to include the dirt bin in the main body. Add the 3D-printed parts for the hose in the main body.
  6. Place the charged battery in front of the dust bin and place the hose so the battery doesn't move.
  7. Load the program onto the Arduino.
  8. Place all the electronic components on the inside of the body and fit them with bolts and nuts. If you miss some holes by a few millimeters, you can use a drill to make holes in the right position. As the protoboard has a sticky layer underneath, use the layer to stick it to the body.
  9. Do the connections shown in step 7 with the aid of the protoboard. Follow a procedure of connection and checking to guarantee that, in the end, everything is in the right place and working.

Demo Project Show + Quick Start Guide

Home Hoover

Quick Start Guide

  1. Make sure the battery is charged.
  2. Press the top Button.
  3. Vacuum!
  4. Press the top button again to turn off. :)

Review Your Project Critically

During the project, many iterations were done to go back and correct previously made decisions. Still, some problems went all the way and ended up in the prototype. Principally, the chosen sensors to detect front and side obstacles could be replaced with two lidar sensors. This way, a bigger picture of the environment can be detected and used to give the robot better navigation behavior. The stairs detection sensor could have been better chosen as well; it is positioned at an angle higher than 15 degrees from a vertical axis, which makes the emitted ultrasound not able to detect the floor distance. A better solution could be a sensor that isn’t affected by the angle of the surface it has to detect.

Sustainability

There are multiple ways to make the product more sustainable.

Materials selection

By including in the material selection process factors such as recyclability, biodegradability, carbon footprint, and the use of toxic and dangerous substances like mercury and lead for the manufacturing of the material, a more sustainable solution can be found.

Energy efficiency

Intelligent use of the battery energy can be achieved if the robot is able to navigate a room without cleaning the same spots multiple times and is able to tell when it is done. This requires far more development in the robot behavior, a mapping system, and a high level of effectiveness in the cleaning system. Also, by adding a low-power mode when the robot is not in use, the energy efficiency of the robot can increase.

Incorporate circular design principles

Avoiding early disposal of the product can be achieved using circular design principles. To do so, modularity of the product compatible with the actual standard is possible. This way, when a part of the robot stops working, the user can easily replace it and even upgrade it.

Bill of Materials

Bill_of_materials_Home_Hoover3.png

Present Your Team

Omidreza Kamalian

I am a MA1 Electromechanical Engineering student. This was a fructiferous project as we gained experience implementing a solution in a multidisciplinary way including mechanics, electronics, programming and design methodology. I worked on the CAD Design, assembly of the prototype, design process, troubleshooting and the recycling and implementation of the old Roomba parts.

Joël Matin

This was a very rewarding project in light of the attained results and the number of problems that we encountered on the way. I worked on many steps especially the design, the assembly of the pieces, the circuit, the recycling and implementation of the old Roomba's parts and the code. I hope people can benefit from our work.

Louise Renneboog

I am between my master 1 and 2, I like to work on electronic project on my own time at home. I worked on the presentations, helped with the various research, took notes of what we could do better after the presentations and did most of the report. At the beginning of the project, I took the lead for the different task repartition, each person of this group was excited to do a specific practical part not leaving much left to do. I did not mind, because I did a similar project for my second year of bachelor (it was an automated mapping robot) and wanted everyone to have a similar experience. Since the beginning of the year, I made myself available if anyone needed help with their part and nobody took the offer. We thus made a deal as a team, for me and Rafaël to work together on the report. 

Rafaël Hueso

I'm in Master 1. I mainly worked on the different presentations, I took part in all the research, I did some of the management, I took into account the different deadlines to help allocate tasks and I wrote different parts of the report. I was involved in different parts of the project, but I soon realised that there wasn't much to do in parallel. Due to personal problems during this term, I wasn't able to follow all the progress over a period, which meant I was less present. In the end, I made myself available to help where needed. As a result of a deal with the whole team, we agreed on the fact that Louise and I were working together on the whole report.

Andrés Gutiérrez

I recently finished Bachelors degree in Mechatronics engineering back in my home country Colombia and enrolled in the Electromechanics master’s program to get deeper knowledge in the subject. I worked on many steps of the process: design, components sourcing, part of the assembly, and part of the code. I’m glad after numerous problems the project is done and I’d like to thank all members of the team.

Project Repo

https://drive.google.com/drive/folders/1ruNggarx3m8yrruCibVHF2UrlIFDovbE?usp=sharing