**4.4.3 Fuzzy system rules**

156 Serial and Parallel Robot Manipulators – Kinematics, Dynamics, Control and Optimization

We present in figure 8 the fuzzy logic controller for the linear velocity. This controller determines whether the robot's speed should be increased or decreased. It is used to

The D, ϑO, and the ϑR represent respectively the distance between the robot and the nearest obstacle in the front area, the velocity of the nearest obstacle in the front area and the current velocity of the robot. The input and output membership functions of the fuzzy controller for

determine the speed change Δϑ (the linear velocity).

linear velocity are shown respectively in figure 9 and figure 10.

Fig. 9. Input membership functions for the linear velocity

Fig. 10. Output membership functions. Velocity up/down control.

the obstacle, it accelerates.

So, the speed of the robot can be influenced by the velocity of the obstacle in the front area. We present in algorithm 3 the reasoning process of the robot used to predict the velocity of the nearest obstacle in this area in order to determine its velocity. For example, if the velocity of the obstacle is smaller than the velocity of the robot, then the robot decreases its speed in order to avoid collision in the near future. If the velocity of the obstacle is larger than the velocity of the robot, the robot keeps the same speed if its velocity and the velocity of the obstacle are close. However, if there is a difference between the speed of the robot and

Fig. 8. Fuzzy controller of speed change

Robot navigation is actually governed by rules in the fuzzy controller which represent qualitatively the human driving heuristics. The fuzzy logic controllers are applied to coordinate and to combine the various behaviours of the robot in order to choose a suitable decision. The fuzzification converts the input variables into input grades by means of the membership functions shown in figure 5 and figure 9. The inference and aggregation generate a resultant output membership function with respect to fuzzy rules. The defuzzification gives the output membership function shown in figure 6 and in figure 10. Therefore, the total number of rules to determine the angular velocity is N= 24. We can reduce this number into 9 if-else rules by eliminating redundancies (rules that have different values of input variables and the same value of the output variable can be replaced by one rule). We present in table 2 the fuzzy rules for the angular velocity. For example, if DTCF=M (the obstacle in the front area is moving) and TO=F (the target is in front area) then Δθ=NT (the robot do not change its trajectory) whatever the value of DTCL and DTCR. Likewise, for the linear velocity there are N=18 rules, but we can reduce them into 9 if-else rules.

The use of a small number of rules is required in dynamic environments, this is especially important when a fast response to the changes is required (short execution and high frequency of sensor readings). We use the method of Center of Gravity Defuzzification to


Table 2. The fuzzy rules for the angular velocity.

A Reactive Anticipation for Autonomous Robot Navigation 159

nearest exit will be the opening at the right hand side where the wall ends (see figure 11.b). This method takes a large time to find the free end of the wall. However, the problem with trial-return motion is high power consumption and the time spent from start point to target is long when the obstacle is composed of complex traps like U-shape and T-shape. In (Zhu & Yang, 2004), the dead cycle problem is resolved by using a state memory strategy (see figure 11.c). Therefore, there is a situation where the robot cannot go straight toward the target. It has to keep turning around the obstacle (point "a") if the distance between the robot and the

**Scenario 2** We test our method in an environment composed of corridors (wide and narrow). As shown in figure 11.d the robot moves in a corridor in order to reach its target. The problem is how to ensure the motion's stability without oscillation. In our architecture, there is a compromise between "reach target" and "avoid obstacles". In region 1, the robot crosses a large corridor; it changes its direction when it detects a static obstacle. In region 2, the robot crosses a narrow corridor; in this situation the DTCR<∆T and the DTCL<∆T. Thus, the robot cannot change its trajectory, but it should only adjust its velocity with the velocity of the nearest obstacle in the front area. This reasoning allows the robot to reach its target

**Scenario 1** Generally it is difficult to deal with narrow passage cases when there are moving actors because there may be oscillation in the trajectory between multiple obstacles. However, we can show, in figure 12, the effectiveness of our method when dealing with this case. The robot navigates in an environment composed of corridors with a moving obstacle. At the first time, the corridor is narrow. In this setting the robot adjusts its velocity to avoid collision with the obstacle without changing the direction because the goal is in the front

Fig. 11. Experimental results in static environments

easily without oscillation.

obstacle is shorter than the distance between the robot and the target.

**5.3 Experimentation results in dynamic environments** 

calculate the output for the two controllers. The constants of output membership function for the first controller (angular velocity) are shown in figure 6 and the values of the constants of output membership function for the second controller (linear velocity) are shown in figure 10. During simulation work, the robot's normal velocity VN is set to 0.5m/s.
