Obstacle Avoidance Based on Stereo Vision Navigation System for Omni-directional Robot

— This paper addresses the problem of obstacle avoidance in mobile robot navigation systems. The navigation system is considered very important because the robot must be able to be controlled from its initial position to its destination without experiencing a collision. The robot must be able to avoid obstacles and arrive at its destination. Several previous studies have focused more on predetermined stationary obstacles. This has resulted in research results being difficult to apply in real environmental conditions, whereas in real conditions, obstacles can be stationary or moving caused by changes in the walking environment. The objective of this study is to address the robot’s navigation behaviors to avoid obstacles. In dealing with complex problems as previously described, a control system is designed using Neuro-Fuzzy so that the robot can avoid obstacles when the robot moves toward the destination. This paper uses ANFIS for obstacle avoidance control. The learning model used is offline learning. Mapping the input and output data is used in the initial step. Then the data is trained to produce a very small error. To support the movement of the robot so that it is more flexible and smoother in avoiding obstacles and can identify objects in real-time, a three wheels omnidirectional robot is used equipped with a stereo vision sensor. The contribution is to advance state of the art in obstacle avoidance for robot navigation systems by exploiting ANFIS with target-and-obstacles detection based on stereo vision sensors. This study tested the proposed control method by using 15 experiments with different obstacle setup positions. These scenarios were chosen to test the ability to avoid moving obstacles that may come from the front, the right, or the left of the robot. The robot moved to the left or right of the obstacles depending on the given 𝑽𝒚 speed. After several tests with different obstacle positions, the robot managed to avoid the obstacle when the obstacle distance ranged from 173 – 150 cm with an average speed of 𝑽𝒚 274 mm/s. In the process of avoiding obstacles, the robot still calculates the direction in which the robot is facing the target until the target angle is 0.


INTRODUCTION
Navigation research on robots is starting to become a separate topic. Robotics experts began to develop several algorithms to find free paths. The navigation system on the robot is considered very important because the robot must be able to be controlled from the starting point to the target (destination) safely. There are two points that become a reference, namely the first is safe, where the robot must be able to avoid obstacles or, in other words, not experience collisions with obstacles. Second, the robot must always be sure to arrive at the target (destination).
The challenge is how to choose which of the many travel solutions. In real life, a motorist is often still filled with doubts in making choices, like in the case above. It will be very interesting if this is implemented in a mobile robot (autonomous robot). Starting from simple problems like this, new problems can be developed if these problems are applied to autonomous mobile robots where there are obstacles that the robot must avoid.
Complex problems will arise because a mobile robot must be able to detect obstacles and make decisions to avoid these obstacles, not to mention if the main target (goal) disappears from the camera's view. All of that requires a very complicated computational process. The problem from the outside that must also be taken into account is the light intensity considering the sensor to be used is the camera sensor. The above factors will make it difficult for the robot to arrive at its destination.
Research on obstacle avoidance has often been carried out by researchers, starting with presenting fuzzy algorithms for reactive navigation for mobile robots in complex environments [1]- [61]. In this study, it was stated that fuzzy logic is quite good and has a fast response to overcome obstacles. This research only addresses the problem of static obstacles in the robot's work area, while the elements of moving obstacles caused by moving objects have not been included. Model-based Predictive Controller (MBPC) using Neural Networks with ultrasonic sensors for mobile robot navigation is also carried out to overcome static obstacles that appear unexpectedly in the robot's work area [62]- [77], where this study only focused on static obstacles that unexpected presence. Dynamic Artificial Neural Network (DANN) algorithm for motion planning and mobile robot paths [78]- [80]. This research can navigate a mobile robot on a flat surface between static and dynamic obstacles.
To further improve the ability of the robot in terms of overcoming obstacle avoidance, the researchers implemented a combination of two methods by combining the Neural Network and Fuzzy methods known as Generalized Dynamic Fuzzy Neural Networks (GDFNN) to design real-time control  [81]. The experimental results show that compared to conventional fuzzy logic control, GDFNN is superior in performance. In addition, there are also those who combine Reinforcement Learning with Neural Networks (RLNN) to overcome the problem of autonomous mobile robot obstacle avoidance [82]. The simulation results show that the robot can improve learning ability and can complete the tasks given in a complex environment.
To detect obstacles in real-time, researchers are starting to innovate by combining camera sensors with lasers. This type of sensor has reliability in detecting 2-and 3dimensional objects [83]. Even in recent research [84], stereo-vision techniques were developed based on a combination of Omnidirectional cameras and perspective cameras. This technique combines a 360 o field of view from an Omnidirectional camera with a long field of view from a perspective camera which is used to determine the approximate 3-dimensional position of obstacles. Several implementations of vision systems based on color sensors [85], camera sensor Pixy 2 CMUcam5 [86], and thermal cameras [87] were investigated in previous studies. The studies above show very good results, namely obstacles that can be detected in real-time. However, no moving obstacles have been used in the previous research. This study has a goal to develop an obstacle avoidance method to avoid moving obstacles.
Based on some of the research that has been done, this research will develop an autonomous mobile robot that can navigate independently to overcome moving obstacles caused by environmental changes in the robot's work area. In order to recognize the environment, two webcams are used as stereo vision sensors. Obstacle objects used are pedestrians who are recognized by upper body detection. The reason for choosing this object is because the robot's work area is the actual environment. The intelligence method as a control system must be able to overcome the problem of moving obstacles in the work area and be able to make the robot arrive at the target (destination). The control system used to avoid obstacles is Neuro-Fuzzy. In this study, a 3-wheeled omnidirectional robot was used, with the hope that this robot will be able to overcome obstacle problems in a smooth and flexible manner.
In order for the mobile robot to arrive at a predetermined target (goal), it is necessary to design a robot behavior that has the ability to identify the target object, the ability to detect moving obstacles and make decisions to avoid them flexibly. These behaviors will be used by the robot in navigation. In its movement from the starting point to the destination, the robot is controlled using the Neuro-Fuzzy algorithm and uses stereo vision. To improve its ability to deal with dynamic environments, omnidirectional robots and the Neuro-Fuzzy algorithm are used, which will help the robot to detect obstacles and make decisions that the robot will avoid.
This study focuses on robot navigation systems such as determining the position of the target (destination) where the target is assumed to always be in the robot's view, detecting obstacles (avoiding obstacles), and producing flexible and smooth movements. Obstacle objects used are pedestrians who are identified by upper body detection. The work area used by the robot is a corridor and an indoor room with a length of 4 meters and a width of 4 meters. This research does not care about the shortest distance because the robot walks not based on the path.
This study aims to develop a stereo vision-based navigation system for supporting obstacle avoidance of omnidirectional mobile robots. The proposed method exploits the Neuro-Fuzzy algorithm to produce a barrier-free path in real-time and guide the movement of the robot in order to be flexible and smooth. In order to guide the mobile robot to arrive at a predetermined destination, it is necessary to design a robot behavior that has the ability to identify the target object, detect moving obstacles and make decisions to avoid them flexibly. The objective of this study is to address the robot's behaviors for navigation. This study contributes to improving state of the art in obstacle avoidance based on the visual sensor for robot navigation systems by utilizing the stereo camera for detecting a target and obstacles distance and angles as input to ANFIS, such as depicted in Fig. 1. This paper has research methodology that consists of two main parts. The first part is building a method to control the linear and angular velocity of autonomous mobile robots.

A. Modeling Navigation System
In that study, [28] implemented the Dynamic Artificial Neural Network algorithm for motion planning and mobile robot paths. This method can navigate the mobile robot on a flat surface and can overcome static and dynamic obstacles. Movement control is carried out (trained) directly (online) with the backpropagation algorithm using potential fields to avoid obstacles. Meanwhile, the movement of moving obstacles is estimated or predicted by other ANNs. In this study, the authors created a robot named "MITMÓT Robot." The method used is Backpropagation through Time (BPTT). It is a training method of dynamic feedback artificial neural networks that involves supplying inputs forward through the network and then propagating errors backward to modify the weights. The main idea of this method is to train the ANN with the backpropagation algorithm by means of a feedback neural network that is iterated as much as possible. This training is carried out in the following way: input is given to the first ANN, which calculates its own output. This Faikul Umam, Obstacle Avoidance Based on Stereo Vision Navigation System for Omni-directional Robot output will be the second ANN input, and so on. The resulting output is used to calculate the error.

B. Control System
The control method functions to regulate the robot so that it can move from the initial position to the destination position without experiencing a collision. In contrast to [28], which used a Dynamic Artificial Neural Network algorithm to navigate a robot on a flat surface, Phinni et al. (2006) used a Compact Genetic Algorithm (cGA) and fuzzy logic to control the robot's movement. The Compact Genetic Algorithm (cGA) method will produce a path from the area that has been captured with the camera. Then the fuzzy method takes over to control the mobile robot so that it can follow the path that has been generated by the cGA. It produced satisfactory results in the form of a simulation in that the robot was able to follow the cGA-generated path. While both methods produced satisfactory results in simulation, however, the DANN approach was better than cGA for the ability to handle dynamic obstacles. This study is inspired by previous research in that the Neuro-Fuzzy control system is proposed to make a decision to go to the target. While the robot goes to the target, if there is an obstacle, the other Neuro-Fuzzy control systems control the robot to avoid collision while still calculating the target's position so that it does not crash out of sight.

A. Stereo Vision-Based Navigation System
System design can be described in the form of a block diagram in Fig. 2. The system consists of three main parts. First, the stereo vision sensor functions to provide visual information on obstacle objects and targets. Secondly, the laptop functions to process visual information received from the stereo vision sensor to produce distance parameters and the position of obstacles and targets, then both of these information are processed using ANFIS. Third, the output generated by ANFIS is the rotational speed of the motor, which is sent to the robot (Robotino). Robotino's movement changes depending on the information received from the stereo vision sensor.

B. Target and Obstacle Detection
In this study, apart from detecting the upper body as a moving obstacle, it is also necessary to detect other objects as the target of the robot. The object chosen is a 2D image, namely a circle. The researcher chose 2D object detection as the target object because the computational process is not too heavy, allowing the robot to detect it in real-time. Circle detection system using Hough transform.
As with upper body detection, in Fig. 3, the initial process for detecting circular objects is the capture process from both cameras. The result obtained is an image in RGB form, and the image is converted to an image in the grayscale form. After the image in grayscale form is obtained, then a circle is searched using the Hough transform method.
Upper body detection, as shown in Fig. 4, begins with capture by the camera, which produces an image in RGB form. The RGB image is then converted into gray form. Images in the gray form will be trained by a haar cascade classifier which contains samples of the Upper Body up to hundreds of times. If the Upper Body has not been found, the training will continue. If the Upper Body is found, a marker is made in the form of a rectangular box in the area around the Upper Body.
As explained earlier, in this study, the obstacle objects used were pedestrians who were identified by upper body detection. There are several algorithms that have been developed to detect the upper body, for example, using skin color detection and using eye blink patterns. To speed up the computation process, upper body detection in this study uses the Haar-Like Feature library, which was developed by Paul Viola and improved by Rainer Lienhart.

C. Stereo Vision-Based Distance and Angle Estimation
In the Stereo vision system, two web cameras are placed horizontally and parallel, which are separated by a distance called BaseLine b, and the focal length of the lens (focal length) is f, as in Fig. 5. The difference between RIqx and LIqx is called the disparity, and is directly related to the distance SCqz. This study created a stereo vision system using two horizontally mounted web cameras. The distance between the center point of the right webcam and the center point of the left webcam is called the baseline. There are no binding rules for determining how wide the distance should be used to create a stereo-vision system. The wider the baseline, the greater the disparity value. In this study, the baseline used was 8 cm or 80 mm. The focal length value for each web camera may not be the same. Usually, this value has been included by the vendor in the camera specifications. The web camera used is a PCC5020 8 MegaPixel type prolink with a focal length value of 6.3 mm. After the obstacle object and the target object are identified, then the midpoint of the two objects must be found (xcenter, ycenter) on each camera, so four parameters are generated, namely XLcenter, YLcenter, XRcenter, and YRcenter. As shown in Fig. 6 for an obstacle object, because the face marker uses a rectangle, the center point of the object can be found using Equations (1) and (2). Midpoint markers on the left and right camera, respectively, are described as Equations (1) to (4).
Based on Equations (1) to (4) and Fig. 5, the distance calculation formula is obtained by using the equation as where = is the midpoint of the object on the right frame and = is the midpoint of the object on the left frame.
Apart from the distance parameter, another parameter needed to avoid obstacles is the orientation position of the obstacle. In this case, the orientation position in question is the angle of the obstacle object. Each camera has a different angle of view. The specifications issued by the vendor state that the angle of view on the PCC5020 type Prolink camera is 70 degrees. When measuring, this type of camera only has an angle of view of 50 degrees. This value is obtained from the measurement results by drawing a straight line from the left and right viewpoints of the camera to the center point of the camera, as shown in Fig. 6. Once the camera angle is known, the object angle can be found by mapping the two camera angles with the resolution used. If the resolution used is 640×320, then it can be mapped as shown in Table I  If the pixel is 0, the angle is 25. If the pixel is 320, the angle is 0. And if the pixel is 640, the angle is -25. From this mapping, we can find the linear function shown as where is the angle, and is the pixel value. Calculation results are shown in Table II. In the case of stereo cameras, each camera's angle value is calculated first. After that, the angle values for each camera are added up and then divided by two.

D. Architecture of ANFIS-Based Obstacle Avoidance
To make a robot able to avoid obstacles, it needs an appropriate learning mechanism to produce optimum control. Obstacle avoidance control in this study uses ANFIS, where the learning model used is offline learning. The initial step is mapping the input and output data. Then the data is trained using MATLAB to produce a very small error. Data mapping uses two inputs and one output, as in Appendix 1. The input used is the object distance (cm) and the object orientation position (degrees), while the output is the speed (mm/s). This output value is used by the robot to avoid obstacles. The closer the obstacle is, and the smaller the obstacle angle with the robot, the greater the resulting speed, and vice versa, if the obstacle distance is far and the obstacle angle is large, the speed is small.
Actually, the basic gist of this training is very simple, the FIS that was previously generated based on data mapping will be trained by changing the premise and consequent parameters so that the FIS produced follows the predetermined output data. As shown in Fig. 7, the training was carried out for 5000 epochs, where the smallest error produced was 0.072 in the 1986 th epoch. After the training is completed, a FIS model is generated with new premise parameters and consequence parameters. As in data mapping, the FIS training results produce input distances and angles that have been modeled in the form of a membership function.
In Fig. 8 Obstacle distance is also divided into 5 Membership functions, as shown in Fig. 9, with a value range of 130 to 250, namely very close distance to membership values (12.8, 130), close distance to membership values (12.72, 160), medium distance to membership values (12.84, 190), long distance with membership values (12.72, 220), and very long distance with membership values (12.8, 250). In addition, this training also produces consequent parameters, as shown in Table III. In the Sugeno FIS model, the output is not a fuzzy set but a constant or linear equation.  where , , are consequential parameters. The Sugeno FIS model defuzzification process is far more efficient than other FIS models. This is because the Sugeno FIS model calculates the output value by using = 1 1 + 2 2 1 + 2 where 1 is SS AND JSD, and 2 is SS AND JSJ, while 1 and 2 are the i th output rules.
The ANFIS architecture is determined by the number of membership functions and their membership values. As shown in Fig. 10, the designed ANFIS architecture has two inputs, namely position and obstacle distance, where each input has 5 membership functions. The output of ANFIS is the speed which is the speed of the robot (mm/s) on the -coordinate axis in the real world. Where and are inputs at node and , or − 5, are fuzzy sets corresponding to Gaussian functions as shown in (8).
where and are premise parameters. If these parameters change, the Gaussian curve will also change.
b. Layer 2: generate the firing strength of a rule that is by multiplying each input signal.

E. Control System for Guiding Robot to Target
In addition to controlling obstacle avoidance, this study also made control towards the target, which functions to control the robot to move towards a predetermined target. This control also uses ANFIS with an offline learning model. Data mapping uses two inputs and one output. The input used is the target angle and angular delta, while the resulting output is the angular velocity (omega). This output value is used by the robot to go to the target.

Data Training
As with obstacle avoidance control, the initial step taken in controlling the target is to map the input and output data. Input and output data mapping, as in Appendix 2, will also be trained using MATLAB to produce very small errors. As shown in Fig. 11, after data training is carried out, the smallest error generated is 0.0000000932358 in the second epoch.
In addition, data training also produces a FIS model with new premise parameters and consequence parameters. As in data mapping, the FIS training results produce angle inputs and angle deltas that have been modeled in the form of a membership function.
The target angle is divided into 3 membership functions with a value range of -25 to 25, as shown in Fig. 12

ANFIS Architecture Design
The design of the ANFIS architecture to control towards the target is almost the same as the obstacle avoidance control system architecture, only me if in the obstacle avoidance control system, each input has 5 membership functions, in the control system towards the target, each input has 3 membership functions.

IV. RESULTS AND DISCUSSIONS
This section discusses the results of several experiments and explains how successfully the system can function.

A. Obstacle Detection
Obstacle objects are pedestrians who are recognized by detecting the upper body, as shown in Fig. 14. The detection process uses haar-feature. An obstacle object (pedestrian) is caught by the camera. Then the object is marked with a box. Obstacle objects can be detected by the stereo vision system with the shortest distance of 130 cm and the longest distance of 300 cm. After the obstacle object has been identified, the marker box (detector) is not fixed in one place, the marker box moves or oscillates continuously even though the object is stationary. This means that the center point of the object also changes. If this is allowed, it will be very influential in the distance measurement process. To overcome this, filtering is carried out using a moving average against the midpoint of the object. Every ten midpoint values generated are stored in an array for filtering. As shown in Fig. 15, the moving average filter is good enough to overcome this.

B. Target Detection
The target object is a circle like in Fig. 16, which is detected using the Hough Transform. Just like detecting an obstacle object, the circle marker also continues to move or oscillate. This also greatly affects the measurement of the target distance. Therefore, the midpoint of the target detection is also filtered using a moving average. As shown in Fig. 17, moving averages are quite good at dealing with this.

C. Obstacle Distance Measurement
Obstacle distance measurements were tested in the range of 0 -300 cm. Based on test results, the distance to obstacle objects can be measured with the closest distance of 130 and the farthest distance of 270 cm. It can recognize objects. This is due to setting the size of the detector. If the detector is made very small, then when at a close distance, the object will not be recognized and vice versa. For this reason, the detector size is 200×200, with a minimum distance range of 130 cm and a maximum distance of 270 cm. As shown in Table IV

D. Target Distance Measurement
Target distance measurements were tested in the range of 80 -300 cm. Based on the test results as presented in Table  V, the distance to the target object was measured between 80 to 300 cm, and the minimum error occurred when the target distance was 80 cm and 240 cm with an error value of 0% and an error maximum at a distance of 280 cm with an error of 3.64%.

E. Control of Obstacle Avoidance Motion
Obstacle avoidance control tests were carried out 15 times with different obstacle positions. The test was carried out in an open corridor with the obstacle directly in front of the robot 5 times during the test, the obstacle was on the left front of the robot 5 times during the test, and the obstacle was on the right front of the robot 5 times the test.
The test was carried out in an open corridor area with a length of 400 cm and a width of 320 cm, as presented in Fig.  18. The robot starts moving from the Start line straight ahead. When there is an obstacle, the robot will shift left or right depending on the given Speed.
In testing with the position of the obstacle straight in front of the robot, the robot manages to avoid it by shifting to the right with varying speeds , even though the position of the obstacle object is the same, that is, it is directly in front of the robot, but the response speed is different, this difference is caused by Calculation of distance and angle of obstruction. Based on the tests carried out 5 times, the robot only failed to avoid obstacles caused by wheel skidding once, while in the other 4 tests, the robot managed to avoid them.
As shown in Fig. 19, in the first test, the robot detects an obstacle when the obstacle distance is 210.10 cm and the obstacle angle is 1.41 degrees. The robot begins to shift to the right by increasing the speed which was originally 0 to -200.62 mm/s when the obstacle distance is getting closer, namely 190 cm with an angle of 0.94 degrees. The robot increases the speed of which was originally -200.62 mm/s, to -202.19 mm/s when the obstacle distance is 158.79 cm with an angle of 1.21 degrees, the robot increases the speed of becomes -269.65 mm/s, the closer the obstacle is, the robot will continue to increase its speed , so that when the obstacle distance is 150.08 with an obstacle angle of 2.07 the robot still maintains a speed of -260.91, the robot's speed decreases because the obstacle angle becomes wider. In the end, if the obstacle distance is 0 and the angle is 0, then the robot will reduce the speed to 0. This means that the robot will walk straight ahead again. In this test, the robot successfully avoids obstacles.
In the second test, as shown in Fig. 20, the robot detects an obstacle when the obstacle distance is 210.10 cm with an angle of 0.78 degrees and produces a speed of -210.33 mm/s. The detection process in this test was better than the first one because the robot managed to detect obstacles when the obstacle distance was still far away. When the obstacle distance is 190 cm and the angle is 2.78 degrees, the robot gives a speed of -200 mm/s. When the obstacle distance is 173 cm and the angle is 3.60 degrees, the speed of the robot is -268.63. When the obstacle distance is 158 cm, and the angle is 4.8 degrees, the speed of the robot is -267.23 until the obstacle distance is 152.17 cm and the angle is 5.63 degrees, the robot's speed becomes -247.10, after that because the obstacle distance is 0 and the angle is 0, the robot reduces its speed to 0, and the robot returns to walking The response characteristics in the third test, as shown in Fig. 21, are almost the same as the first experiment. The robot detects obstacles when the obstacle distance is 158 cm, and the angle is 0.20 degrees with speed of -289.94 mm/s, when the obstacle distance is 156.52, and the angle is 1.10 the speed is -276.10, and when the obstacle distance is 154.31, and the angle is 2.62 the speed is -274.26, until when the obstacle distance is 150.08, and the angle is 3.24 the speed of is -271.76. On the third attempt, the robot managed to avoid obstacles. In the 4 th test, the robot failed to avoid obstacles. This was because the robot failed to detect an obstacle. When the robot begins to move forward, the robot's wheels slip, which causes the robot to always move obliquely to the left. That's why the robot cannot detect any obstacles because the robot's point of view has changed.
In the 5 th Test, as shown in Fig. 22, the robot detects an obstacle when the obstacle distance is 232.77 cm, and the obstacle angle is 1.6 degrees with a speed of -132.64 mm/s. When the obstacle distance is closer, namely 173.09 cm with an obstacle angle of 1.14 degrees, the robot increases the speed of to -312.45 mm/s. It will further increase to -404.67 mm/s. In the 5 th test, the robot managed to avoid obstacles. In testing with the obstacle positioned straight in front of the robot, the robot always dodges to the right with different velocities . Fig. 23 shows the trajectory of the test results, where the robot shifts to the right with an average shift width of 45.5 cm from the previous robot position. After testing with the obstacle position straight in front of the robot is complete, the next test is to change the position of the obstacle to the right of the robot. This test was carried out 5 times, where in this test, the robot managed to avoid it without even experiencing a collision.
As shown in Fig. 24, the 6 th test with the obstacle position in front of the right of the robot, the robot detects an obstacle with a distance of 190 cm and an obstacle angle of -4.09 degrees, the robot starts to shift to the left by increasing the speed from 0 mm/s to 221.86 mm/s, when the obstacle distance is 158.79 cm, and the obstacle angle is -4.01 degrees, the robot increases the speed of to 300.51 mm/s, until when the distance is 156.52 cm with the obstacle angle -4.44 degrees the robot maintains the speed of 297.35 mm/s, after that the robot returns walk straight ahead. In this test, the robot managed to avoid obstacles. Faikul Umam, Obstacle Avoidance Based on Stereo Vision Navigation System for Omni-directional Robot distance is 190 cm, and the obstacle angle is -5.65 degrees, the robot maintains a speed of of 228.06 mm/s until when the distance is 173.09 cm with an obstacle angle of -5.61 degrees, the robot increases the speed of to 339.93 mm/s, after which the robot continues to walk straight ahead. In this test, the robot managed to avoid obstacles. The 8 th test is shown in Fig. 26, the robot begins to detect obstacles at a distance of 258.62 cm with an obstacle angle of -7.56 degrees, so the robot begins to increase the speed of which was originally 0 mm/s to 69.33 mm/s. When the obstacle distance is 232.77 cm and the obstacle angle is -6.8 degrees, the robot increases the speed of to 166.91 mm/s. When the obstacle distance is 210.10 cm, and the obstacle angle is -7.41 degrees, the robot increases the speed to 245.70 mm/s. After that, the robot returns to moving straight in front. In this test, the robot managed to avoid obstacles. In the 9 th and 10 th tests, the response characteristics were almost the same as in the 6 th test. In the 9 th test, the robot began to detect obstacles when the obstacle distance was 173.09 cm and the obstacle angle was -7.09 degrees with a speed of 345.86 mm/s, whereas, in the in-10th test, the robot began to detect obstacles when the obstacle distance is 158.79 cm, and the obstacle angle is -4.48 with a speed of 302.69 mm/s. In the 9 th and 10 th tests, the robot also managed to avoid obstacles.
In testing with the obstacle position in front of the robot's right, the robot always dodges to the left at different speeds . Fig. 27 shows the trajectory of the test results, where the robot shifts to the right with an average shift width of 25.23 cm from the previous robot position. The next test is to change the position of the obstacle to the left of the robot. Testing with an obstacle position like this was also carried out 5 times, and in each test, the robot managed to avoid the obstacle. The characteristics of the response in testing with the obstacle position to the left of the robot are almost the same as the obstacle is straight in front of the robot, namely, the robot shifts to the right.
In the 11 th test, as shown in Fig. 28, the robot begins to detect obstacles at a distance of 190 cm with an obstacle angle of 8.52 degrees, then the resulting speed is -172.45 mm/s when the distance is 156.52 cm with an obstacle angle of 11.72 degrees, then the robot increases the speed of to -233.35 mm/s. After that, the robot moves forward again. In the 11th test, the robot managed to avoid obstacles.  Fig. 29, in the 12 th test, the robot begins to detect obstacles at a distance of 210.10 cm with an obstacle angle of 6.88 degrees, the given speed is -188.69 mm/s when the distance is 173.09 cm with an obstacle angle of 9.06 degrees, then the robot increases the speed of to -280.98 mm/s. After that, the robot moves forward again. In the 12 th test, the robot managed to avoid obstacles. In the 13 th test, as shown in Fig. 30, obstacles began to be detected at a distance of 232.77 cm with an angle of 7.81 degrees, and the robot began to increase the speed of by -107.71 mm/s when the obstacle distance was 210.10 cm and the angle of 7.62 degrees the robot increased the speed of to -109.13 mm/s, then when the obstacle distance is 173.09 cm with an obstacle angle of 8.48 as shown in Fig. 30, the robot continues to increase the speed of to -283.44 mm/s, after that the robot moves forward again. In this test, the robot managed to avoid obstacles. In the 14 th test, as shown in Fig. 31, the robot begins to detect obstacles when the obstacle distance is 190 cm with an obstacle angle of 8.55 degrees. Then the robot increases the speed of to -172.50 mm/s until when the obstacle distance is 158.79 and the obstacle angle is 8.83, the speed of increases become -250.31. After that, the robot moves forward again. In the 14 th test, the robot managed to avoid obstacles. The response characteristic of the 15 th test is almost the same as the 12 th test. Namely, the robot begins to detect obstacles when the obstacle distance is 210 and the obstacle angle is 5.00 degrees. At the same time, the robot increases the speed of to -196.32 mm/s. When the obstacle distance is 173.09, and the obstacle angle is 6.84, the robot increases the speed of to -296.92 mm/s, after which the robot moves forward again.
In testing with the position of the obstacle in front of the robot's left, the robot always dodges to the left at different speeds . Fig. 32 shows the trajectory of the test results, where the robot shifts to the right with an average shift width of 35.78 cm from the previous robot position.  Table VI, in the 15 tests, only once did the robot fails to avoid obstacles, namely in the 4th test, which was caused by wheel slippage. As shown in Fig. 33, the robot process avoids obstacles by shifting to the right or left depending on the given value. The average robot starts to dodge when the obstacle distance is 173 -150 cm with an average speed of 274 mm/s.

F. Obstacle Avoidance and Target Toward Motion
The next test is to combine obstacle avoidance control with control towards the target, as shown in Fig. 34. If the obstacle avoidance control that is controlled is the speed of the robot , then the control towards the target that is controlled is the angular velocity.
These two controls are integrated and tested 3 times, with the target position being right straight in front of the robot, the target in front of the right of the robot, and the target in front of the robot's left, while the position of the obstacle that comes also varies. Of the three tests, the robot managed to avoid obstacles and arrived at the target without experiencing a collision. Fig. 34. The robot process avoids obstacles and heads to the target As shown in Fig. 34, when the robot starts moving, what is calculated first is the target angle and the angle delta. If the target angle is not equal to 0, this means that the direction facing the robot the target is not straight. Therefore, the robot will adjust the direction toward the target until the target angle is equal to 0.
During testing, as shown in Fig. 35 (a), the first time the robot moves, the target angle is calculated. When the target angle reaches 22.53 degrees to the left of the robot, the robot will adjust the angular speed to rotate to the left by 22.53 degrees until the target angle is 0. After the angle of the object is equal to 0, this means that the direction the robot is facing is straight with the object. Thus, the robot will reduce the angular velocity to 0 and move straight again. The same thing is also done when the target is positioned at -22.53 degrees to the right of the robot. The robot will set the angular velocity to rotate to the right by -22.53 degrees until the target angle is 0. In essence, whatever the angle of the target, the robot will adjust the direction towards the target by how to adjust the angular velocity until the target angle is 0. The direction of the robot towards the desired target is 0 degrees, but in reality, on several tests, the robot can never reach that value. The value of the robot's direction towards the smallest target produced during the test is 0.03 degrees. If the target angle is 0, you can be sure that the target is being covered by a passing obstacle.
When the robot travels towards the target, as shown in Fig. 34 (b), the robot detects an obstacle with an obstacle distance of 232.77 and an obstacle angle of -0.38, so that the robot produces a speed of 140.70 mm/s. When the obstacle distance is 156.52, and the obstacle angle is -6.20, the robot increases the speed of to 340.22 mm/s. When avoiding obstacles, the robot still calculates the target's position so that the target does not disappear from the robot's view, meaning that both controls work simultaneously. As shown in Fig. 34 (c), after successfully avoiding obstacles, the robot returns to correct the direction towards the target so that the target angle returns to 0. Compared to previous research, this study has successfully been able to produce an obstacle avoidance method for obstacles moving like walking humans. Based on the research that has been done, the distance measurement process is obtained by determining the focal length and baseline divided by the difference in the midpoints of the two frames. To support the ability to avoid obstacles, it is important to improve the accuracy of the distance measurement to obstacles and targets. The largest error value for measuring the distance to an obstacle is 3.40% when the obstacle distance is 250 cm, while the biggest error for measuring the target distance is 1.39% when the target distance is 180 cm. The smallest error for measuring the Journal of Robotics and Control (JRC) ISSN: 2715-5072 240 Faikul Umam, Obstacle Avoidance Based on Stereo Vision Navigation System for Omni-directional Robot obstacle distance is 0.00% when the obstacle distance is 190 cm, while the smallest error for measuring the target distance is 0.00% when the target distance is 80 cm and 240 cm.
The trajectory of the robot will change when the robot identifies a target object based on the target angle and angle delta values, where these values are processed by ANFIS to generate angular velocity. The smallest value of the robot's direction towards the target during several tests is 0.03 degrees. When the robot detects an obstacle, the robot avoids it by shifting to the right or left depending on the speed of , the speed of is obtained from processing the distance and angle of the obstacle. The average robot avoids obstacles when the object is 173 -150 cm away with an average speed of 274 mm/s. While moving toward the target and moving to avoid obstacles, the robot's movements are very smooth. This is because the robot used in this study is a robot with omnidirectional wheels.
From the research results, this study contributes to improving the robot navigation system in obstacle avoidance of moving obstacles based on visual sensors by utilizing ANFIS. The research carried out still has a limitation. The drawback is that the forward direction speed or -axis speed is still done manually, so the robot does not care about the distance of objects that are far or near. The speed used remains the same. Supposedly if the object starts to get closer, then the speed of the forward direction starts to decrease little by little so that when evading the robot's movement, it is even smoother. For future research, control of the robot's speed is required to be controlled automatically.