LCS Assigment 2
LCS Assigment 2
Sciences
Submitted By
SUBMITTED TO
MA’AM MARYAM IQBAL
Department of Electrical Engineering
The state space equation or transfer function of a line following and obstacle avoidance robot will
depend on the specific design of the robot and its control system. However, here is an example of
a possible state space model for such a system:
Let x1 be the position error between the robot's current position and the desired path, x2 be the
orientation error between the robot's current orientation and the desired orientation, and x3 be the
distance to the nearest obstacle. Let u1 be the linear velocity of the robot, and u2 be the angular
velocity of the robot. Then, the state space equations can be written as:
ẋ3 = -k5x3 + k6
y1 = x1
y2 = x3
where k1 to k6 are positive constants representing the gains of the system, and y1 and y2 are the
outputs of the system representing the position error and distance to the nearest obstacle,
respectively. The input to the system is the linear and angular velocities u1 and u2.
Alternatively, the system can be represented in the frequency domain using transfer functions. The
transfer function model is obtained by taking the Laplace transform of the state space equations,
which yields:
where Y1(s) and Y2(s) are the Laplace transforms of the output signals, U1(s) and U2(s) are the
Laplace transforms of the input signals, and G11(s), G12(s), G21(s), and G22(s) are the transfer
functions of the system.
Department of Electrical Engineering
Code:-
#define servo A5
int Set=15;
int distance_L, distance_F, distance_R;
analogWrite(enA, 200); // Write The Duty Cycle 0 to 255 Enable Pin A for Motor1
Speed
Department of Electrical Engineering
analogWrite(enB, 200); // Write The Duty Cycle 0 to 255 Enable Pin B for Motor2
Speed
pinMode(servo, OUTPUT);
distance_F = Ultrasonic_read();
delay(500);
}
void loop(){
//==============================================
// Line Follower and Obstacle Avoiding
//==============================================
distance_F = Ultrasonic_read();
Serial.print("D F=");Serial.println(distance_F);
//if Right Sensor and Left Sensor are at White color then it will call forword
function
if((digitalRead(R_S) == 0)&&(digitalRead(L_S) == 0)){
if(distance_F > Set){forword();}
else{Check_side();}
}
//if Right Sensor is Black and Left Sensor is White then it will call turn Right
function
else if((digitalRead(R_S) == 1)&&(digitalRead(L_S) == 0)){turnRight();}
//if Right Sensor is White and Left Sensor is Black then it will call turn Left
function
else if((digitalRead(R_S) == 0)&&(digitalRead(L_S) == 1)){turnLeft();}
delay(10);
}
Department of Electrical Engineering
turnLeft();
delay(400);
}
}
void Check_side(){
Department of Electrical Engineering
delay(100);
for (int angle = 70; angle <= 140; angle += 5) {
servoPulse(servo, angle); }
delay(300);
distance_R = Ultrasonic_read();
Serial.print("D R=");Serial.println(distance_R);
delay(100);
for (int angle = 140; angle >= 0; angle -= 5) {
servoPulse(servo, angle); }
delay(500);
distance_L = Ultrasonic_read();
Serial.print("D L=");Serial.println(distance_L);
delay(100);
for (int angle = 0; angle <= 70; angle += 5) {
servoPulse(servo, angle); }
delay(300);
compareDistance();
}
Output: -
Department of Electrical Engineering