Laboratory 4 - Fuzzy rule-based navigation (assigned on Sep 30)

Objective

Implement and test a fuzzy rule-based controller

Steps

  1. Implement the fuzzy "GoTo" rule-based controller, and test it with different start and goal positions.

  2. Tune the parameters used to set the FPreds until you obtain a good behavior.

  3. Implement the fuzzy "AvoidObstacles" rule-based controller, and test it with different configurations of obstacles and with obstacles
    of different colors.

  4. Tune the values of the two Thresholds and of the parameters used to set the FPreds until you obtain a good behavior.

Optional parts

  1. Try to modify the rules in the GoTo behavior: Can you find a simpler set of rules? Can you find a set of rules that behaves better? Explain your findings, in either case.

  2. Try to modify the rules in the AvoidObstacles behavior: Can you find a simpler set of rules? Can you find a set of rules that behaves better? Explain your findings, in either case.

  3. Implement a FollowObstacle behavior, and test it.

  4. Invent and implement another type of behavior (e.g.: follow the perimeter, go between two opposite corners, approach a light source, dock to a given position and angle, ...)

  5. Implement an integrated controller to go to a goal point and avoid obstacles at the same time, by combining the two fuzzy rule-based controllers above.

Report due: Oct 10

Include (only) your code, with comments.

Discuss how the testing has been done, tell how the robot behaved with obstacles of different colors and shape, and show the trajectory of the robot in a few sample runs. Try to use some graphical tool (eg, Matlab or gnuplot) to plot the trajectory.

Discuss how the tuning have been done, and show the trajectory of the robot in a case with good tuning and in a case with bad tuning. Explain what was bad in the bad tuning.

If you did optional tasks 5 or 6, discuss how you have changed the rules and why.

If you did optional tasks 11 (or beyond) in Lab 3, discuss if and how you have found the crisp controller different from the fuzzy one. Is the behavior of the robot different? Is tuning of the parameters easier or more difficult?

If you did optional tasks 7 or 8, discuss all the above points for the additional behavior(s) as well.