# Reactive Obstacle-Avoidance Systems for Wheeled Mobile Robots Based on Artificial Intelligence
## 2 Artificial Intelligence, Obstacle Avoidance, and Navigation  
Heuristic approaches, such as Fuzzy Systems and Artificial Neural Networks (ANN), have been widely used in mobile robot navigation. The use of fuzzy logic is primarily seen to deal with uncertainty in sensory data [17]. **Fuzzy Logic** enables expert systems based on rules, which work closer to the \"common sense\" that humans apply to make decisions; these systems use fuzzy rules and fuzzy inference instead of exact rules. These rules intend to be subjective, ambiguous, vague, or contradictory, like the human common sense knowledge, acquired over the long-term and many people's experiences, over many years [18]. Fuzzy rules deal with fuzzy values, for example, \"high\", \"cold\", \"very good\", etc. These concepts are usually represented by their membership functions, which show the extent to which a value from a domain is included in a fuzzy concept (see Figure 1). The knowledge of a specialist is necessary to define these rules and the regions of the membership functions. Fuzzy inference takes inputs, applies the rules, and produces outputs. Inputs to a fuzzy system can be either exact, crisp values, or fuzzy values (\"very cold\"); output values can be fuzzy, for example, a whole membership function for the inferred fuzzy value, or exact, for example, crisp values. The process of transforming an output membership function into a single value is called defuzzification. Usually, a fuzzy system consists of the following steps [1]: (i) _Fuzzification_: where inputs are fuzzified to be associated with linguistic variables using membership functions. (ii) Inference: this refers to the fuzzy rule base containing fuzzy IF-THEN rules to derive the linguistic values for the intermediate and output linguistic variables. (iii) Defuzzification: once the output linguistic values are obtained, the defuzzification produces the final crisp values from the output linguistic values. Figure 1: Membership function types. Several fuzzy logic applications exist in the market now, like control of automatic washing machines, camera focusing, control of transmission in cars, and many automation tasks such as landing systems and control of subways. Many reactive navigation systems based on fuzzy control and ANN have been proposed over the last years, applying different input data types. For example, the authors in [19] use an IR transmitter and receiver to find the obstacle in the path of the vehicle, where they implement a multilayer feed-forward neural network with backpropagation training algorithms running inside a microcontroller. A neural network approach equipped with statistical dimension reduction techniques was created by [20] to increase the speed and precision of the network learning; authors used a feed-forward ANN based on function approximation with backpropagation training. Two different datasets, obtained from a laser range sensor, were used for training the networks. Development using Q-learning and a neural network planner was applied to solve path planning problems, which has proven to be effective in navigation scenarios where global information is available [2]. Even hybrid systems using Fuzzy Logic and ANNs have been proposed, like [1], where Fuzzy Logic treats the data of infrared sensors, which become the input of the ANN that decides which movement the robot must perform. **Artificial Neural Networks** are an attempt to emulate the human brain neuron performance. Its structure can be defined by three layers: input layer, hidden layer, and output layer. ANNs can be classified by their topology (single layer or multi-layer) and its learning types (supervised, unsupervised, reinforcement, etc.) [17; 21; 22]. A single-layer network can have one or more inputs and outputs. As an example, Figure 2a shows a single-layer architecture with four inputs and one output. The individual inputs \(x_{1},x_{2},x_{3},...,x_{N}\) are each weighted by its corresponding elements \(w_{1,1},w_{1,2},w_{1,3},...,w_{1,N}\) of the weight matrix \(\mathbf{W}\).