ENG5009 Advanced Control 5 Assignment
Introduction
This assignment is presented as a challenge within control engineering.
The first part of the assignment are the answers you obtained from the lab sheets provided. The results from the lab sheets are to be included as an appendix to the final hand in.
The second part of the assignment is to follow the steps below and capture the required data.
The final stage of the assignment is to create a controller based on either fuzzy logic, a Neural network or a combination of both, or any other suitable controller that can be justified, that is able to guide a robot to a particular point (within 0.05m radius of the point) while avoiding obstacles.
The method you use is to be presented in a report with results presented and discussed. The report should cover a short description of the controller, the relevant input/outputs stages, the test procedure you carried out (with justification of the test cases used) and provide the results. Improvements to the system developed should also be included.
The report should be a MAXIMUM of 10 pages (not including appendices).
A guide to the marking of the report is available on Moodle.
Provided Resources
All resources that have been used in the labs to date will be available. You are also free to use the Fuzzy Logic Toolbox, as long as justification of the methods used is made.
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 the x(19) and x(20) states.
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 code to work out the required heading.
function [at_waypoint, desired_psi] = los_auto(cur_x,cur_y,desired_pt) % set waypoint
waypoint = desired_pt;
% check to see if in acceptance radius
cur_radius = sqrt(((cur_x-waypoint(1))^2)+((cur_y-waypoint(2))^2));
if (cur_radius < 0.1),
at_waypoint = 1;
else
at_waypoint = 0;
end;
% Calculate heading
psi_cal=atan2((waypoint(2)-cur_y),(waypoint(1)-cur_x));
if isnan(psi_cal),
if (waypoint(2)-cur_y)>=0,
desired_psi = pi/2;
else
desired_psi = -pi/2;
end;
else
desired_psi = psi_cal;
end;
Once implemented provide a plot showing the robot driving to the following points (with no obstacles) ((x,y)): (0 3), (1 2), (-1 4), (-1 -2), (-0.2 2)
Task 2
Develop a controller that is able to drive a robot along a path, while avoiding the obstacles: (-1 -1) (-1 -4) (3 -1) (0 1) (-2 -1)
A map of the area is provided below with the start point marked in blue (x = -2m y = -1m).