Download - Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand
![Page 1: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/1.jpg)
Robot Navigation
Napoleon Reyes, Ph.D.
Computer Science, Massey University, Auckland, New Zealand
![Page 2: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/2.jpg)
Topics for DiscussionFuzzy Logic Theory
Fuzzy Inference System
Hand-simulation of the FIS
Robot Navigation: problem definition, geometry & trigonometry of the problem
Simulation System
Assignment
![Page 3: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/3.jpg)
Topics
• Fuzzy Logic Theory Review
• Fuzzy Logic Engine• How to compile• Structure of the program• Angle Calculation – Dot
Product• Graphics Engine• World to Device
transformation
• Alternative Fuzzy System design for robot navigation
![Page 4: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/4.jpg)
Robot Soccer
![Page 5: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/5.jpg)
Robot Soccer Set-up
Colour objects
Fluorescent lampsOverhead Camera
Exploratory environment is indoor – room totally obstructed from sunlight
Multiple monochromatic light sources – fluorescent / fluoride lamps
Colour Object Recognition (Recognition speed: < 33ms)*
![Page 6: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/6.jpg)
![Page 7: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/7.jpg)
![Page 8: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/8.jpg)
![Page 9: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/9.jpg)
Research Areas: NavigationTarget Pursuit and Obstacle Avoidance
Calculation of Optimal path
Team cooperation among agents
Robot Behaviours: ball dribbling, ball passing, shooting from a stationary position
Intelligent Coach: Role Allocation, Role switching
Motor Control: take into account coefficient of friction, noise, delay in the communication module
![Page 10: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/10.jpg)
Research Areas: Navigation
How to steer the robots automatically and smoothly
How to adjust the speed of the robot depending on the distance of the target, angle from the target, speed and direction of the target
How to discretise the exploration space to allow for A* to work? – fixed grid size, Voronio graphs
How to calibrate the navigation rules and fuzzy sets automatically?
![Page 11: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/11.jpg)
Research Areas: Machine Vision
Colour Classification: Compensate for the effects due to changing illumination intensities
Colour Object Recognition: Shape, combination of colours, size
Colour Segmentation (also called labelling) + edge detection
Multiple camera colour object recognition
![Page 12: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/12.jpg)
Basic Navigation
![Page 13: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/13.jpg)
*
How does the robot follow the ball?
Direction
(Xr, Yr)
(Xc, Yc)
(0,0) Origin
![Page 14: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/14.jpg)
*
How does the robot follow the ball?
x
y
Direction
θθ'
(Xt, Yt)
(Xr, Yr)
(Xc, Yc)
(0,0) Origin
Calculate angle from the ballCalculate distance from the ballCalculate optimum speed to reach the ball
Calculate the steering angle to reach the ballMove the robot
Loop(we need to do this every few milliseconds)
![Page 15: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/15.jpg)
*
Angle of the ball relative to the heading angle of the robot.
Direction
θ (Xr, Yr)
(Xc, Yc)
(0,0) Origin We are interested in finding the minimum turn to follow the ball.
![Page 16: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/16.jpg)
*
Angle of the ball relative to the heading angle of the robot.
Direction
θ (Xr, Yr)
(Xc, Yc)
(0,0) Origin
θ'
![Page 17: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/17.jpg)
*
Catching the ball is different from just following the ball.
Direction
(Xr, Yr)
(Xc, Yc)
(0,0) Origin
Home goal
You will have to take into account
the position of your home goal.
![Page 18: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/18.jpg)
World Coordinates System to
Device Coordinates System Transformation
![Page 19: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/19.jpg)
19
Transformation EquationsWORLD-to-DEVICE COORDINATES
159.302
1920 x 1080 pixels
100,000,000 miles x 500,000 miles
World System of Coordinates Device System of Coordinates
+x
+y
+x
+y0
0
(Xworld,Yworld)(XDevice,YDevice)
We are accustomed to representing objects in terms of their World coordinates.
![Page 20: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/20.jpg)
• Our Physics and Math equations all work in the World System of Coordinates, but our computer screen is using something different (Device System of Coordinates).
• It is more intuitive to use the World System of Coordinates in the formulation of our Fuzzy Control Systems.
• Transformation equations allow for easy scaling (zoom-in/zoom-out) of objects in the scene.
1920 x 1080 pixels100,000,000 miles x 500,000 miles
+x
+y
+x
+y0
0
(Xworld,Yworld)(XDevice,YDevice)
WORLD SYSTEM OF COORDINATES DEVICE SYSTEM OF COORDINATES
![Page 21: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/21.jpg)
21
Boundaries of the Coordinate SystemsSETTING THE BOUNDARIES
159.302
Use the upper-left and bottom-right coordinates to set the boundaries
+x
+y
+x
+y0
0
(Xworld,Yworld)(XDevice,YDevice)
Top-left: (x1, y1)Bottom-right: (x2, y2)
World System of Coordinates Device System of Coordinates
(X1,y1)
(X1,y1)
(X2,y2) (X2,y2)
![Page 22: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/22.jpg)
22
Transformation 159.302
Task: Given a pair of x & y-world coordinates, find the equivalent x & y-device coordinates.
+x
+y
+x
+y0
0
(Xworld,Yworld)(XDevice,YDevice)
World System of Coordinates Device System of Coordinates
(X1,y1)
(X1,y1)
(X2,y2) (X2,y2)
![Page 23: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/23.jpg)
23
World-to-Device Coordinates
TRANSFORMATION EQUATIONS
159.302
12
12
XX
XX
WorldBoundWorldBound
dDeviceBoundDeviceBounXslope
11*tx_intercep XX WorldBoundXslopedDeviceBoun
tx_intercepWorld* XX XslopeDevice
world X-coordinate
For calculating Devicey, replace all x’s with y
![Page 24: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/24.jpg)
Path-Finding With the A* Algorithm
*
S
![Page 25: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/25.jpg)
*
S
Complementary Path Finding Systems
The Hybrid Fuzzy A* Navigation Algorithm
![Page 26: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/26.jpg)
Fuzzy Logic Theory
![Page 27: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/27.jpg)
Fuzzy Inference Process
Fuzzification Rule Evaluation Defuzzification
e.g. theta e.g. force
Fuzzification: Translate input into truth valuesRule Evaluation: Compute output truth valuesDefuzzification: Transfer truth values into output
![Page 28: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/28.jpg)
Fuzzy Rule
If (Distance is NEAR) and (obstacle is at the right hand side) and (Angle is SMALL)
But how can we define NEAR or Small
or Turn Sharp Left numerically?
Some solutions to a problem could be described linguistically but only very vaguely.
obstacle
(obsx, obsy)
(x,y)
Then Turn Sharp Left.
OBSTACLE AVOIDANCE
![Page 29: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/29.jpg)
Fuzzy Rule
If (Distance is NEAR) …
NEAR: [0, 10.6cm]FAR: (10.6, 20cm]VERY FAR: (20cm, 50cm]
obstacle
(obsx, obsy)
(x,y)
OBSTACLE AVOIDANCE
NEAR FAR VERY FAR
Typically we would subdivide the space discreetly.
![Page 30: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/30.jpg)
Fuzzy Rule
If (Distance is NEAR) …
Fuzzy Logic allows (actually encourages) us to define overlapping sub ranges.
obstacle
(obsx, obsy)
(x,y)
OBSTACLE AVOIDANCE
NEAR FAR VERY FAR
NEAR: [-infinity, 14.5cm]FAR: [10.6, 24cm]VERY FAR: [20cm, +infinity]
It provides all the mathematical functions to quantify our terms and use them in our rules.
FUZZY SETS
![Page 31: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/31.jpg)
Fuzzy Rule
If Distance is NEAR and Angle is SMALL Then Turn Sharply.
obstacle
(obsx, obsy)
(x,y)
OBSTACLE AVOIDANCE
We could actually take advantage of symmetry and consider only half of the angle space.
Fuzzy Systemdistance
angle
Robot heading direction
Steering angle
Relative position of the ball
(left or right)
θ
θ
![Page 32: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/32.jpg)
Fuzzy Rule
FNEAR(Distance) = degree of membership of the given distance in the Fuzzy Set NEAR
If Distance is NEAR and Angle is SMALL Then Turn Sharp Left.
FSMALL(Angle) = degree of membership of the given angle in the Fuzzy Set SMALL
Could be a constant or another MF
![Page 33: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/33.jpg)
Fuzzy Logic System Design for Robot
Navigation
![Page 34: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/34.jpg)
Cascade of Fuzzy Systems
Adjusted Speed
Adjusted Angle
Angle and Distance
N
Y
Adjusted Speed
Adjusted Angle
Fuzzy System 1: Target PursuitFuzzy System 1: Target Pursuit
Fuzzy System 2: Speed Control for Target Pursuit
Fuzzy System 3: Obstacle Avoidance
Fuzzy System 4: Speed Control for Obstacle Avoidance
ObstacleDistance < MaxDistanceTolerance
and not on the same side as the Target
Actuators
Position of the Target and Nearest Obstacle
Multiple Fuzzy Systems employ the various robot behaviours
Fuzzy System 1Fuzzy System 1
Fuzzy System 2Fuzzy System 2
Fuzzy System 3Fuzzy System 3
Fuzzy System 4Fuzzy System 4
CentralControl
Target Pursuit
ObstacleAvoidance
Target & Nearest Obstacle (x,y coordinates)Target & Nearest Obstacle (x,y coordinates)
![Page 35: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/35.jpg)
Target Pursuit and Obstacle Avoidance
obstacle
(obsx, obsy)
(x,y)
Can you describe how the robot should turn based on the position
and angle of the obstacle?
Robot Navigation
Demonstration
Obstacle Avoidance & Target Pursuit
![Page 36: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/36.jpg)
Fuzzy Sets
Angles
Sub ranges for Small, Medium and Large Angles overlap
SMALL
MEDIUM
LARGE
*
Small Medium Large
Deg
ree
of m
embe
rshi
p
Angle in degrees
Membership Functions
![Page 37: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/37.jpg)
Taking advantage of Angle Symmetry
Fuzzy Sets for Angles
The approach developed takes advantage of the Angle symmetry, and is equivalent to having 6 Fuzzy Sets for the Angles.
*
SMALL
MEDIUM
LARGE
SMALL
MEDIUM
LARGE
Left Right
A simplified approach that reduces the computational cost without sacrificing accuracy.
![Page 38: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/38.jpg)
Fuzzy Sets
Distances
Sub ranges for Near, Far and Very Far Fuzzy Sets for Distances overlap*
Deg
ree
of m
embe
rshi
p
Distances in cm.
Membership Functions
Near Far Very Far
NEAR
FAR
VERY FAR
![Page 39: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/39.jpg)
Fuzzy Systems for Target Pursuit
NEAR FAR VERY FAR
SMALL Mild Turn Mild Turn Zero Turn
MEDIUM Med Turn Mild Turn Mild Turn
LARGE Sharp Turn Med Turn Med Turn
Next Waypoint
The A* AlgorithmThe A* Algorithm
NEAR FAR VERY FAR
SMALL Med Speed Fast Speed Very Fast
MEDIUM Slow Speed Med Speed Fast Speed
LARGE Very Slow Slow Speed Slow Speed
e.g. If the Distance from the Target is NEAR and the Angle from the Target is SMALL Then the robot should make a Mild Turn.
e.g. If the Distance from the Target is NEAR and the Angle from the Target is SMALL Then the robot should make a Mild Turn.
Fuzzy System 1 (Steering)
Fuzzy System 2 (Speed Adjustment)
e.g. If the Distance from the Target is NEAR and the Angle from the Target is SMALL Then the robot should move at a Medium Speed.
e.g. If the Distance from the Target is NEAR and the Angle from the Target is SMALL Then the robot should move at a Medium Speed.
Angle
Speed
![Page 40: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/40.jpg)
Fuzzy Systems for Obstacle Avoidance
NEAR FAR VERY FAR
SMALL Very Sharp Sharp Turn Med Turn
MEDIUM Sharp Turn Med Turn Mild Turn
LARGE Med Turn Mild Turn Zero Turn
Nearest Obstacle (Distance and Angle)
NEAR FAR VERY FAR
SMALL Very Slow Slow Speed Fast Fast
MEDIUM Slow Speed Fast Speed Very Fast
LARGE Fast Speed Very Fast Top Speed
e.g. If the Distance from the Obstacle is NEAR and the Angle from the Obstacle is SMALL Then turn Very Sharp.
e.g. If the Distance from the Obstacle is NEAR and the Angle from the Obstacle is SMALL Then turn Very Sharp.
Fuzzy System 3 (Steering)
Fuzzy System 4 (Speed Adjustment)
e.g. If the Distance from the Obstacle is NEAR and the Angle from the Obstacle is SMALL Then move Very Slowly.
e.g. If the Distance from the Obstacle is NEAR and the Angle from the Obstacle is SMALL Then move Very Slowly.
Vision SystemVision System
Angle
Speed
![Page 41: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/41.jpg)
ADVANTAGES
*
In the robot soccer game, there are 11 robots to control at the most.
SPEED
We are able to demonstrate that our algorithm can control more than 30 robots at twice the required speed of calculation.
![Page 42: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/42.jpg)
Robot NavigationSimulation
ASSIGNMENT
![Page 43: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/43.jpg)
Start-up Codes
Let’s have a look at the Start-up Codes and a Sample Solution.
Inspect the files provided, the classes defined, how to use them, etc.
![Page 44: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/44.jpg)
Path-Finding With the A* Algorithm
*
S
![Page 45: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/45.jpg)
*
S
Complementary Path Finding Systems
The Hybrid Fuzzy A* Navigation Algorithm
![Page 46: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/46.jpg)
Cascade of Fuzzy Systems
Adjusted Speed
Adjusted Angle
Next Waypoint
N
Y
Adjusted Speed
Adjusted Angle
Fuzzy System 1: Target PursuitFuzzy System 1: Target Pursuit
Fuzzy System 2: Speed Control for Target Pursuit
Fuzzy System 3: Obstacle Avoidance
Fuzzy System 4: Speed Control for Obstacle Avoidance
ObstacleDistance < MaxDistanceTolerance
and not on the same side as the Target
Actuators
Path planning Layer:
The A* Algorithm
Multiple Fuzzy Systems employ the various robot behaviours
Fuzzy System 1Fuzzy System 1
Fuzzy System 2Fuzzy System 2
Fuzzy System 3Fuzzy System 3
Fuzzy System 4Fuzzy System 4
Path Planning LayerPath Planning Layer
CentralControl
Target Pursuit
ObstacleAvoidance
![Page 47: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/47.jpg)
Traditional approach
Assignment
![Page 48: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/48.jpg)
Assignment
Use this traditional approach in developing the Fuzzy Systems for the
assignment.
7 Fuzzy Sets for the input Angle
ZE – ZeroNS – Negatively SmallNM-Negatively MediumNL – Negatively LargePS – Positively SmallPM-Positively MediumPL – Positively Large
(x,y)
ZE PSNSPMNM
PLNL
![Page 49: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/49.jpg)
(x,y)
ZE PSNSPMNM
PLNL
ZE – ZeroNS – Negatively SmallNM-Negatively MediumNL – Negatively LargePS – Positively SmallPM-Positively MediumPL – Positively Large
Assignment7 Fuzzy Sets for the input Angle, 3 Fuzzy Sets for the input Distance
NL NM NS PS PM PLZE
+∞-∞ 0
ANGLE
FAR VERY FAR
//
+∞-∞ 0
DISTANCE
NEAR
![Page 50: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/50.jpg)
NEAR FAR VERY_FAR
NL
NM
NS Mild Left
ZE
PS Mild Right
PM
PL
(x,y)
ZE PSNSPMNM
PLNL
ZE – ZeroNS – Negatively SmallNM-Negatively MediumNL – Negatively LargePS – Positively SmallPM-Positively MediumPL – Positively Large
TARGET PURSUITFuzzy Logic System #1 - for Calculating the STEERING ANGLE
Distance
Angl
e
![Page 51: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/51.jpg)
NEAR FAR VERY_FAR
NL
NM
NS Very Slow
ZE Fast Very Fast
PS
PM
PL
(x,y)
ZE PSNSPMNM
PLNL
ZE – ZeroNS – Negatively SmallNM-Negatively MediumNL – Negatively LargePS – Positively SmallPM-Positively MediumPL – Positively Large
TARGET PURSUITFuzzy Logic System #2 - for Calculating the SPEED
Distance
Angl
e
![Page 52: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/52.jpg)
NEAR FAR VERY_FAR
NL
NM
NS Sharp Right
ZE Sharp Right or Left
PS Sharp Left
PM
PL
(x,y)
ZE PSNSPMNM
PLNL
ZE – ZeroNS – Negatively SmallNM-Negatively MediumNL – Negatively LargePS – Positively SmallPM-Positively MediumPL – Positively Large
OBSTACLE AVOIDACEFuzzy Logic System #3 - for Calculating the STEERING ANGLE
Distance
Angl
e
![Page 53: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/53.jpg)
NEAR FAR VERY_FAR
NL
NM
NS
ZE
PS
PM
PL
(x,y)
ZE PSNSPMNM
PLNL
ZE – ZeroNS – Negatively SmallNM-Negatively MediumNL – Negatively LargePS – Positively SmallPM-Positively MediumPL – Positively Large
OBSTACLE AVOIDACEFuzzy Logic System #4 - for Calculating the SPEED
Distance
Angl
e
![Page 54: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/54.jpg)
C/C++ version
Fuzzy Logic Engine
![Page 55: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/55.jpg)
// Indices //////////////////////////////////////////////////////////////////////////////////////////////
typedef enum {in_angle, in_distance}; //input indices
typedef enum {in_small, in_medium, in_large}; //indices of fuzzy sets for angle input
typedef enum {in_near, in_far, in_very_far}; //indices of fuzzy sets for distance input
//indices for output steering angletypedef enum {out_ze, out_very_mild_turn, out_mild_turn,
out_turn,out_sharp_turn, out_very_sharp_turn};
//indices for output speedtypedef enum {out_very_slow, out_slow, out_medium, out_fast, out_very_fast,
out_wicked_fast};
Enumerated data types – for easy indexing
![Page 56: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/56.jpg)
Trapezoidal Membership Function
// Trapezoidal Fuzzy Set //////////////////////////////////////////////
struct trapezoid {
trapz_type tp; //type of trapezoid
float a, b, c, d, l_slope, r_slope; //parameters
};
//Trapezoidal membership function typestypedef enum { regular_trapezoid, left_trapezoid, right_trapezoid } trapz_type;
![Page 57: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/57.jpg)
Fuzzy Rule
// Fuzzy Rule //////////////////////////////////////////////////////////
typedef struct {
short inp_index[MAX_NO_OF_INPUTS], //input index inp_fuzzy_set[MAX_NO_OF_INPUTS], //input fuzzy set index out_fuzzy_set; //output index
} rule;
If ( angle is small) AND (distance is VERY_FAR) Then output is VERY_FAST.
Index: in_angle Index: in_distance out_fuzzy_set
We are storing only the indices of the components of the rule.
![Page 58: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/58.jpg)
Fuzzy System
// The complete Fuzzy System //////////////////////////////////////////////////
typedef struct { bool allocated; trapezoid inp_mem_fns [MAX_NO_OF_INPUTS] [MAX_NO_OF_INP_REGIONS];
rule* rules; //note that we need to allocate memory for the rules
int no_of_inputs, //number of inputs no_of_inp_regions, //number of fuzzy sets associated with each input no_of_rules, //number of rules
no_of_outputs; //number of fuzzy outputs
float output_values[MAX_NO_OF_OUTPUT_VALUES]; //the values of the outputs } fuzzy_system_rec;
![Page 59: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/59.jpg)
If ( angle is small) AND (distance is VERY_FAR) Then output is VERY_FAST.
Defining the Fuzzy Rule
Index: in_angle Index: in_distance out_fuzzy_set
fl->rules[0].inp_fuzzy_set[0] = in_small; fl->rules[0].inp_fuzzy_set[1] = in_very_far; fl->rules[0].out_fuzzy_set = out_very_fast;
fl->rules[0].inp_index[0] = in_angle;fl->rules[0].inp_index[1] = in_distance;
NEAR FAR VERY FAR
SMALL Med Speed Fast Speed Very Fast
MEDIUM Slow Speed Med Speed Fast Speed
LARGE Very Slow Slow Speed Slow Speed
FAMM
We are only storing the indices in the rule.
![Page 60: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/60.jpg)
If ( angle is small) AND (distance is VERY_FAR) Then output is VERY_FAST.
Membership Function
Index: in_angle Index: in_distance out_fuzzy_set
fl->rules[0].inp_fuzzy_set[0] = in_small; fl->rules[0].inp_fuzzy_set[1] = in_very_far; fl->rules[0].out_fuzzy_set = out_very_fast;
fl->rules[i].inp_index[0] = in_angle;fl->rules[i].inp_index[1] = in_distance;
NEAR FAR VERY FAR
SMALL Med Speed Fast Speed Very Fast
MEDIUM Slow Speed Med Speed Fast Speed
LARGE Very Slow Slow Speed Slow Speed
fz->inp_mem_fns[variable_index][fuzzy_set]
![Page 61: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/61.jpg)
Membership Function data structure
fz->inp_mem_fns[variable_index][fuzzy_set]
fl->rules[0].inp_fuzzy_set[0] = in_small; fl->rules[0].inp_fuzzy_set[1] = in_very_far; fl->rules[0].out_fuzzy_set = out_very_fast;
fl->rules[i].inp_index[0] = in_angle;fl->rules[i].inp_index[1] = in_distance;
inp_mem_fns is a structure containing all the parameters of a membership function.
trapezoid inp_mem_fns [MAX_NO_OF_INPUTS] [MAX_NO_OF_INP_REGIONS];
![Page 62: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/62.jpg)
Membership Function Initialisation
fl->inp_mem_fns[in_angle][in_small] =
init_trapz(14.0f, 20.0f, 0.0f, 0.0f, left_trapezoid);
fl->rules[0].inp_fuzzy_set[0] = in_small; fl->rules[0].inp_fuzzy_set[1] = in_very_far; fl->rules[0].out_fuzzy_set = out_very_fast;
fl->rules[i].inp_index[0] = in_angle;fl->rules[i].inp_index[1] = in_distance;
The init_trapz() function is used to initialize inp_mem_fns.
inp_mem_fns is a structure containing all the parameters of a membership function.
![Page 63: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/63.jpg)
Calculation of degree of Membership
trapz(inputs[variable_index],fz.inp_mem_fns[variable_index][fuzzy_set])
fl->rules[0].inp_fuzzy_set[0] = in_small; fl->rules[0].inp_fuzzy_set[1] = in_very_far; fl->rules[0].out_fuzzy_set = out_very_fast;
fl->rules[i].inp_index[0] = in_angle;fl->rules[i].inp_index[1] = in_distance;
inp_mem_fns is a structure containing all the parameters of a membership function.
The trapz function calculates the actual degree of membership of a given input value in a fuzzy set.
which input which membership function
![Page 64: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/64.jpg)
float fuzzy_system ( float inputs[ ], fuzzy_system_rec fz) { int i, j; short variable_index, fuzzy_set; float sum1 = 0.0f, sum2 = 0.0f, weight; float m_values[MAX_NO_OF_INPUTS]; for (i = 0; i < fz.no_of_rules; i++) { for (j = 0; j < fz.no_of_inputs; j++) {
variable_index = fz.rules[i].inp_index[j]; fuzzy_set = fz.rules[i].inp_fuzzy_set[j]; m_values[j] = trapz(inputs[variable_index], fz.inp_mem_fns[variable_index][fuzzy_set]);
} /* end j */ weight = min_of (m_values, fz.no_of_inputs); sum1 += weight * fz.output_values[ fz.rules[i].out_fuzzy_set ]; sum2 += weight; } /* end i */ if (fabs(sum2) < TOO_SMALL) { // TOO_SMALL = 1e-6 cout << "\r\nFLPRCS Error: sum2 in fuzzy_system is 0." << endl; exit(1); return 0.0; } return (sum1/sum2);}
Fuzzy System – from fuzzification to defuzzification
which input
which fuzzy set
File: fuzzylogic.cpp
![Page 65: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/65.jpg)
How to use the Fuzzy Logic Engine?
![Page 66: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/66.jpg)
fuzzy_system_rec g_fuzzy_system_pursuit_speed;
Fuzzy System Development
File: MyProg.cpp
1. Declare a global variable for the fuzzy system.
#define MAX_NO_OF_INP_REGIONS 7
File: fuzzylogic.h
e.g. 7 Maximum Number of Fuzzy
Sets allowed
Define the maximum number of Fuzzy Sets to be used.
![Page 67: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/67.jpg)
void initFuzzySystemTargetPursuitSpeed (fuzzy_system_rec* fl) {
fl->no_of_inputs = 2; //inputs are handled 2 at a time only fl->no_of_inp_regions = 3; //number of fuzzy sets per input fl->no_of_rules = 9; //number of rules fl->no_of_outputs = 6; //the pre-defined constant outputs //---- fl->output_values [out_very_slow] = 0.15f; fl->output_values [out_slow] = 0.39f; //… and so on… ... fl->rules = new rule [fl->no_of_rules]; //allocate memory for the rules initFuzzyRulesTargetPursuitSpeed(fl); //initialise the rules initMembershipFunctionsTargetPursuitSpeed(fl); //initialise the membership
//functions}
Fuzzy System Development2. Initialise the fuzzy system. File: fuzzylogic.cpp
![Page 68: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/68.jpg)
void initFuzzyRulesTargetPursuitSpeed(fuzzy_system_rec* fl) { int i; for (i = 0;i < fl->no_of_rules;i++) { //(*fl).rules[i].inp_index[0] = in_angle; //alternatively fl->rules[i].inp_index[0] = in_angle; fl->rules[i].inp_index[1] = in_distance; } fl->rules[0].inp_fuzzy_set[0] = in_small; fl->rules[0].inp_fuzzy_set[1] = in_very_far; fl->rules[0].out_fuzzy_set = out_wicked_fast;
fl->rules[1].inp_fuzzy_set[0] = in_medium; //... //and so on...
}
Fuzzy System Development3. Initialise fuzzy rules. File: fuzzylogic.cpp
Rule #0
![Page 69: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/69.jpg)
void initMembershipFunctionsTargetPursuitSpeed( fuzzy_system_rec* fl ) { //angle fl->inp_mem_fns[in_angle][in_small] = init_trapz(14.0f,20.0f,0.0f,0.0f, left_trapezoid); fl->inp_mem_fns[in_angle][in_medium] = init_trapz(14.0f,20.0f,34.0f,40.0f, regular_trapezoid); fl->inp_mem_fns[in_angle][in_large] = init_trapz (34.0f, 40.0f, 0.0f, 0.0f, right_trapezoid); //distance //... //... //... //and so on...
}
Fuzzy System Development4. Initialise membership functions. File: fuzzylogic.cpp
which fuzzy set
![Page 70: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/70.jpg)
void runGame() { //... initFuzzySystemTargetPursuitSpeed(&g_fuzzy_system_pursuit_speed); // keep running the program until the ESC key is pressed while((GetAsyncKeyState(VK_ESCAPE)) == 0 ) { //... inputValuesPursuitSpeed[ in_angle ] = angleFromTarget; inputValuesPursuitSpeed[ in_distance ] = distanceFromTarget; fuzzyPursuitSpeed = fuzzy_system(inputValuesPursuitSpeed,
g_fuzzy_system_pursuit_speed); robot.setSpeed(fuzzyPursuitSpeed); } //... free_fuzzy_rules(&g_fuzzy_system_pursuit_speed); //and so on...}
Fuzzy System Development4. Modify runGame(). File: MyProg.cpp
![Page 71: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/71.jpg)
void runGame() { //... // Target pursuit fuzzyAngle = fuzzy_system(inputValues, g_fuzzy_system); //Use only if you are using the unorthodox approach if(targetPosition == RIGHT_SIDE){ //target to pursue is at the right hand-side
fuzzyAngle = -fuzzyAngle; //negate the angle } //... newAngle = robot.getAngle() + fuzzyAngle; //adjust robot’s angle //and so on...
robot.setAngle(newAngle); //update robot’s angle
//and so on... }
Fuzzy System Development4. Modify runGame(). File: MyProg.cpp
![Page 72: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/72.jpg)
Fuzzy System Development5. Calibrate the fuzzy membership functions, fuzzy rules and output fuzzy sets.
• If the robot runs in circles, then make the fuzzy outputs smaller.
• Check also if the robot is hitting the obstacles. Adjust the parameters until the robot avoids them at different speeds and angles.
File: fuzzylogic.cpp
![Page 73: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/73.jpg)
Randomisation
Some Extras...
![Page 74: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/74.jpg)
75
Element of Surprise
srand()
159.234
Seed for random-number generation
Seed the random-number generator with current time so that the numbers will be different every time we run. srand( (unsigned)time( NULL ) );
/* Display 10 numbers. */ for( i = 0; i < 10;i++ ) printf( " %6d\n", rand() );
![Page 75: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/75.jpg)
77
Element of Surprise
rand()
159.234
float randomVal(float min, float max){
float r;
r = (float)rand()/RAND_MAX;r = min + (r*(max-min));
return r;}
rand() returns a pseudo-random integral number in the range (0 to RAND_MAX)-1
![Page 76: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/76.jpg)
78
Time elapsed, wait…
clock()
159.234
void wait ( int seconds ){ clock_t endwait;
endwait = clock () + seconds * CLOCKS_PER_SEC ; while (clock() < endwait) {}}
clock_t startTime, elapsedTime;
startTime = clock();…...elapsedTime = (clock() - startTime) / CLOCKS_PER_SEC;
![Page 77: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/77.jpg)
Keyboard Handling
Function keys, arrow keys, Control and Shift keys, combination of keys
![Page 78: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/78.jpg)
80
Keyboard Handling
GetAsyncKeyState
159.234
The GetAsyncKeyState function determines whether a key is up or down at the time the function is called, and whether the key was pressed after a previous call to GetAsyncKeyState.
To find other pre-defined constants: Using google, type the following keywords: msdn vk_shift
Virtual-key code e.g.
vk_shiftvk_control
SHORT GetAsyncKeyState( int vKey ); // vKey - virtual-key code
http://msdn.microsoft.com/en-us/library/ms645540(VS.85).aspx
![Page 79: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/79.jpg)
81
Keyboard Handling
GetAsyncKeyState
159.234
void moveSprite(){
if(GetAsyncKeyState(VK_UP) < 0) { SpriteY = SpriteY + 2; //up outtext("UP"); }
if(GetAsyncKeyState(VK_DOWN) < 0) { SpriteY = SpriteY - 2; //down outtext("DOWN"); ….
To find other pre-defined constants: Using google, type the following keywords: msdn virtual key codeshttp://msdn.microsoft.com/en-us/library/ms645540(VS.85).aspx
![Page 80: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/80.jpg)
82
Keyboard Handling
GetAsyncKeyState
159.234
//general key press event
if(GetAsyncKeyState(VK_SPACE) < 0) {...}
//key down event
if((GetAsyncKeyState(VK_SPACE) & 0X0001) ==0X0001){...}
//key up event
if((GetAsyncKeyState(VK_SPACE) & 0X8000) ==0X8000){...}
![Page 81: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/81.jpg)
83
Keyboard HandlingMonitoring the Control and Shift keys:
if(GetAsyncKeyState(VK_CONTROL)<0) { ControlFlag =! ControlFlag; }
bool ControlFlag, ShiftFlag;
if(GetAsyncKeyState(VK_SHIFT)<0) { ShiftFlag =! ShiftFlag; }
For the Tank to Jump to the Right: Control + Shift + Right Arrow key
For the Tank to Jump to the Left: Control + Shift + Left Arrow key
![Page 82: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/82.jpg)
84
Keyboard HandlingPossible approach in monitoring key combinations :
if(GetAsyncKeyState(VK_RIGHT)<0) {
XDir=RIGHT; if(ShiftFlag) {
outtext("SHIFT + RIGHT"); ShiftFlag=!ShiftFlag; } if(ControlFlag)
{ outtext("CTRL + RIGHT"); if (TankX < getmaxx()-W) TankX += 2; Angle=Angle-5; RaiseWheelFlag=TRUE; ControlFlag=!ControlFlag; }
…
![Page 83: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/83.jpg)
Visual Basic version
![Page 84: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/84.jpg)
FL(1).Init "TARGET: Angle and Distance", IN_TARGET_ANGLE, IN_TARGET_DISTANCE, 2, 3, 7
FL(1).LoadOutputVariable OUT_REVERSETURN, 50 FL(1).LoadOutputVariable OUT_VERYSHARPTURN, 40 FL(1).LoadOutputVariable OUT_SHARPTURN, 30 FL(1).LoadOutputVariable OUT_TURN, 20 FL(1).LoadOutputVariable OUT_MILDTURN, 10 FL(1).LoadOutputVariable OUT_VERYMILDTURN, 3 FL(1).LoadOutputVariable OUT_ZE, 0
Fuzzy Outputs for Target Pursuit
FUZZY OUTPUTS FOR STEERING
STEERING
![Page 85: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/85.jpg)
Fuzzy Sets for Target Pursuit
FL(1).LoadInputMemFcn IN_TARGET_ANGLE, IN_SMALL, 16, 22, 0, 0, LeftTrapezoid FL(1).LoadInputMemFcn IN_TARGET_ANGLE, IN_MEDIUM, 16, 24.58, 30.57, 38, RegularTrapezoid FL(1).LoadInputMemFcn IN_TARGET_ANGLE, IN_LARGE, 30, 38, 0, 0, RightTrapezoid
FL(1).LoadInputMemFcn IN_TARGET_DISTANCE, IN_NEAR, 9.66, 15.33, 0, 0, LeftTrapezoid FL(1).LoadInputMemFcn IN_TARGET_DISTANCE, IN_FAR, 9.66, 15.33, 16.86, 20.19, RegularTrapezoid FL(1).LoadInputMemFcn IN_TARGET_DISTANCE, IN_VERYFAR, 16.86, 20.19, 0, 0, RightTrapezoid
DISTANCE
ANGLE
STEERING
![Page 86: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/86.jpg)
FL(2).LoadOutputVariable OUT_WICKEDFAST, 5.5 FL(2).LoadOutputVariable OUT_VERYFAST, 4.048 FL(2).LoadOutputVariable OUT_FAST, 2.37 FL(2).LoadOutputVariable OUT_MEDIUM, 0.69 FL(2).LoadOutputVariable OUT_SLOW, 0.39 FL(2).LoadOutputVariable OUT_VERYSLOW, 0.15
Fuzzy Outputs for Target Pursuit
SPEED ADJUSTMENT
SPEED ADJUSTMENT
![Page 87: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/87.jpg)
Fuzzy Sets for Target Pursuit
FL(2).LoadInputMemFcn IN_DISTANCE, IN_NEAR, 8.09, 11.57, 0, 0, LeftTrapezoid FL(2).LoadInputMemFcn IN_DISTANCE, IN_FAR, 9.25, 13.88, 17.35, 25.8, RegularTrapezoid FL(2).LoadInputMemFcn IN_DISTANCE, IN_VERYFAR, 17.35, 25.8, 34.71, 0, RightTrapezoid
FL(2).LoadInputMemFcn IN_ANGLE, IN_SMALL, 18.18, 36.8, 0, 0, LeftTrapezoid FL(2).LoadInputMemFcn IN_ANGLE, IN_MEDIUM, 20, 38.73, 40, 69, RegularTrapezoid FL(2).LoadInputMemFcn IN_ANGLE, IN_LARGE, 44, 64, 180, 0, RightTrapezoid
DISTANCE
ANGLE
SPEED ADJUSTMENT
![Page 88: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/88.jpg)
FL(0).Init "OBSTACLE: Angle and Distance", IN_ANGLE, IN_DISTANCE, 2, 3, 7 FL(0).LoadOutputVariable OUT_REVERSETURN, 80 FL(0).LoadOutputVariable OUT_VERYSHARPTURN, 60 '45 FL(0).LoadOutputVariable OUT_SHARPTURN, 35 FL(0).LoadOutputVariable OUT_TURN, 25 FL(0).LoadOutputVariable OUT_MILDTURN, 10 FL(0).LoadOutputVariable OUT_VERYMILDTURN, 3 FL(0).LoadOutputVariable OUT_ZE, 0
Fuzzy Outputs for Obstacle Avoidance
FUZZY OUTPUTS FOR STEERING
STEERING
![Page 89: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/89.jpg)
Fuzzy Sets for Obstacle Avoidance
FL(0).LoadInputMemFcn IN_ANGLE, IN_SMALL, 19.81, 32, 0, 0, LeftTrapezoid FL(0).LoadInputMemFcn IN_ANGLE, IN_MEDIUM, 19, 30, 34, 45, RegularTrapezoid FL(0).LoadInputMemFcn IN_ANGLE, IN_LARGE, 36, 48, 76, 112, RightTrapezoid
FL(0).LoadInputMemFcn IN_DISTANCE, IN_NEAR, 15.84, 17.39, 0, 0, LeftTrapezoid FL(0).LoadInputMemFcn IN_DISTANCE, IN_FAR, 14.67, 17.05, 20.81, 22.76, RegularTrapezoid FL(0).LoadInputMemFcn IN_DISTANCE, IN_VERYFAR, 20.51, 22.76, 0, 0, RightTrapezoid
DISTANCE
ANGLE
STEERING
![Page 90: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/90.jpg)
FL(3).LoadOutputVariable OUT_WICKEDFAST, 7.5 FL(3).LoadOutputVariable OUT_VERYFAST, 5.52 FL(3).LoadOutputVariable OUT_FAST, 2.37 FL(3).LoadOutputVariable OUT_MEDIUM, 0.69 FL(3).LoadOutputVariable OUT_SLOW, 0.39 FL(3).LoadOutputVariable OUT_VERYSLOW, 0.15
Fuzzy Outputs for Obstacle Avoidance
SPEED ADJUSTMENT
SPEED ADJUSTMENT
![Page 91: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/91.jpg)
Fuzzy Sets for Obstacle Avoidance
FL(3).LoadInputMemFcn IN_DISTANCE, IN_NEAR, 8.09, 11.57, 0, 0, LeftTrapezoid FL(3).LoadInputMemFcn IN_DISTANCE, IN_FAR, 9.25, 13.88, 17.35, 25.8, RegularTrapezoid FL(3).LoadInputMemFcn IN_DISTANCE, IN_VERYFAR, 17.35, 25.8, 34.71, 0, RightTrapezoid
FL(3).LoadInputMemFcn IN_ANGLE, IN_SMALL, 18.18, 36.8, 0, 0, LeftTrapezoid FL(3).LoadInputMemFcn IN_ANGLE, IN_MEDIUM, 20, 38.73, 40, 69, RegularTrapezoid FL(3).LoadInputMemFcn IN_ANGLE, IN_LARGE, 44, 64, 180, 0, RightTrapezoid
DISTANCE
ANGLE
SPEED ADJUSTMENT
![Page 92: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/92.jpg)
‘INPUTS: FuzzyTargetInputs(IN_TARGET_ANGLE) = ThetaAdjustmentToHitTarget FuzzyTargetInputs(IN_TARGET_DISTANCE) = DistanceFromTarget
‘FUZZY OUTPUT: FuzzyTargetAngleTurn = FL(1).Fuzzy_System(FuzzyTargetInputs)
Taking advantage of SymmetryTARGET SEEKING
![Page 93: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/93.jpg)
'Determine correct direction of turn to hit target
If (TargetPosition = RIGHT_SIDE) Then LblTargetPosition.BackColor = vbBlue LblTargetPosition.ForeColor = vbWhite LblTargetPosition.Caption = "FOLLOW TARGET @RIGHT SIDE”
ElseIf (TargetPosition = LEFT_SIDE) Then LblTargetPosition.ForeColor = vbWhite LblTargetPosition.BackColor = vbRed LblTargetPosition.Caption = "FOLLOW TARGET @LEFT SIDE” FuzzyTargetAngleTurn = -1 * FuzzyTargetAngleTurn
End If
Taking advantage of Symmetry
Angle = Angle + FuzzyTargetAngleTurn
TARGET SEEKING
![Page 94: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/94.jpg)
Sub MoveObject()
Dim A As Single Dim NewX As Single, NewY As Single A = Deg2Rad(Angle) NewX = Obj.x + (Speed * Cos(A)) NewY = Obj.y + (Speed * Sin(A))
Moving the Robot
![Page 95: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/95.jpg)
FL(1).Init "TARGET: Angle and Distance", IN_TARGET_ANGLE, IN_TARGET_DISTANCE, 2, 3, 7
FL(1).LoadOutputVariable OUT_REVERSETURN, 50 FL(1).LoadOutputVariable OUT_VERYSHARPTURN, 40 FL(1).LoadOutputVariable OUT_SHARPTURN, 30 FL(1).LoadOutputVariable OUT_TURN, 20 FL(1).LoadOutputVariable OUT_MILDTURN, 10 FL(1).LoadOutputVariable OUT_VERYMILDTURN, 3 FL(1).LoadOutputVariable OUT_ZE, 0
Fuzzy Outputs for Target Pursuit
FUZZY OUTPUTS FOR STEERING
STEERING
![Page 96: Robot Navigation Napoleon Reyes, Ph.D. Computer Science, Massey University, Auckland, New Zealand](https://reader035.vdocument.in/reader035/viewer/2022070306/5519e822550346d67b8b4a80/html5/thumbnails/96.jpg)
End of PresentationLet me answer some of your questions…
Thanks for listening!
*