Tremors

Tremors

Event pdf Updated. New arena uploaded. New Light Source (victim) has been uploaded. Vibration source changed.

Build an Autonomous robot that can seek out victims present in the arena while detecting and avoiding earthquake affected vibration zones present in the arena.

The Autonomous Robot has to traverse an arena to save victims (represented by light sources) and evade Earthquake hit zones (represented by vibration zones) present in the arena.

The robot will begin its run from a predefined position. There will be no guiding path on the floor such as white lines. The robot’s objective is to reach out to the maximum number of victims while avoiding the earthquake hit zones in minimum time possible.

Round 1:

  1. There will a maximum of 4 vibration zones in the arena.
  2. There will a maximum of 4 Victims (light sources) present in the arena.
  3. Total run time allotted for this round is 4 minutes.

Round 2:

  1. There will be maximum of 6 vibration zones in the arena.
  2. There will a maximum of 6 Victims (light sources) present in the arena.
  3. Total run time allotted for this round is 6 minutes.

ROUND 1 :

ARENA :

This is a sample Arena. It shows 4 light sources (Victims).

Round 1- RULES :

  1. The robot has to start from the start zone and avoid the vibration circles which are shown in the arena tab.
  2. Negative points will be awarded on entering the vibration zones as per the Scoring formula.
  3. There will be a maximum 4 victims in Round 1 and the victims are emitting visible light.
  4. The robot has to traverse on the arena and approach the victim.
  5. On reaching the victim, the robot has to bump into the metal plates present around each victim. This would deactivate the light source i.e. it would be switched off and it would be considered as saving the Victim.
  6. The runtime for this round is 4 minutes.
  7. There can be a maximum of two timeouts (each of 1 min) and one restart in this round.

ROUND 1 :

ARENA :

The arena for the Second Round will be similar to the arena for the first round. There are no Crevices.

Round 2- RULES :

  1. The robot has to start from the start zone and avoid the vibration circles which are shown in the arena tab.
  2. The robot is supposed to avoid the vibration affected area and save the victims by deactivating the light sources.
  3. Negative points will be awarded on entering the vibration zones as per the Scoring formula.
  4. There will be a maximum of 6 victims (light sources) in this round.
  5. There will be a maximum of 6 vibration sources in this round.
  6. The robot has to traverse on the arena and approach the victim.
  7. On reaching the victim, the robot has to bump into the metal plates present around each victim. This would deactivate the light source i.e. it would be switched off and it would be considered as saving the Victim.
  8. The runtime for this round is 6 minutes.
  9. There can be a maximum of three timeouts (each of 1 min) and two restarts in this round.
  1. The robot should be completely autonomous.
  2. All arena dimensions have a tolerance of 15%.
  3. Each team can consist of a maximum of 4 members.
  4. Each team should have unique participants i.e. no two teams can have even a single participant common.
  5. The team members can be from different institutes or colleges.
  6. The right spirit of participation is expected from the participants.
  7. The decision of the Team Robotix will be final and binding.

 

 

Vibration source:

  1. The source will generate vibrations which will have a circular wave front.
  2. The vibrator that will be used is a simple high RPM motor with a weight attached on one side og the shaft as shown in figure.

                 

Vibration Zone (Inaccessible):

  1. This is the vibration zone demarcated with concentric circles.
  2. The Innermost Vibration Zone i.e. the Circle with a radius of 5 cm.
  3. The Outermost Vibration Zone (Orange Circle) has a radius of 20 cm.
  4. There are two other intermediate circles of radius 10 cm and 15 cm respectively.

Note: The diameter of the circles has been stated from the common centre of all the circles.

 

 

Victims:

  1. The victim will be represented by light sources.
  2. The light bulb will be of 100 W, 220 V rating.
  3. Height of the light source is 20 cm.
  4. The light sources will be emitting light in the Visible Spectrum
  5. The intensity of each light source measured individually, in a completely dark room, will be nearly the same.
  6. The Victim would be considered to be saved only when the the light source is switched off.

Saving the Victims:

  1. For saving the victim the robot has to avoid all the vibration zones reach near the victim.
  2. The robot has to reach out to each Victim (light source) and bump into the metal plates present around each victim. This would deactivate the light source i.e. it would be switched off and it would be considered as saving the Victim.

Robot traversal:

  1. The autonomous robot has to start from the start zone as marked in the arena.
  2. After it enters the arena, it needs to move according to the placement of vibration sources and victims.
  3. The robot needs to avoid entering the vibration zone.
  4. The robot must avoid colliding with victims that have already been saved i.e. avoid collision with deactivated light sources.
  5. For the Time bonus to be awarded, it is essential for the robot to save at least 2 Victims i.e. deactivate at least two light sources.

Initial Orientation of Robot:

  1. The participant is allowed to decide the initial orientation of his robot(s) but it should be such that it is not facing any light source directly.
  2. Team Robotix reserves the right to disallow any initial orientation of the robot inside the  starting  zone  if  it  gives  the  participant  an  undue advantage solely based on the judge's discretion.

Technical Rules:

  1. A standard 220 Volt AC power supply will be provided by Team ROBOTIX in the arena.
  2. The robot can be powered on-board (using batteries) as well as off-board.
  3. No kind of external control is allowed during the run.
  4. All Circuitry and sensory equipment should be placed on the robot adhering to the ROBOT SPECIFICATIONS.
  5. Participants will have to bring their own programmers, cables and software. No Programmers will be supplied.
  6. Hard Coding is not allowed.
  7. All the dimensions of the arena and the Victims are to be considered with a tolerance of 10%.
  1. The autonomous robot dimension should not exceed 25cm*25cm*25cm (L*B*H).
  2. The robot must have on board processors i.e. the robot cannot be controlled by a remotely kept computer. The processor used on the robot must be at a maximum 16 bit processor.
  3. The Team must bring long wires if they wish to power the robot off-board i.e. If they wish to use an adapter or transformer-rectifier pair.
  4. The robot must not harm the arena in any way. If it does so, a penalty will imposed on the team. The magnitude of the penalty will be decided by Team Robotix.
  5. Team Robotix reserves the right to disallow any ready-made chassis which may give an unfair advantage to the participating team.

Rewards:

  1. The number of victims saved (light sources switched off): {V}
  2. Time Bonus: {B = (Total Allotted Time - Run Time)/2 }

Total Allotted time is the maximum run time for the robot for the respective round and Run Time is the time taken by the robot to complete its run.

Penalties:

  1. The number of times the robot enters the vibration zone in
    a. The region inside the innermost circle of radius 5 cm: (Z)
    b. The region inside the Circle of Radius 10 cm: (Y)
    c. The region inside the Circle of Radius 15 cm: (X)
    d. There is no penalty for entering only the outermost circle of radius 20 cm.
     
  2. There is an additional penalty when a robot does a Cross-Over i.e. it simply enters the vibration zone and exits directly at the diametrically opposite end. Such a scenario denotes that the robot has simply not detected the vibration zone, hence an additional penalty.
    The number of times the Robot does a Cross-Over: (C)
  3. The number of times the robot hits the walls surrounding the arena: (W)
  4. The number of times the robot collides with a victim that has already been saved i.e. collision with a deactivated light source: (D)
  5. Timeouts: (T)
  6. Restart: (R)

SCORING FORMULA (S) = 500 + (V*100) + (B) - (X*25) - (Y*50) - (Z*75) - (C*25) - (W*20) - (D*25) - (T*25) - (R*80)

Where, 500 is the base score for all the rounds.

Category of Event : Autonomous Robotics

It is said that nature’s fury, when unleashed, is unstoppable. There is no technology, no human invention that can contend with a sufficiently powerful natural phenomenon. Earthquakes are right up there on the list of such events. There is little anybody can do when the very ground beneath their feet gives way and structures crumble around them.
However, where we do have a role to play, and a crucial one at that, is in the aftermath. Acting quickly and effectively would be the difference between Life and Death for many of the affected people. With its autonomous event TREMORS, the team at ROBOTIX 2014 invites participants to design and program a robot capable of detecting mini-vibrations on the floor as earthquakes, of navigating to the source and saving stranded victims from their doom. Not for the faint of heart is this!

Abstract Submission is not required for this Event. Register here to participate.

For any queries or doubts regarding the event Tremors, visit our forum or contact:

Rahul Jhawar

mail-to : rahuljhawar@robotix.in

+91 9836305633

Githin John

mail-to : githin@robotix.in

+91 8609663515

Monika Pani

mail-to : monika@robotix.in

+91 8895592320

Facebook Discussion group for the event Tremors.

Coming Soon...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. The Arena is of the size 3m*3m.
  2. The Victims will be placed at any random positions in the arena.
  3. The Victims will not be placed inside the vibration zone.
  4. The Arena will be enclosed by walls on all the sides. The walls will be covered with a black cloth. The walls can be detected by sensors such as led-ldr sensor, sharp sensor, etc.
  5. The Start zone will be a 25cm*25cm square area at one of the corners of the arena.
  6. No participant will be allowed to step on the arena, hence the participants must bring long wires for the power supply of the bot.
  7. The robot and the participating team must not harm the arena in any way. If done, then a penalty will be imposed on the team and the magnitude of the penalty will be decided by Team Robotix.

Introduction

This tutorial assumes basic prerequisite knowledge of differential drive and microcontrollers. Otherwise, the following tutorials can be referred:
1. Differential Drive
2. AVR / Arduino
3. ADC

Problem statement : Build an autonomous robot that can detect the mini earthquakes and evacuate the victims that are present in the affected region.

What the robot requires to do?
-Traverse the arena and avoid the vibration affected zone.
-Approach the Light emitting victim.

Technical actions to be performed
-Vibration detection
-Light detection
-Obstacle detection (for unlit light sources)

Now let us analyse how each of these can be achieved.

1. Vibration Detection
There are various vibration sensors available in the market. Here, in our problem statement the vibrations are happening in the vertical plane.
So, our vibration sensors should detect the vibrations only in the vertical plane and shouldn’t be affected by the vibrations generated by the robot’s motion in the horizontal plane.
Also, the sensors should be of high sensitivity.

Some possible sensors for vibration detection are:
1. Accelerometer
2. Piezo sensor

So, how can these sensors be used?
Basically, sensor will detect 2 different potentials in the normal arena and the vibrating area. Using this property, we’ll know that the robot has detected the vibration zone.

In this tutorial, accelerometer was tested and tried. As per the sensitivity requirements of the event, the linked accelerometer proved to be the best. However, the participant is free to search for more appropriate sensors.

Accelerometer as a vibration sensor facilitates us as it doesn’t detect the robots motion in the horizontal plane. If the vibration is in the Z direction of the accelerometer, then we have to read only the Z pin of the accelerometer.

2. Light detection

Here, light detection can be done by using simple LDR sensors. Large LDR sensors can accomplish the task for the event.

3. Obstacle detection

The sensors that can be used for obstacle sensing can be simple IR LED-Photodiode sensors, SONAR, SHARP sensors etc. 

This obstacle detecting sensor will be attached to the robot’s front such that the obstacle is detected whenever the reflectivity is high. Consider an IR sensor. The reflectivity of the sensor will be lower than the reflectivity on a block. This change in reflectivity will result a change is the IR receiver which will indicate the detection of an obstacle.

Algorithm for vibration detection
Now that we’re clear with the actions that the robot has to take, let us have a look at the possible algorithm.

The picture below shows the ADC readings of the accelerometer used in the tutorial, as it moves from the non-vibrating arena to the vibration zone. The VRef for ADC here is 5 V. The voltage at which accelerometer is working is 3.3V.

The graph on the left of 10000 mark on the X axis represents the ADC readings on the normal arena and to its right are the ADC readings on the vibrating zone.

**Note: The graph is clipped at some point around 650 ADC value. This is because accelerometer is working at 3.3 V. So maximum accelerometer output can be 3.3 V and hence, the ADC values don’t cross this limit.

So, as we can observe, due to continuous oscillating vibration, we are unable to observe a constant reading. However, we can observe that the amplitude of the oscillating readings increases as soon as the robot enters the vibration zone. This is the point which we’ll use in our microcontroller code in order to differentiate vibration zone.
In the above experimentation, it was observed that in the normal arena, the difference in the maxima and minima of ADC values is around 400 and as soon as it enters the vibration zone, the difference in the maxima and minima of the ADC values is around 650.

So,
if ( D>500)

else

where D = difference of the maxima and minima observed in say, the last 10 ADC readings at time t.

Assembly
Now, our robot is capable of detecting vibration, detecting light source and avoiding abstacle. All you have to write a code that incorporates all these inputs and performs the task.
Integration of the robot involves one vibration sensor which preferable touches the ground for more accurate readings. The LDR sensor will be attaches at a suitable height so that it can capture the light rays from the victim.
 

Problem Statement of Tremors:
Build an Autonomous robot that can seek out victims present in the arena while detecting and avoiding earthquake affected vibration zones present in the arena. For more details about the event, refer to our website.
As per the Problem Statement, the robot has to guide its locomotion and perform the tasks of
(i) Light detection
(ii) Vibration detection.


Materials Required:

• Chassis
• 2 DC motors
• 2 Wheels
• 1 Castor Wheel
• 1 Development Board
• 1 Microcontroller (Atmega16)
• 1 Programmer
• 1 Motor Driver (L293D)
• Relimate Connectors
• 3 Large LDRs
• A high sensitivity accelerometer (MMA7361 used over here)

In this Do It Yourself tutorial, the tasks of the robot have been divided into the following parts
o Locomotion of the Robot
o Sensors
o Processing
o Algorithm
o Code

Locomotion:
For locomotion, a simple differential drive is being used. In a differential drive, two basic motors can be used to run the robot in all the required manners. Given below, is a simple demonstration of a differential drive.

This is a basic H-Bridge differential drive. Given below is a table in which running motor in different directions results in different directions of motion.
Right motor    |    Left motor    |      Motion
          1             |             1           |     Forward
          0             |             1           |     Right
          1             |             0           |     Left
          0             |             0           |     Free run
          1             |             1           |     Braking
** 1 → Motor movement in front direction     0 → Motor movement in backward direction
You can also check our detailed tutorial on Differential drives.

Sensors:
In this event, we need to sense two things - Light radiations & Vibrations.


Light Detection:
We have used 3 simple LDR sensors as Light receivers. The LDR sensors have been used in a layout which enables the robot to sense any light except the one directly behind it. We have placed them on the robot in Left, Central and Right orientation (shown in the figure below).

We have marked the LDR sensors as left (I-L), right (I-R) and centre (I-C) sensors. The objective is to find which sensor receives maximum intensity and to face the robot in that direction. And this is achieved as the LDR which receives the maximum amount of light will have the minimum resistance across its terminals and hence will be the one which gives the direction as to where the victim is. The diagram below shows the circuitry in the sensor circuit:

Each sensor has to be provided with a 5V supply (VCC)and the output pin(D) data goes to the microcontroller. The 10K potentiometer is used between the LDR and the Ground.

Vibration detection:
Here, we have used a high sensitivity accelerometer - Triple axis accelerometer MMA7361. To understand the basics of accelerometer, see our tutorial on Accelerometer.
Here, a vibration is basically, rapid change in acceleration of a robot in the direction perpendicular (along z axis say) to the motion of robot. The best part about using an accelerometer is that when we are tapping the Z pin of the accelerometer, the output is not affected by robots motion in x-y direction.

Accelerometer will give its best result when placed in contact with ground. But otherwise, the ADC readings are good even when it is placed on the robot.

The circuit diagram for this accelerometer is:

The SLP pin is connected to digital high(VCC) so that accelerometer is activated. The GSEL pin is grounded so that we get the higher sensitivity (MMA7361 is capable of providing 2 sensitivity modes). You can know more about this Integrated Circuit from its datasheet.
The Zout pin data goes as input to the microcontroller.


Processing
Now we have 2 types of sensor inputs (LDR sensors & Accelerometer). We need to interface both of them for guiding our robot. So, the microcontroller needs to interpret both LDR sensor input and accelerometer input. The flowchart for the robot can be presented as shown below


Here, we have used Atmega 16A as our microcontroller IC. We are using rhino development board for our purpose. The LCD makes thresholding easy for the accelerometer. Now, in this DIY, we’ll be using ADC for converting sensor data for the microcontroller.
We’ve used 3 LDR sensors which are attached on the robot. Hence we have 4 inputs to the microcontroller. 3 from LDR sensors and 1 from accelerometer. Since we are using ADC, we’ll have to connect it to the PORTA of Atmega 16A. Read our detailed tutorial on ADC (Analogue to Digital).
Rhino board has inbuilt facility of motordriver. So, here we didn’t have to make an external motordriver circuit.However, if you are not using rhino board, you’ll have to make a motordriver circuit whose circuit diagram would look as shown below:

You can take output from any port of microcontroller and connect it to the input pins of the motordriver (Input1, Input2, Input3, Input4, Enable1 and Enable2).Check out tutorial on Motor Driver for further assistance.

Algorithm
As our problem statement is, the robot should follow the light and avoid the vibration areas on the way. So, our algorithm is as follows:
 
Follow light --> If vibration centre --> Avoid
                      --> Else continue

 

Light Following Algorithm
Let intensity of light on the respective Left, Right and Central LDR sensors be represented by I-L, I-R & I-C.
Then our algorithm for light following will be:

If(I-L is greatest)
{ Turn Left     }


Else If(I-R is greatest)
{ Turn Right   }

Else If (I-C is greatest)
{ Go straight    }

Else
{             Take a Zero Radius turn   }

Vibration Detection Algorithm
Accelerometer will give you varying ADC readings.  The readings vary as shown in figure. This is a Matlab plot.

The simplest way to detect vibration is take in account last few (let’s take 20) readings, find the difference between the maxima and minima amongst the last 20 readings. This difference is greater in the vibration zone and less in the non-vibrating zone. So, this difference can be thresholded to detected vibration. You can display this difference on LCD screen for thresholding purpose.

Let the difference of the last 20 readings of accelerometer be stored in ‘dif’ and let ‘threshdif’ be the threshold difference.
So to detect vibration zone:

If (dif>threshdif)
Vibration zone detected
Else
Normal zone

Once the vibration zone is detected, the robot can perform various manoeuvres to avoid it. It can take a sharp turn or move back. Here, in this DIY, once the vibration zone is detected, the robot will take a turn based on the intensity of light at the LDR sensors and then the robot will move forward. The turning of the robot should continue until the robot has exited the vibration zone.

Code
The code has been written as per the rhino development board used. It has the motordriver’s output connected at PORT C with its enable pins connected toPORTD. Input has been taken atPORTA ->PA0 -PA2 (LDR sensor input) and PA3(Accelerometer input).
In the code, it has been assumed that ADC value is greater at greater light intensity. Note this depends on the connections done in the LDR sensor circuit.

#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
//motor macros for the motor pins
#define zeroleft 0b00010100
#define zeroright 0b00101000
#define right 0b00111000
#define left 0b00011100
#define forward 0b00011000
#define back 0b00100100

int main(void)
{
//setting motordriver ports as output ports
DDRC=255;
DDRD=255;
PORTD=0b00110000; //setting enable pins high
//setting PORTA as Input port
DDRA=0b00000000;
//ADC settings
ADCSRA=0b10000111;
//declaration and initialization
int i,LDRoutput[3],accelero[20], dif, threshdif=400,max,min;
while(1)
{
  //ADC settings
  ADMUX=0b01000000|(1<<ADLAR);

  //ADC values of left, central and right LDR sensor stored in LDRoutput[0], LDRoutput[1], LDRoutput[2] respectively.
  for(i = 0; i < 3; i++,ADMUX++)
  {
   ADCSRA|=(1<<ADSC);
   while((ADCSRA&(1<<ADSC))!=0);
   LDRoutput[i] = ADCH;
  }
 
  //Light following algorithm
  if((LDRoutput[0]>LDRoutput[1])&&(LDRoutput[0]>LDRoutput[2]))
  PORTC=left;
  else if((LDRoutput[2]>LDRoutput[0])&&(LDRoutput[2]>LDRoutput[1]))
  PORTC=right;
  else
  PORTC=forward;
 
  //Vibration detection
  //ADC settings
  ADMUX=0b01000011|(1<<ADLAR); //accelerometer input at pin3 of portA
  ADCSRA=0b10000111;
  min=1024 ;
  max=0;
  //taking 20 Accelerometer readings and finding the difference of maxima and minima followed by its storage in variable 'dif'.
  for(i = 0; i < 20; i++)
  {
   ADCSRA|=(1<<ADSC);
   while((ADCSRA&(1<<ADSC))!=0);
   accelero[i]=ADCH;
   if(accelero[i]>=max)
   {
    max=accelero[i];
   }
   else
   {
    if(accelero[i]<=min)
    min=accelero[i];
   }
  }
  dif=max-min;
  
  //comparing this with the threshold value, of vibration zone, go back and take a turn
  if(dif>threshdif) //true when in Vibration zone
  {
   PORTC=back;
   _delay_ms(500);
   if(LDRoutput[0]>LDRoutput[2]) //True when Left LDR sensor receives more light intensity
   {
    PORTC=zeroleft;
    _delay_ms(500);
   }
   else //This will happen when Right LDR sensor receives more light intensity
   {
    PORTC=zeroright;
    _delay_ms(500);
   }
   PORTC=forward;
   _delay_ms(500);
  }
}
}