You are on page 1of 12

LANE-FOLLOWING ROBOT USING ARDUINO

J-COMPONENT PROJECT REPORT

ECE -2008: ROBOTICS AND AUTOMATION

BY

ISHAAN JAIN- 16BEC0048


RAHUL RATHNAM- 16BEC0089
SANKET KUMAR NAYAK- 16BEC0106
MILLIND AGARWAL-16BEC0850

1
Declaration by Authors

This is to declare that this report has been written by us. No part of the report is plagiarized
from other sources. All information included from other sources have been duly
acknowledged. We aver that if any part of the report is found to be plagiarized, we are shall
take full responsibility for it.

ISHAAN JAIN- 16BEC0048

RAHUL RATHNAM- 16BEC0089

SANKET KUMAR NAYAK- 16BEC0106

MILLIND AGARWAL-16BEC0850

Place: VIT Vellore

Date: 05/04/2019

2
ABSTRACT

Robotics is the driving force in the world’s best industries today. Automobile production,
manufacturing businesses and other prominent fields couldn’t have taken lead if not for the
involvement of intelligent and reprogrammable robots that achieve high levels of accuracy and
precision that human beings could not achieve with their bare hands. Material handling is a
major part of manufacturing industries, and automating this job makes supply chains more
efficient. The lane-following robot is a prototype that demonstrates the capabilities of such a
robot.

3
TABLE OF CONTENTS

CHAPTER NO. TITLE PAGE NO.

ABSTRACT iii
NOMENCLATURE ii
CONTENTS i

1. Introduction……………………………………………………………….. 1
2. Approach Used…………………………………………………………….. 2
3. Methodology……………………………………………………………….. 3
4. Experiment Results………………………………………………………... 4
5. Conclusions………………………………………………………………… 5
6. References………………………………………………………………….. 6

4
INTRODUCTION

A lane-following robot is most prominently used in supply chains where material handling is
required in manufacturing industries. However, that is not the only application in which it can
be used. Besides the variety of industrial environments, it can also be used for guided driving in
automobiles. Integration of the algorithms presented in this paper would help prevent accidents
on the road, and save many lives, for a car accident is the most likely way of dying in the
modern world. Lane detection can be used to design an AGV (Autonomous Guided Vehicle) or
simply integrate it as a safety feature of the automobile.

1
APPROACH USED

For the project, we decided to use the following components for the reasons as described:
Arduino: an open-source computer hardware and software company, project and user community
that designs and manufactures microcontroller-based kits for building digital devices and
interactive objects that can sense and control objects in the physical world. It is a very flexible
microprocessor so it was used for the project.
IR Sensor: An infrared sensor (IR sensor) is an electronic sensor that measures infrared (IR) light
radiating from objects in its field of view. It was used as a way of detecting the black line for the
path to be followed.
Motors: The motors rotate clockwise an anti-clockwise based on the program. In the motor
electrical energy is converted into mechanical energy.

The concept of the working of line follower is related to light. We use here the behaviour of light
at black and white surface. When light fall on a white surface it is almost full reflected and in
case of black surface light is completely absorbed. This behaviour of light is used in building a
line follower robot. In this Arduino based line follower robot we have used IR Transmitters and
IR receivers also called photo diodes. They are used for sending and receiving light. IR transmits
infrared lights. When infrared rays fall on white surface, it’s reflected back and catches by
photodiodes which generates some voltage changes. When IR light falls on a black surface, light
is absorb by the black surface and no rays are reflected back, thus photo diode does not receive
any light or rays.

2
METHODOLOGY

The IR sensor detects the light emitted by the transmitter, if the receiver receives light, the wheel
of that side will keep on moving as soon as the receiver stops receiving the light (black colour
absorbs the light and thus no light is reflected so the receiver cannot receive any light), the wheel
of that side will stop. For turning, the robot stops one motor and runs the second to make the turn
possible. For example, if the robot has to turn right then the motor on the right side will stop and
the left motor will keep on running, thus allowing it to turn, and vice-versa.

3
EXPERIMENT RESULTS

Applications:
This lane-following robot can have various functions in many fields. The most obvious
application is to use it to carry equipment across large distances in industries. Similarly, it can be
used to deliver mail through an office, or medications to patients in hospitals. Some other
applications can be automated cars which would follow a set path, such as tour cars in a
museum.

Advantages
The lane-following robot has quite a few advantages that warrant its use. A major one is the fact
that it is insensitive to environment factors like noise and lightning, so it can work in various
surroundings. The hardware can also be modified according to the need, ranging from fast
travelling ones to robots which can take various degrees of turns.

Disadvantages
Conversely, the lane-following robot also has some disadvantages in that it can only follow a
fixed path; its speed control is lacking, the need of a power supply and the fact that the choice of
line is dependent on the hardware and not software.

4
CONCLUSIONS

In conclusion, the designed robot was able to perform tasks as a lane following robot, and
follows the line that we assign it. As discussed, the components used fulfilled their described
roles, and the robot can be used for applications such as carrying equipment with very simple
modifications.

5
REFERENCES

1. Transportation: Motor Vehicle Accidents and Fatalities [Online]. Available:


http://www.census.gov/compendia/statab/cats/transportation/motor_vehicle_accidents_an
d_fatalit ies.html

2. Bakar, M. N. A., Nagarajan, R., & Saad, A. R. M. (2011, April). Development of a


doctor following mobile robot with mono-vision based marker detection. In Applied
power electronics colloquium (IAPEC), 2011 IEEE (pp. 86-91). IEEE.

3. Duan, D., Xie, M., Mo, Q., Han, Z., & Wan, Y. (2010, October). An improved Hough
transform for line detection. In 2010 International Conference on Computer Application
and System Modeling (ICCASM 2010) (Vol. 2, pp. V2-354). IEEE.

4. Mohamed Aly “Real time Detection of Lane Markers in Urban Streets”, Computational
Vision,
Lab Electrical Engineering California Institute of Technology, Pasadena, CA 91125

6
APPENDIX

Arduino Code:

#define RS1 A0 // left sensor


#define LS2 A2
#define LS1 A1
#define RS2 A3

/*-------definning Outputs------*/
#define LM1 8 // left motor
#define LM2 9 // left motor
#define RM1 12 // right motor
#define RM2 10 // right motor
int turn_speed = 250;
void setup()
{
pinMode(LS1, INPUT);
pinMode(RS1, INPUT);
pinMode(LS2, INPUT);
pinMode(RS2, INPUT);
pinMode(LM1, OUTPUT);
pinMode(LM2, OUTPUT);
pinMode(RM1, OUTPUT);
pinMode(RM2, OUTPUT);
Serial.begin(9600);
}

void loop()
{Serial.print(digitalRead(RS1));
if(digitalRead(LS1)==0&&digitalRead(RS1)==0) // Move Forward
{
digitalWrite(LM1, LOW);

digitalWrite(RM1, LOW);
analogWrite (LM2, turn_speed);
analogWrite (RM2, turn_speed);

if(digitalRead(RS1)==1 || digitalRead(RS2)==1 ) // Turn right


{
digitalWrite(LM1, HIGH);

digitalWrite(RM1, LOW);
analogWrite (LM2, turn_speed);
analogWrite (RM2, turn_speed);

7
}

if(digitalRead(LS1)==1 || digitalRead(LS2)==1 ) // turn left


{
digitalWrite(LM1, LOW);

digitalWrite(RM1, HIGH);
analogWrite (LM2, turn_speed);
analogWrite (RM2, turn_speed);

}
if(digitalRead(LS1)==1&&digitalRead(RS1)==1) // Move Forward
{
digitalWrite(LM1, HIGH);

digitalWrite(RM1, LOW);
analogWrite (LM2, turn_speed);
analogWrite (RM2, turn_speed);

}
/* if((digitalRead(LS1)==0) && (digitalRead(RS1)==0)&&digitalRead(LS2)==0
&&digitalRead(RS2)==0 ) // stop
{
digitalWrite(LM1, HIGH);

digitalWrite(RM1, LOW);
analogWrite (LM2, turn_speed);
analogWrite (RM2, turn_speed);

}*/
if((digitalRead(LS1)==1) && (digitalRead(RS1)==1)&&digitalRead(LS2)==1
&&digitalRead(RS2)==1 ) // stop
{
digitalWrite(LM1, LOW);

digitalWrite(RM1, LOW);
analogWrite (LM2, 0);
analogWrite (RM2, 0);
}
}

You might also like