Fill This Form To Receive Instant Help
Homework answers / question archive / ENG5009 Design a matlab robot with fuzzy controller
ENG5009 Design a matlab robot with fuzzy controller. Describe entire design process and testing of robot to see if it works
Introduction
This assignment is presented as a challenge within control engineering and is split into three parts:
The second part is to carry out Task 1 as described below
The third part of the assignment is to create a controller that is able to guide a robot through a series of points (Provided in Task 2) (within 0.05m radius of the point) while avoiding obstacles
The method you use to control the robot is to be presented in a report. Results should be presented and discussed. The report should provides a short description of the controller, the relevant input/output stages, and show the path that the robot followed. A description of the testing undertaken should also be presented. Improvements to the system developed could also be mentioned.
The report should be a MAXIMUM of 10 pages (not including appendices).
A guide to the marking of the report is provided.
Provided Resources
All resources that have been used in the labs to date will be available. You are free to use the Fuzzy
Logic Toolbox.
Task 1
Develop a controller that is able to drive the robot to a selected point. The position of the robot can be
assumed to be accurately know via state(19) and state(20).
The first stage of developing this controller is to establish the direction that the robot is required to drive
in. To achieve this you can use the following function to work out the required heading:
[booleanAtCheckpoint, newHeadingAngle] =
ComputeHeadingAngle( currentLocation, checkpoint, tolerance)
in which:
currentLocation – the current coordinates of the robot, you can use state(timeStep,19:20)
checkpoint – the coordinates of the checkpoint the robot is aiming for now
tolerance – if the robot is within an x meter radius of the target it is considered at the waypoint (use x
= 0.05)
booleanAtCheckpoint – returns 1 if the robot reached the checkpoint and 0 if not
newHeadingAngle – the heading angle to move towards the given checkpoint
Once implemented, provide a plot showing the robot driving through the following series of points (with
no obstacles) provided in Table 1.
Table 1: Points to travel through
Point Origin 1 2 3 4 5
X 0 1 3 -1 -3 0
Y 0 1 -1 -1 2 4
Task 2
Develop a controller that is able to drive a robot through a series of points (provided in Table 2) while
avoiding obstacles.
Table 2: Points to travel through
Point Origin 1 2 3 4 5 End
X 0 1.5 -1 -4 -1 4 0
Y 0 4.5 2 -1 -4 0 0
A map of the area is provided as Figure 1 below.
Figure 1 – Map to navigate through
This map can be generated by using the following code to generate the map.
% outside walls
[wall_1, obstacleMatrix] = WallGeneration( -5, 5, 5, 5, 'h', obstacleMatrix);
[wall_2, obstacleMatrix] = WallGeneration( -5, -5, -5, 5, 'h', obstacleMatrix);
[wall_3, obstacleMatrix] = WallGeneration( -5, -5, -5, 5, 'v', obstacleMatrix);
[wall_4, obstacleMatrix] = WallGeneration( 5, 5, -5, 5, 'v', obstacleMatrix);
% Obstacles
[wall_5, obstacleMatrix] = WallGeneration( -2.5, 2.5, 2.5, 2.5, 'h', obstacleMatrix);
[wall_6, obstacleMatrix] = WallGeneration( -3, -3, -3, 0.5, 'v', obstacleMatrix);
[wall_7, obstacleMatrix] = WallGeneration( 1, 1, 0, 0, 'h', obstacleMatrix);
[wall_8, obstacleMatrix] = WallGeneration( 1, 1, -2, 0, 'v',
obstacleMatrix); figure(1); clf; hold on; grid on; axis([-5.5,5.5,-
5.5,5.5]);
plot(wall_1(:,1), wall_1(:,2),'k-');
plot(wall_2(:,1), wall_2(:,2),'k-');
plot(wall_3(:,1), wall_3(:,2),'k-');
plot(wall_4(:,1), wall_4(:,2),'k-');
plot(wall_5(:,1), wall_5(:,2),'k-');
plot(wall_6(:,1), wall_6(:,2),'k-');
plot(wall_7(:,1), wall_7(:,2),'k-');
plot(wall_8(:,1), wall_8(:,2),'k-');
xlabel('y, m'); ylabel('x, m');