Вы находитесь на странице: 1из 6

REPORT ON LFR USING PID

BY DHRUV PAUL
2ND YEAR ,CONTROL SYSTEMS DEPT.
AUV DTU
INTRODUCTION
This report details the process of building a line following robot. The robot can follow
black lines. It uses a sensor array to sense the line and a PID control to follow the line.
With the help of a PID control the robot does not follow the line by oscillating to the left
and to the right like conventional line followers but follows the line smoothly without
wavering too much the left and right, conserving battery power while at the same time
following the line much more faster.
Algorithm
The algorithm is the one thing that determines the performance of your robot more than anything else. The most
basic algorithm I know is the one which uses only one sensor. The sensor is placed in a position that is a little
off centered to one of the sides, say right. When the sensor is detects no line the robot moves to the left and
when the sensor detects the line the robot moves to the right. A robot with this algorithm would follow the line
like shown in the picture on next page.
The drawback of this method is that the line following is not smooth. The robot keeps wavering left and right on
the track, wasting battery power and time. A modification to this method is to add sensors on both sides of the
robot and place them such that they just sense the line on either side. And the algorithm would be to move
forward if both the sensors sense the line or to move left if only the left sensor senses the line and move right if
only the right sensor senses the line. A robot with this algorithm would follow the line like shown in the picture
on next page.
This algorithm is faster than the previous algorithm but the robot will still wobble about the line and may not be
fast enough.
A much better algorithm is to use the PID to follow the line. This will make line following process much more
smoother, faster and efficient.

WHAT IS PID ?
PID stands for Proportional Integral and Derivative. It is a popular control loop feedback control extensively
used in industrial controls systems. But why would one need a PID controller for a line following robot, when
there are many simpler algorithms already available for line following. Lets us see...
A conventional robot would follow a line as shown below(red line shows the path taken by the robot)

As it can be seen clearly in the picture the robot oscillates a lot about the line, wasting valuable time and
battery power. It is now realized that there is a maximum speed beyond which you cannot use this algorithm,
other wise the robot will overshoot the line.

A robot with PID control will follow the line as shown below

As you can see clearly the robot will follow the line smoothly keeping its centre always above the line. In
straight lines, the robot will gradually stabiles go straight unlike a robot with the left-right algorithm. This
enables the robot to follow the line faster and more efficiently.
Before I tell you how to implement a PID algorithm for a line following robot, let me tell you the terms
associated with it
Target It is the position you want the line follower to always be(or try to be),that is, the center of the robot.
Current Position It is the current position of the robot with respect to the line.
Error - It is the difference between the current position and the target. It can be negative, positive or zero.
Proportional It tells us how far the robot is from the line like to the right , to the extreme right, to the left or
a little to the left. Proportional is the fundamental term used to calculate the other two.
Integral It gives the accumulated error over time. It tells us if the robot has been on the line in the last few
moments or not.
Derivative It is the rate at which the robot oscillates to the left and right about the line.

Kp, Ki and Kd are the constants used to vary the effect of Proportional, Integral and Derivative terms
respectively.

What the controller does is first calculate the current position. Then calculate the error based on the current
position. It will then command the motors to take a hard turn, if the error is high or a small turn if the error is
low. Basically, the magnitude of the turn taken will be proportional to the error. This is a result of the
Proportional control. Even after this, if the error does not decrease or decreases slowly, the controller will then
increase the magnitude of the turn further and further over time till the robot centers over the line. This is a
result of the Integral control. In the process of centering over the line the robot may overshoot the target
position and move to the other side of the line where the above process is followed again. Thus the robot may
keep oscillating about the line in order to center over the line. To reduce the oscillating effect over time the
Derivative control is used.

Implementing PID control for a line following robot

The first requirement in implementing PID for a line follower is calculating the error of the robot. To calculate
the error we will need to know the current position of the robot with respect to the line. There are a number of
ways of knowing this.
A simple approach would be to place two IR sensors on either side of the line. The IR sensors should be tuned
to give an output voltage that is promotional to the distance between the line and the sensor. The output can then
be connected to the ADC pin of a microcontroller and the error can be calculated.
Though this method may seem simple and easy to implement it has a few drawbacks. Firstly, a robot using this
method will have problems following a line whose width is varying. Secondly, the output of these sensors will
be highly susceptible to interference from external light. And lastly, for this method to work, you have to ensure
that the track is completely flat. Any change in the distance between the sensor and the surface will affect the
sensor readings.
A better approach would be to use the traditional sensor array. Using an array of sensors, you can easily
calculate the error by knowing which sensor is on the line. Consider you have an array of 10 sensors each
placed 1cm apart. When the 7th sensor from the left detects the line you can be sure that the centre of the robot is
2 cm to the right of the line. Using a sensor array the processor can calculate the error faster as there is no ADC
required to be done and thus you can increase the sampling rate. You can also use the robot as a grid solver.
The next important thing in implementing PID after the sensors is the writing the code itself. The algorithm for
a PID control for line followers would be something like this

Error = target_pos current_pos


P = Error * Kp

//calculate error

//error times proportional constant gives P

I = I + Error

//integral stores the accumulated error

I = I * Ki

//calculates the integral value

D = Error Previos_error

//stores change in error to derivate

Correction = P + I + D

The next step is to add this correction term to the left and right motor speed.
While calculating the derivative, the change in error can be divided by the time taken to get the rate of change
of error, but I have skipped this step in my robot, because each loop takes almost the same time to execute.

Tuning the PID control


This is the most interesting part in building a PID control. In this step one should tune the Kp, Ki and Kd
values to get the best results. the values because what works for one developer may not work for the other. The
optimum Kp, Ki and Kd values vary a lot from robot to robot. And the best way to determine the optimum
values is by trial and error.
First, set all values to 0 and start with tuning the Kp value. First time I just gave an approximate value. Seeing
the robot perform will determine what you should do next. If the robot wobbles a lot reduce the Kp value, if the
doesn't follow the line (goes straight in curves) increase the Kp value. Tune the Kp value till the robot smoothly
follows the line. By now you will have observed that the robot goes with no acceleration on straight lines. Now,
tune the Kd term. After tuning the Kd term move to the Ki term. After which, you will see the robot first center
over a straight line and then accelerate also.
Note: The optimum Kp, Ki and Kd values vary a lot even from track to track. You can only know these
optimum values by testing.

Вам также может понравиться