Thursday 27 July 2017

A New Multi Bug Path Planning (MBPP) Algorithm


Hello there, 

in this post, I will introduce you to a new algorithm which I termed as "Multi-Bug Path Planning Algorithm" dubbed as MBPP for planning an optimal (best) path in a given (known) static environment. 

If you are referring MBPP algorithm in any of your paper, please use the following citation :

Bhanu Chander V, Asokan T and Ravindran B,
"A new Multi-Bug Path Planning algorithm for robot navigation in known environments," 2016 IEEE Region 10 Conference (TENCON), Singapore, 2016, pp. 3363-3367. doi: 10.1109/TENCON.2016.7848676
URL: IEEE Xplore link


Related Works

In the field of Artifical Intelligence, there are plenty of path planning algorithms ranging from heuristics to several algorithms like Genetic Algorithm etc. Most well known of all being 'A*' read as A-star. In the literature of path planning, several variants of A* have been successfully implemented. A very good online blog for learning the theory (and implementation guide) of A* algorithms, along with other related basics is available in Amit page on Games and Algorithms

In spite of the improved performances, A* variants still employ the fundamental A* concepts i.e. they still need CLOSED  and OPEN lists in order to construct a path, to avoid revisiting of states as well as to expand the next node (while planning) by sorting the list using costs and heuristics. These lists consume memory, especially when the search space is large. Pruning (reducing the size) of OPEN and CLOSED lists are always a concern in Artificial Intelligence studies. Although many researchers came up with several A* pruning techniques, still not much work on applications of pruned A* methods for robotics has been found.

My work puts forward a new global path planning algorithm that uses approaches similar to bug algorithms. Proposed algorithm (MBPP) eliminates the need for OPEN and CLOSED lists. This algorithm basically takes greedy actions in the search space. Greedy behaviour of algorithms often results in the problem of getting stuck in local optima. But my proposed method uses conditions to move from greedy to non-greedy behaviour as and when required thereby eliminating the danger of giving local optimal results.

Advantages of MBPP Over A*
  • Expands only relevant grid cells
  • Avoid lists
  • Adapt Re-planning
  • Have multiple paths
  • Applicable for off-line and on-line path planning

The biggest advantage of MBPP is its nature of being adaptable to online planning (planning when the robot is on the go). Currently, my focus is on offline (when path planning is done before the robot moves) only but I anticipate the extension of this work to the online case too.


MBPP (Multi Bug Path Planning) Procedure

It's better to discuss the algorithm with a case study example. Let me consider an environment with two obstacles. Given Start state and goal state in the environment, the algorithm initially set a straight path (as shown in Fig.1) between the two considering no obstacles. Calling this as m-line hereafter.

Fig. 1

Now, the beautiful part of MBPP lies in the assumption that the search progress (movement of algorithm from state to state) is assumed as the movement of a virtual bug. The bug continues to move along the m-line and let us say it encounters an obstacle in its path as shown in Fig. 2. Denoting this bug as b1  

Fig. 2

Once, the bug hits an obstacle, it now gives birth to a new bug. Now, the parent bugs move along the wall while the child bug also moves along the wall (wrapping) but in the opposite direction, Let the second bug be b2. This is shown in Fig. 3.

Fig. 3

Wall following of the original bug (calling it parent bug) and the newly generated bug (calling it child bug) continues. As the bugs wraps around and it continues until any bug meets the m-line. In this example, b2 meets the m-line first. Let us call this state of m-line adjacent to the wall as L1, representing leave 1 state. After the bug reached the line, it stops wall following but now moves along the m-line. The other bug (bug b1) continues wall following until it reaches m-line. Now, since this state has already been left by b2, so, b1 stops moving any further and waits at this L1 state as shown in Fig. 4.

Fig. 4

b2 continues along the m-line, and say let it encounters another obstacle as shown in Fig.4. Now, at this new state, b2,. now gives birth to a new virtual bug (b3) and both continue to follow the wall as we saw previously (wrapping around the wall).

Fig. 5

Let us say b3, after wall following meets the m-line first than b2, then it stops wall following but moves along m-line and reaches the goal as shown in Fig. 6. Meanwhile, b2 follows the wall and meets the leave state (say L2 adjacent to the wall near to the m-line). But since b3 already left this state, b2 waits at this L2 state.
Fig. 6

Finally, as all the bugs either reaches goal, or waits or get terminated, the algorithm stops. Now, the notion of virtual bug movement is to note down the important corners around the obstacles. For our example, the important corners identified are shown in Fig. 7

Fig. 7

Using the identified corners, MBPP algorithm can now identify all the possible yet feasible paths that a robot can take as shown in Fig. 8.

Fig. 8

Out of which, a feasible path will be chosen and the rest paths will be saved for any future use (if in case while the robot is moving actually in real time and finds any dynamic obstacle, then it can choose to switch to the nearest alternate route or plan a route to the nearby corner identified earlier).

Fig. 9

Now, apart from the regular bug movement, at each step, a line-of-sight check will be performed between the previously identified corner and the current state. Line-of-sight (LOS) check is just a check to verify whether there is a sight (with no disturbances) from the previous corner to the current state. If in case at any state, LOS returns that the sight is not clear, then the previous state will be noted in the memory of list of corners for that bug.  This is shown in the next four figures. 




Fig. 10-13

A very interesting phenomena exhibited by MBPP is, if say in case the robot moves in the real world (actually) performing the navigation task, and if it encounters an obstacle not visible in the map, then, instead of doing a complete search from the start, MBPP tries to find the interesting corners around the identified obstacle and plans the alternate path accordingly.

Fig. 14

Fig. 15

MBPP Consitions 

Apart from that, MBPP needs some conditions to determine when to terminate a bug, when the bug waits and when to leave the wall following behaviour. These are dealt in detail in the paper.

C1: Termination condition
C2: Leaving condition
C3: Waiting condition

MBPP Properties 

  1. MBBP is Correct
  2. MBPP is complete
  3. No two bugs travel in the same direction
  4. Bugs generation are bounded, no infinite looping
You can get the complete code in my GitHub repository 


If you are referring MBPP algorithm in any of your paper, please use the following citation :

Bhanu Chander V, Asokan T and Ravindran B,
"A new Multi-Bug Path Planning algorithm for robot navigation in known environments," 2016 IEEE Region 10 Conference (TENCON), Singapore, 2016, pp. 3363-3367. doi: 10.1109/TENCON.2016.7848676
URL: IEEE Xplore link


1 comment:

  1. How does the bug identify that there is a corner? Thanks in Advance.

    ReplyDelete