OperativeCriticalPointBug Algorithm - Local Path Planning of Mobile Robot Avoiding Obstacles

For Autonomous Mobile Robot one of the biggest and interesting issues is path planning. An autonomous mobile robot should be able determine its own path to reach destination. This paper offers a new algorithm for mobile robot to plan a path in local environments with stationary as well as moving obstacles. For movable robots' path planning OperativeCriticalPointBug(OCPB) algorithm, is a new Bug algorithm. This algorithm is carried out by the robot throughout the movement from source to goal, hence allowing the robot to rectify its way if a new obstacle comes into the route or any existing obstacle changes its route. According as, not only the robot tries to avoid clash with other obstacle but also tries a series of run time adjustment in its way to produce roughly a best possible path. During journey the robot is believed to be capable to act in an unknown location by acquiring information perceived locally. Using this algorithm the robot can avoid obstacle by considering its own as well as the obstacle's dimension. The obstacle may be static or dynamic. The algorithm belongs to bug family.


I. INTRODUCTION
Autonomous Mobile Robot is a machine which has the capability to navigate in a complex environment without the requirement any kind of supervision from any device or human being. Robot path planning is the task of determining collision-free path during a robot travels from an initial position to a destination position in an unknown or partially known locality to accomplish its objective. This task involves a series of computation to generate a non colliding path. To accomplish fully independent navigating path planning is the one of the major criteria for mobile robots. It includes searching a geometric path from the origin location of the robot to the destination.
While discussing about path planning the property of environment or the locality where the robot will work is an important issue. Depending on the environment path planning can be categories in two type: 1) Static environment -where the obstacles are static or what we can say the whole environment is static in nature and 2) Dynamic environment -The environment is dynamic, means the object in the environment may be static or may be dynamic. In this dynamic environment path planning comes in two form a) Global path planning -where the information about the environment is known to robot before it starts moving and b) Local path planningwhere the robot doesn't have any information regarding the environment. This is sensory based path planning where the robot uses sensors to get information about the obstacles to avoid is and reach destination.
Moving obstacle avoidance at any time comes under dynamic path planning [1 -3]. Artificial Potential Field is one of the widely used techniques to avoid obstacle in dynamic environment [4,5]. There are many techniques given by many researchers to avoid dynamic obstacle and plan a new path. Md. Arafat Hossain and Israt Ferdous introduced bacterial foraging technique for path planning [6]. Dongsheng Zhou, Lan Wang and Qiang Zhang gave an idea of obstacle avoidance using ant colony algorithm [7]. In many cases of path planning the ultimate trajectory may not remain same as planned. The final path deforms while generating the trajectory [8]. This happens due to many reasons such as error in calculation of dimensions of robot itself and obstacles. During navigation it is necessary to consider the dimensions of the robot as well the obstacles, particularly when the functioning domain of the robot is complex. Robert L.Williams II and JianhuaWu gave an idea of Dynamic Obstacle Avoidance for an Omni directional Mobile Robot considering the dimensions [9]. Instead of obstacle avoidance Muhannad Mujahed et. al. uses collision avoidance approach using gap navigation [10]. How to plan motion for dynamic obstacles with Uncertain Motion Patterns is approached by Georges S. Aoude et. al. [11]. A mobile robot may have single or multiple trails with the main robot body (Snake Like). In those cases path planning are little bit complex [12 -14].
In this paper, we propose a bug algorithm for path planning in dynamic situation. This algorithm is influenced by several other bug algorithms [15 -20]. The projected algorithm is named as OperativeCriticalPoint Bug (OCPB). Using this algorithm a robot can reach to a particular destination point avoiding any moving and stationary obstacles considering its own dimension as a constraint with an aim to lessen the distance travel and time to arrive at target. The paper attempts to develop more the "Critical-PointBug Algorithm" [20] by proposing a scheme to keep away from both fixed and dynamic obstacles.

II. CRITICALPOINTBUG
The Bug algorithms are very well known, absolute and simple algorithms used in local path planning and mobile robot navigation with minimum sensors. . To accomplish its goal the robot uses as little global information as possible. The main logic is very simple: 1. move towards goal until an obstruction is revealed. 2. If there is obstruction then contour the obstruction until goal is once more achievable. 3. If goal point is visible move towards it again. In Bug family more than twelve different bug algorithms exist and each algorithm of which carries its own conncluding process. Names of Few bugs are Bug1, Bug2, Alg1, Alg2, DistBug, VisBug, TangentBug, Class1, Rev, Rev2, OneBug, LeaveBug, PointBug, K-Bug, Critical-PointBug etc.
The CriticalPointBug algorithm is used to keep away from static obstacles and move to the destination. As like other bug algorithms it also uses a direction line from source to destination, d min , for movement. The algorithm first scans the surrounding from 0 0 to 360 0 area by range sensor. If it does not identify any obstacle within its field of view (FOV) towards the target then it moves directly up to the radius length on direction line of destination. If obstacle exists it detects sub goal points and critical point to move towards destination. Sub goal points are the threshold points to move towards objective. There may the number of sub goal points more than one during a full scan. The robot chooses one of them as critical point which is having minimum distance from the destination and stores it in memory to move towards it. If the point is already visited then it selects sub goal point as critical point having second minimum distance from destination and save the point to move towards it. In this way it avoids obstacles and reaches at goal point.
The CriticalPointBug algorithm always avoids obstacles by finding and moving to a point which is closer to goal point than others and thus gives us an optimal path. The trajectories of CriticalPointBug and other bug algorithm is shown in Fig. 1. It is clear from the figure that how this algorithm performs better than other existing bug algorithms. Though this is an efficient algorithm but consists of some drawback also. The algorithm assumes robot as point robot. But in real world a robot may be 2D or 3D but must have dimension. It is local path planning in presence of obstacles which are static in nature. Currently proposed attempts to develop the algorithm and considers a robot with dimension. The algorithm is on local path planning avoiding static as  [20] well as moving obstacles. The algorithm is also developed from ModifiedCriticalPointBug algorithm which can be used to avoid dynamic obstacle but the robot is point robot. The OperativeCriticalPointBus algorithm uses reference from [20] to find the sub goal points and critical point for avoiding obstacles and move to the next point to reach at goal.

III. OPERATIVECRITICALPOINTBUG ALGORITHM
The algorithm is supposed to carry out on a robot named Activity Bot. The Activity-Bot is a compact, zippy robot which consists of a multi-core Propeller microcontroller along with great hardware. Here we are considering the robot in a 2D plane for simulation purpose. Let us assume a unbounded space Q ⊂ R 2 that contains a set of bounded stationary and moving obstacles O = {O 1 ,O 2 , . . .,O K }. We consider the robot in rectangular shape with wheel and other equipment as shown in Fig. 4. As per global frame of reference the robot knows its initial coordinates. Before going in to the full discussion of the algorithms, we consider few essential and helpful assumption and description for this algorithm which are referenced from [20]. A. Assumption A1. World co-ordinate system is used A2. All points (including source and destination) are at first quadrant A3. The velocity and angular velocity of robot is constant in every movement and rotation respectively A4. Surface is smooth and in same altitude A5. The mobile robot travel in a two-dimensional area and rotates without slipping A6. Both the robot and dynamic obstacles are run in constant speed and in straight line. If anyone wants to change direction it has to stop then turn then again start moving We plot the robot and the obstacle in 2D plane and assume a virtual circle surrounding the robot. Centre of the virtual circle is located at the midpoint of the two farthest points of the robot and the radius is half between the two farthest points of the robot+ where  is a safety constant. The minimum value of  can be obtained from few number of experiments. Fig. 4 shows the plotting and other required geometrical details. .,(x j ,y j ))} as a set of provisionaly identified obstacles where each ((a i ,b i ),…(a j ,b j )) are the set of points of each obstacle. S obs = {((a i ,b i ),…(a j ,b j )),…..,((x i ,y i ),..,(x j ,y j ))} as a set of stationary obstacles where each ((a i ,b i ),…(a j ,b j )) are the set of points of every stationary obstacle. TD obs = {((a i ,b i ),…(a j ,b j )),…..,((x i ,y i ),..,(x j ,y j ))} as a set of provisionaly dynamic obstacles where each ((a i ,b i ),…(a j ,b j )) are the set of points of each temporary dynamic obstacle. D obs = {((a i ,b i ),…(a j ,b j )),…..,((x i ,y i ),..,(x j ,y j ))} as a set of moving obstacles where each ((a i ,b i ),…(a j ,b j )) are the set of points of each moving obstacle. D= {((x a ,y a ),δ a ) ,…, ((x j ,y j ),δ j )} as a set of sub goal points and distance from target of that point where each set ((x a ,y a ),δ a ) represents the set of sub goal point and their distance from target Here d min is the distance from the robot to goal point and  is the direction of the same. P C is the position where the robot may collide with the obstacle and the distance from current position of robot to the point of collision is D C .
In Cartesian space we can represent the robot state as q=[x, y, , v, t] T , where (x, y) are the coordinate of center, robot's angular velocity, the speed of the mobile robot is v and t is the time.
C. Algorithm 1) MAIN Procedure 1. Robot Start 2. Take input of the position co-ordinates of source and destination 3. Calculate the distance and direction from source to destination d min and  respectively 4. WHILE not Destination 5.
IF obstacle or virtual obstacle in direction 7.
Calculate the coordinates of sub goals from OP, don't calculate same set from OP twice and save it in set SG and D 8.
Calculate distance of each sub goal from destination and save it in set D 9.
Select the coordinate point P having the lowest distance in D 10.
IF the point exists in Traverse point set T 11.
Discard the point 12.
Select the next lowest distance point P from D 13.
Follow Select the sub set from OP that corresponds to P 3.
IF it is first sub set 4.
Select the second sub set from previous set from OP 5. ELSE 6.
Select the first sub set from next set from OP 7.
Calculate the distance Sd between two sub sets 9. ELSE 10.
Select the two points from OP having minimum distance from P 11.
Calculate the distance Sd between two points 12. END IF 13. IF Sd < 2r 14.
RETURN not safe 17. ENDIF

D. Algorithm Study And Analysis
The foremost purpose of the algorithm is to produce an uninterrupted path from initial to end points and these points remain fixed for any particular case. When the mobile robot starts to traverse through the environment, it will start bearing in mind unidentified stationary obstacles. The general observation of avoiding an unidentified stationary obstacle as per [20] is shown in Fig 1. This algorithm tries to avoid dynamic obstacle also. Not only that unlike algorithm of [20] and its next other algorithm this algorithm considers the robot as a whole body not a point robot and then avoid the obstacles using safety precaution. Fig 6. shows how a robot can be considered under a virtual circle for obstacle avoidance. Every obstacle, it may be dynamic or static, but is static at a particular point of time. After small time t, if the position of an obstacle remains same then it is static otherwise dynamic. Anticipating the probable position of contact with dynamic obstacle from its direction and speed and then using proper action for avoidance is necessary in dynamic environment. Fig 10 and  Let an open point is detected by sensor at angle α. As per [20] β i = (α +β i-1 )%360 x i+1,j = x i +d k cosθ(x s ) y i+1,j = y i +d k sinθ(y s ) (1)   After generating the next coordinate point to move the virtual circle's centre, the wheel axel centre of the robot will turn and start moving towards that point. According to Fig 4 A is the wheel axel centre. Q should be the next virtual circle centre. If (Ax,Ay) be the next coordinate of wheel axel centre A and AC is the distance between wheel axel centre and virtual circle centre then,

 
Now the robot will calculate the angle to rotate to the next coordinate from current coordinate of wheel axel centre and then move directly.
Using the stated method the robot will safely avoid static obstacles. But in case of dynamic obstacles is has determine the speed of the running obstacle by capturing the location of two different time t n+1 and t n where t=t n+1 -t n . Therefore, obs t+1 t  where O t+1 ,O t and v obs are Obstacle locations at moment t n+1 and t n and speed of the running obstacle respectively. Since the direction of obstacle and robot fixed (as per A7) so the calculating the conflicting point (P C ) is possible. The algorithm will consider the area of probable collision as a virtual obstacle. If P R (rx n+1 ,ry n+1 ) be present location of the robot at t n+1 . Then, Where (Cx,Cy) is the coordinate value of P C . Using value of D C then robot then determines, The velocity of robot is v. R TC and O TC are the time the robot and running obstacle will take to arrive at colliding point respectively. R TC and O TC equal means they will take same time to reach at same point P C in near future.
So the point will be denoted as virtual obstacle and changed trajectory will be formed with safety precaution as shown in  Where DOT is the time taken to detect moving obstacle and its direction of movement and speed

IV. SIMULATION RESULTS AND ANALYSIS
The Fig 12 shows the simulation model of the OperativeCriticalPointbug algorithm and how it avoids static as moving obstacle. There are eight different snap shots of different moments. The rectangular shaped gray coloured object is moving obstacle and green rectangular objects are static obstacles. The algorithm is modelled using Python 3.5 on windows 7 platform. Intel core i3-2350@2.30 Ghz Laptop with 2 GB RAM is used. The orange circle at the top and red circle at the foot are the target and source points respectively. The d min is shown by red line. Black line are the path the robot traversed through.

V. CONCLUSIONS AND FUTURE WORK
This paper is a continuation of its two previous work. The main objective is building a simple sensor based algorithm on local path planning. The algorithm tries to consider the constraints of robots' dimension. Using this bug algorithm very little prior information is required for the robot to complete task.
The safety point calculation makes the algorithm more efficient. It helps the robot to pass through small gap as well also to avoid the gap which is too small to pass through. If the environment is not much complex or the number of obstacle is very few, then this algorithm and other existing algorithm may take almost same time.
Few favorable points of this algorithm are: a) other than thos which may cause collision, it never considers the entire obstacles for avoidance. (b) Uses efficient technique to calculate coordinates of points. (c) The algorithm requires only source and destination coordinates to complete task. (d)Number of iteration is less to reach the goal In the future, the algorithm will be used for real test. Further it will be studied on path planning on snake like robot and path planning of multiple robots in one environment.