**4.2 Logistics of visibility graph formulation: Our model**

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

conceptualized from the point of view of a] disposition of the obstacles (i.e. planar or spatial) and b] kinematics of the manipulator (i.e. its degrees-of-freedom). Following

Fig. 19. Schematic of the robotic path planning scenario using Configuration Space approach In fact, the methodologies to be adopted for different situations of robot path planning vary significantly and those depend on the task-space nature (i.e. planar or spatial) and the robot kinematics (i.e degrees-of-freedom). Besides, the 3D path planning is also dependent upon the nature of the slices produced from the task-space. Those can be identical in nature or non-identical. Table 4 presents the scenario, highlighting the methods used for the collision-

**Parameter COLLISION-FREE PATH PLANNING** 

**Robot Type** D.O.F. = 2 D.O.F. > 2 D.O.F. = 2 D.O.F. > 2

**Identical Slice** 

a] Sliced C-space Maps b] V-graph based Paths & c] Final Path

Table 4. Illustrative Summary of the Methods Used for Collision-free Path Planning of

**Non-identical** 

a] Sliced Cspace Maps b] V-graph based Paths

*Intersection* of the Feasible Paths

**Identical Slice** 

a] (Multiple) C-space Maps b] Most Significant C-space Map & c] V-graph for each slice & d] Final Path

**Nonidentical Slice** 

a] (Multiple) C-space Maps b] Most Significant C-space Map & c] V-graph for each slice & d] *Union*  of the Feasible Paths

**Slice** 

&c]

**Task-space** 2 D [Planar] 3 D [Spatial]

a] (Multiple) C-space Maps b] Most Significant C-space Map & c] Vgraph

checker-box illustrates the situation pictorially (refer fig. 19).

free path planning,

a] Cspace Map & b] V-graph

**Method Used for Path Planning** 

Robots

The workspace of the robot has been modeled by formulating the *Visibility Matrix* of the *visibility graph*6 of the cluttered environment. This matrix has been conceived as a kind of 'adjacency' relationship and framed by knowing the necessary visibility information about the nodes of the graph. Figure 21 illustrates the visibility matrix, [Vij], as developed from the environment shown in fig. 20, which depicts a typical sub-visibility graph, generated out of several polygonal obstacles known a-priori (i.e. with pre-fixed locations).

Fig. 20. A representative sub-visibility graph in two dimensions

The matrix is of the order (N + 2) x (N + 2), 'N' being the total number of intermediate nodes of the graph. The full matrix is formed by adding the 'start' (S) and 'goal' (G) nodes, making [V ij] a square matrix. Each row of [Vij] gives the visibility information of that very node. For example, the fifth row of the matrix signifies that the node no. 4 (considering 'S' as the first node) can 'see' nodes 5, 6, 8, 16 & 21 only.

<sup>6</sup> In order to reduce computational burden, 'Sub-visibility Graph' technique has been adopted in the present study. It considers only those obstacles in the robot workspace, which collide directly with the M-line.

Spatial Path Planning of Static Robots Using Configuration Space Metrics 441

aij = 0 j i

ai1 = 0 i

 aNj = 0 j (22) iv. For simplicity in computation, the original square matrix [Vij] of order (N+2) has been truncated to a square matrix of order (N+1), by deleting the first column and the last row. Since all the elements of these row and column are zero as per proposition, this modification will not alter the final result. Obviously, structure of this reduced matrix depends on the modeling of the robot environment and the total number of nodes

v. It has been found from the composite evaluations that the total number of computations required for the path planning algorithms is slightly less than O (N2), 'N' being the total number of nodes in the visibility graph, corresponding to the workspace under

vi. Essentially the visibility matrix reduces to the following structure in its most practical

0000

00 0

*ddd*

*d d d*

> *d d*

Ci (aij \*) (23)

dk (24)

0000 0 00000 00000 000000

where, 'd' signifies the locations for non-zero entry. The left triangular matrix will be zero in a majority of cases, alongwith the diagonal elements. However, the visibility matrix may include some non-zero entries too corresponding to 'sculptured obstacles' with multiple vertices. With this structure of [Vij], which is time-optimized, the nodal

[Vij ] =

{Lij} =

1

where, {Lij} is the nodal line vector, (aij \*) is the non-zero [aij ] and Ci (aij \*) is the cardinality of aij \*. For example, Ci (aij \*) for the 'S' node (i.e. the first row of [Vij] with i =

In addition, the total number of imaginary lines in the visibility graph can be computed

1

*k N*

*k*

vii. A quick estimation of the computational time for the algorithmic path planning using a

*i*

{Lij\*} = {Lij} -

finalized visibility graph of the robot workspace reveals the following:

where, 'dk' is the number of edges of the kth. obstacle.

*i N*

present.

investigation.

lines can be computed as:

1) becomes 2.

as:

form, viz.:


Fig. 21. The visibility matrix developed from the environment shown in fig. 20

Features of the visibility matrix are listed below:

i. Nodes are numbered in ascending order from 'S' to 'G' maintaining counter-clockwise sense for each obstacle. Backtracking of the nodes is not allowed. Symbolically, if 'nr' is the particular node under consideration which can see nodes nj1, nj2,..........., njp,...., njk then:

#### nj1 > nr

and

$$
\mathbf{n}\_{\mathbb{P}^1} \le \mathbf{n}\_{\overline{\mathbb{P}}} \le \mathbf{N} \tag{21}
$$

where 'njp' is any general node of the graph, *visible* by the node 'nr' and 'N' is the goal node of the nodal series, namely 1,2,3,........,N.


$$\mathbf{a}\_{\overline{\mathbf{q}}} = \mathbf{0} \text{ or } \mathbf{j} \text{ , } \forall \text{ j} \ge \mathbf{i}$$

 80 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 0 16 17 0 0 0 21 0 0 0 0 16 0 0 0 0 0 0 0 0 0 0 17 0 0 0 21 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 18 0 0 0 0 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 23 0 0 19 0 0 0 0 0 0 0 0 0 0 0 0 0 20 0 22 23 0 0 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 22 23 24 0 21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 23 24 0

22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23

Fig. 21. The visibility matrix developed from the environment shown in fig. 20

Features of the visibility matrix are listed below:

node of the nodal series, namely 1,2,3,........,N.

with any specific obstacle geometry in any form.

expressed mathematically as:

 24 0 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

000000000 0 0 0 0 0 0 0 0 0 0

i. Nodes are numbered in ascending order from 'S' to 'G' maintaining counter-clockwise sense for each obstacle. Backtracking of the nodes is not allowed. Symbolically, if 'nr' is the particular node under consideration which can see nodes nj1, nj2,..........., njp,...., njk

nj1 > nr

 nr-1 njp N (21) where 'njp' is any general node of the graph, *visible* by the node 'nr' and 'N' is the goal

ii. Numbering of nodes is exhaustive and independent of the obstacle nomenclature. In other words, 'njp' is invariant to obstacle number and also does not have any correlation

iii. The entire matrix has got two parts symmetrically disposed off by the diagonal. Because of the reason stated earlier, the generalized element, 'aij' of [Vij], which signifies the visibility information of the jth. node as *viewable* with the ith. node as *viewer*, and can be

aij = 0 or j , j i

*G G*

7 0 0 0 0 0 0 0 0 8 16 17 1

*S* 

> 

*G*

then:

and

 

1 2 3 4 5 6 7 8 16 17 18 19 20 21 22 23 24 012000000 0 0 0 0 0 0 0 0 0 0 1 002040000 0 0 0 0 0 0 0 0 0 0 2 0 0 0 3 0 0 0 0 0 0 0 18 0 0 0 0 0 0 0 3 0 0 0 0 4 0 6 7 0 0 17 18 0 0 0 0 0 0 0 4 0 0 0 0 0 5 6 0 8 16 0 0 0 0 21 0 0 0 0 5 0 0 0 0 0 0 6 0 8 16 0 0 0 0 21 0 0 0 0 6 0 0 0 0 0 0 0 7 0 0 17 18 0 0 0 0 0 0 0

*S G*

$$\mathbf{a}\_{\overline{\mathbf{i}}} = \mathbf{0} \,\,\forall \,\,\mathbf{j} \in \mathbf{i}$$

$$\mathbf{a}\_{\text{il}} = \mathbf{0} \,\,\forall \,\,\mathbf{i}$$

$$\mathbf{a}\_{\text{N\'}} = \mathbf{0} \,\,\forall \,\,\mathbf{j} \tag{22}$$


$$\begin{aligned} \text{[Vii]} \ \text{ ]} = \begin{bmatrix} 0 & 0 & d & d & d & 0 \\ 0 & 0 & 0 & 0 & d & d \\ 0 & 0 & 0 & 0 & d & 0 \\ 0 & 0 & 0 & 0 & 0 & d \\ 0 & 0 & 0 & 0 & 0 & d \\ 0 & 0 & 0 & 0 & 0 & 0 \end{bmatrix} \end{aligned} $$

where, 'd' signifies the locations for non-zero entry. The left triangular matrix will be zero in a majority of cases, alongwith the diagonal elements. However, the visibility matrix may include some non-zero entries too corresponding to 'sculptured obstacles' with multiple vertices. With this structure of [Vij], which is time-optimized, the nodal lines can be computed as:

$$\{\text{Lij}\} = \sum\_{i=1}^{i=N} \quad \text{C}\_{\text{i}} \left( \mathbf{a}\_{\text{i}\dagger} \,\text{\*}\right) \tag{23}$$

where, {Lij} is the nodal line vector, (aij \*) is the non-zero [aij ] and Ci (aij \*) is the cardinality of aij \*. For example, Ci (aij \*) for the 'S' node (i.e. the first row of [Vij] with i = 1) becomes 2.

In addition, the total number of imaginary lines in the visibility graph can be computed as:

$$\{\text{L.ij}^\*\} = \{\text{L.ij}\} \text{ - } \sum\_{k=1}^{k=N} \quad \text{d}\_k \tag{24}$$

where, 'dk' is the number of edges of the kth. obstacle.

vii. A quick estimation of the computational time for the algorithmic path planning using a finalized visibility graph of the robot workspace reveals the following:

$$
\pi \propto \{ \text{Lij} \} \text{ or } \{ \text{Lij}^\* \} \tag{25}
$$

Spatial Path Planning of Static Robots Using Configuration Space Metrics 443

8. Compute: { x\_j } = { Ang ( SG, XVx\_j ) }, where x < j N, 'N' being the total number of

9. Go on searching likewise till 'G' occurs and finally note the nodes of the optimal path,

The concept of discretization of robot workspace in preferential 2D slices has been applied for generating safe path in a spatial manifold. As a result, multiple c-space slices are generated depending upon the features of the individual slices. Safe paths are then determined, using the *Angular deviation algorithm*, separately for each such c-space slice produced. Thus, if a spatial workspace is segregated in 'k' slices, then there will be 'k' cspace slices also. Figure 22 schematically presents the view of the *sliced c-space maps* for a

**4.4 Paradigms of path planning in 3D space for two degrees-of-freedom robots** 

Fig. 22. Schematic view of the sliced c-space maps for a two degrees-of-freedom robot

It may be noted that we need to generate *c-space slices*, as shown in fig. 22, for all the slices equally since our c-space mapping algorithms are in 2D and those are based on planar collision avoidance principles concerning *Point*, *Line* & *Circle* obstacles. Since the total number of slices for a specific environment is fixed a-priori, it may so happen that a particular slice of an object is not falling under the obstruction zone of the robot. In that case, that particular slice of that object will not appear in the corresponding c-space slice (e.g. refer jth. slice c-space map of fig. 22, wherein the slice for obstacle 3 is absent). Nonetheless, the axiom followed is *if the last slice of any obstacle is collidable, then all its previous slices ought* 

Once the requisite c-space slice maps are generated, we need to evaluate the *safe* paths in each of these sliced c-space maps using the visibility-based Angular deviation algorithm. Thus a set of paths will be obtained and the cardinality of the set will be equal to the number of slices. Finally we will take the *intersection* of the possible paths, as only intersection set

7. Begin the next level of search from the xth. node with min.( S\_x ).

**4.4.1 Model for C-space slices and path generation** 

6. i = i + 1.

nodes in the graph.

so achieved.

known environment.

workspace

*to be. But the vice-versa is not true.* 

where, '' is a factor representing the computational time and the memory requirement factor, say , will be as follows:

$$
\xi \propto \{ \text{Lij \*} \}\tag{26}
$$

Also the range of '' may be estimated for all practical computational situations as,

$$\bullet \bullet (\aleph) \lhd \mathfrak{r} \le \bullet (\aleph^{\mathfrak{N} \heartsuit 2}) \tag{27}$$

It is to be noted that the lower bound of '' is certainly beyond O (N), while the upper bound can marginally reach O as 'N' tends to some larger value.

Regarding circular obstacles in 2D plane, a trade-off has been attained between the approximation to the nearest polygonal shape and the computational burden. For example, a perfectly circular-shaped object can be approximated with a circumscribing square-shaped object, but it will be about 80 % less efficient in comparison to an approximation with an octagonal shape. Hence, the decision for the optimal selection for approximation for a circular obstacle remains with the overall complexity of the visibility graph, i.e. essentially the value of 'N' generated thereby.

#### **4.3 Development of the path planning algorithm in 2D plane**

The new heuristic algorithm, namely, Angular Deviation Algorithm, has been developed to obtain near-optimal path for the manipulator amidst obstacles in a planar workspace. The formulation of the heuristics and subsequently the solution phase are based on A\* search technique, in general. Following legends have been used in formulating the algorithm.

S: The 'start' location of the robot end-effector (in Cartesian or C-Space);

G: The 'goal' location of the robot end-effector (in Cartesian or C-Space);

*SG* : The imaginary line joining 'S' and 'G';

LM-Line: The geometric length of the imaginary line joining 'S' & 'G', i.e. the 'M-Line';

x : An intermediate level in the graph search process;

Vx\_j : jth. visible node from xth. node in the visibility graph;

*x* Vx\_j : The nodal line, joining the xth. node and the jth. visible node (from xth. node);

i : Iteration number of the graph search process.

This algorithm relies on *angular deviation* as the necessary computing heuristic, which is inbuilt in nature. It considers each line-segment, { lij }, where, lij { l }, joining the nodes, say, ni and nj, where (ni , nj ) { n }, i , j I, of the sub-visibility graph and computes the angular deviation of that { lij } with respect to the M-line. The logic of this algorithm is to minimize the Angular Heuristic Function, as generated from the angular deviations, at each level of searching. Hence, in a cluttered environment the near-optimal path can be chosen by considering only those line-segments, which are comparatively closer to the M-line. Steps:


Else,

6. i = i + 1.

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

where, '' is a factor representing the computational time and the memory requirement

Also the range of '' may be estimated for all practical computational situations as,

It is to be noted that the lower bound of '' is certainly beyond O (N), while the upper

Regarding circular obstacles in 2D plane, a trade-off has been attained between the approximation to the nearest polygonal shape and the computational burden. For example, a perfectly circular-shaped object can be approximated with a circumscribing square-shaped object, but it will be about 80 % less efficient in comparison to an approximation with an octagonal shape. Hence, the decision for the optimal selection for approximation for a circular obstacle remains with the overall complexity of the visibility graph, i.e. essentially

The new heuristic algorithm, namely, Angular Deviation Algorithm, has been developed to obtain near-optimal path for the manipulator amidst obstacles in a planar workspace. The formulation of the heuristics and subsequently the solution phase are based on A\* search technique, in general. Following legends have been used in formulating the algorithm.

bound can marginally reach O as 'N' tends to some larger value.

**4.3 Development of the path planning algorithm in 2D plane** 

S: The 'start' location of the robot end-effector (in Cartesian or C-Space); G: The 'goal' location of the robot end-effector (in Cartesian or C-Space);

LM-Line: The geometric length of the imaginary line joining 'S' & 'G', i.e. the 'M-Line';

*x* Vx\_j : The nodal line, joining the xth. node and the jth. visible node (from xth. node);

considering only those line-segments, which are comparatively closer to the M-line.

3. Compute: S\_1 = Ang ( SG, SVS\_1); S\_2 = Ang (SG, SVS\_2 ),.......... S\_p = Ang (SG, SVS\_p.).

2. For i=1, loop starts with 'S': note VS\_1, VS\_2, ................, VS\_p.

This algorithm relies on *angular deviation* as the necessary computing heuristic, which is inbuilt in nature. It considers each line-segment, { lij }, where, lij { l }, joining the nodes, say, ni and nj, where (ni , nj ) { n }, i , j I, of the sub-visibility graph and computes the angular deviation of that { lij } with respect to the M-line. The logic of this algorithm is to minimize the Angular Heuristic Function, as generated from the angular deviations, at each level of searching. Hence, in a cluttered environment the near-optimal path can be chosen by

factor, say , will be as follows:

the value of 'N' generated thereby.

*SG* : The imaginary line joining 'S' and 'G';

x : An intermediate level in the graph search process; Vx\_j : jth. visible node from xth. node in the visibility graph;

i : Iteration number of the graph search process.

1. Initialize the search with i=1.

5. If VS\_p. = 'G', then stop.

4. Check: min. ( S\_1 , S\_2 ,............, S\_p ).

Steps:

Else,

{Lij } or {Lij\*} (25)

{Lij \*} (26)

O (N) < (27)


#### **4.4 Paradigms of path planning in 3D space for two degrees-of-freedom robots 4.4.1 Model for C-space slices and path generation**

The concept of discretization of robot workspace in preferential 2D slices has been applied for generating safe path in a spatial manifold. As a result, multiple c-space slices are generated depending upon the features of the individual slices. Safe paths are then determined, using the *Angular deviation algorithm*, separately for each such c-space slice produced. Thus, if a spatial workspace is segregated in 'k' slices, then there will be 'k' cspace slices also. Figure 22 schematically presents the view of the *sliced c-space maps* for a known environment.

Fig. 22. Schematic view of the sliced c-space maps for a two degrees-of-freedom robot workspace

It may be noted that we need to generate *c-space slices*, as shown in fig. 22, for all the slices equally since our c-space mapping algorithms are in 2D and those are based on planar collision avoidance principles concerning *Point*, *Line* & *Circle* obstacles. Since the total number of slices for a specific environment is fixed a-priori, it may so happen that a particular slice of an object is not falling under the obstruction zone of the robot. In that case, that particular slice of that object will not appear in the corresponding c-space slice (e.g. refer jth. slice c-space map of fig. 22, wherein the slice for obstacle 3 is absent). Nonetheless, the axiom followed is *if the last slice of any obstacle is collidable, then all its previous slices ought to be. But the vice-versa is not true.* 

Once the requisite c-space slice maps are generated, we need to evaluate the *safe* paths in each of these sliced c-space maps using the visibility-based Angular deviation algorithm. Thus a set of paths will be obtained and the cardinality of the set will be equal to the number of slices. Finally we will take the *intersection* of the possible paths, as only intersection set

Spatial Path Planning of Static Robots Using Configuration Space Metrics 445

rbase = (b\_max. - b\_min.) (28)

In situations where more than one slice is possible for a particular obstacle, two cases can

If S w, then 'slice' is possible and co-ordinates of the intercept of the slices are given by,

xint\_1 = x1 + [ l tan i / ( l/d) ] [ 1 + ( l/d )] (31)

yint\_1 = y1 + [l tan i / ( l/d) ] [ 1 + ( l/d )] (32)

xint\_2 = x2 + [l tan i / ( l/d) ] (33)

 yint\_2 = y2 + [l tan i / ( l/d) ] (34) where, (xint\_1, yint\_1 ) and (xint\_2 , yint\_2 ) are one set of co-ordinates corresponding to one slice. With i varying within its range with an increment of S, the other set of slice co-ordinates

l = [ ( x2 - x1 )2 + ( y2 - y1 )2 ]1/2 (29)

in = tan-1 [ | ( y2 - yb ) / ( x2 - xb ) | ] (35)

d ( S / 180 ) > w (30)

Fig. 24. Schematic representation of the dimensional metrics of a 2D 'Slice'

The range of base rotation is computed as,

**Case I: Robot base is in-line with the obstacle** 

In this case, let S = d (i / 180) , where <sup>S</sup> <sup>i</sup> rbase .

**Case II: Robot base is not in-line with the obstacle** 

Length of the 'edge' of the obstacle is,

Now, only one slice is possible, if,

appear.

will be obtained.

In this case,

will represent the optimal path in true sense. However, intersection won't be the solution for situations where slice(s) for obstacle(s) is/are absent in a particular c-space slice. For example, with reference to fig. 22, considering two c-space slices in total, we have to follow the path shown in the first map, i.e. the ith. slice map.

On the other hand, in situations where all the object-slices are present in all the c-space slices, then intersection can be advantageous, as we can omit longer routes via nodes in certain instances. A typical case is exemplified in fig. 23. Here a particular object is shown to have slightly different geometries and the path between 'S' & 'G' also varies accordingly as shown. In case (a), we are unable to consider 2' as 'node', because of the proposition of visibility graph and the path (viz. S ……123G) is bound to pass through the stipulated node 2 only. However, node 2' lies very much inside the boundary of the c-space obstacle and in fact, it is closer to 'G' as compared to node 2. Thus the path shown in case (b) is the optimal solution (viz. S ……..12'G) and in fact, it is also the intersection of the two alternatives.

Fig. 23. Selection of path using intersection of alternatives (paths)

## **4.4.2 Quantitative evaluation of C-space slice points**

In order to evaluate the c-space points mathematically, the relevant algorithm generates the intercept co-ordinates (X & Y) corresponding to each 'slice', which are governed by the rotational range of the robot waist and the finite resolution of the waist rotation. The program is applicable only to rectangular 3D solid obstacles, e.g. cube, rectangular parallelopiped, pyramid etc., either directly or after duly transformed from spherical or semi-spherical obstacles. The model is being illustrated schematically through fig. 24.

The relevant formulation vis-à-vis algorithm of the concerned model is described in detail below. Consider figure 24, let:

w : Width of the obstacle;

d : Distance between the robot and the obstacle ;

( xb , yb ) : Co-ordinates of the robot base;

( x1 , y1 ) & ( x2 , y2 ) : Co-ordinates of the edge of the obstacle in consideration in 2D elevation;

b\_max. & b\_min. : Maximum and minimum values of the base rotational edge ;

S : Slicing value of the base rotational angle.

$$\mathbf{r}\_{\text{base}} = (\boldsymbol{\Theta}\_{\text{b\\_max.}} \mathbf{-} \boldsymbol{\Theta}\_{\text{b\\_min.}}) \tag{28}$$

Length of the 'edge' of the obstacle is,

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

will represent the optimal path in true sense. However, intersection won't be the solution for situations where slice(s) for obstacle(s) is/are absent in a particular c-space slice. For example, with reference to fig. 22, considering two c-space slices in total, we have to follow

On the other hand, in situations where all the object-slices are present in all the c-space slices, then intersection can be advantageous, as we can omit longer routes via nodes in certain instances. A typical case is exemplified in fig. 23. Here a particular object is shown to have slightly different geometries and the path between 'S' & 'G' also varies accordingly as shown. In case (a), we are unable to consider 2' as 'node', because of the proposition of visibility graph and the path (viz. S ……123G) is bound to pass through the stipulated node 2 only. However, node 2' lies very much inside the boundary of the c-space obstacle and in fact, it is closer to 'G' as compared to node 2. Thus the path shown in case (b) is the optimal solution (viz. S ……..12'G) and in fact, it is also the intersection of the

the path shown in the first map, i.e. the ith. slice map.

Fig. 23. Selection of path using intersection of alternatives (paths)

In order to evaluate the c-space points mathematically, the relevant algorithm generates the intercept co-ordinates (X & Y) corresponding to each 'slice', which are governed by the rotational range of the robot waist and the finite resolution of the waist rotation. The program is applicable only to rectangular 3D solid obstacles, e.g. cube, rectangular parallelopiped, pyramid etc., either directly or after duly transformed from spherical or semi-spherical obstacles. The model is being illustrated schematically through fig. 24. The relevant formulation vis-à-vis algorithm of the concerned model is described in detail

( x1 , y1 ) & ( x2 , y2 ) : Co-ordinates of the edge of the obstacle in consideration in 2D

b\_max. & b\_min. : Maximum and minimum values of the base rotational edge ;

**4.4.2 Quantitative evaluation of C-space slice points** 

d : Distance between the robot and the obstacle ; ( xb , yb ) : Co-ordinates of the robot base;

S : Slicing value of the base rotational angle.

below. Consider figure 24, let: w : Width of the obstacle;

elevation;

two alternatives.

$$\mathbf{l} = \left[ \left( \mathbf{x}\_2 \mathbf{-} \mathbf{x}\_1 \right)^2 + \left( \mathbf{y}\_2 \mathbf{-} \mathbf{y}\_1 \right)^2 \right]^{1/2} \tag{29}$$

Now, only one slice is possible, if,

$$\mathbf{d} \left( \pi \,\theta \mathbf{s} / \, 180 \right) \succeq \mathbf{w} \tag{30}$$

In situations where more than one slice is possible for a particular obstacle, two cases can appear.

#### **Case I: Robot base is in-line with the obstacle**

In this case, let S = d (i / 180) , where <sup>S</sup> <sup>i</sup> rbase . If S w, then 'slice' is possible and co-ordinates of the intercept of the slices are given by,

$$\mathbf{x}\_{\text{int}\_{-}1} = \mathbf{x}\_{1} + \begin{bmatrix} 1 \tan \theta\_{\text{i}} \end{bmatrix} \begin{pmatrix} 1/\text{d} \end{pmatrix} \begin{bmatrix} 1 + (1/\text{d} \ ) \end{bmatrix} \tag{31}$$

$$\mathbf{y}\_{\text{int\\_1}} = \mathbf{y}\_1 + \begin{bmatrix} \mathbf{l} \tan \theta \mathbf{i} \end{bmatrix} \begin{bmatrix} \begin{pmatrix} 1/\mathbf{d} \end{pmatrix} \end{bmatrix} \begin{bmatrix} 1 + \begin{pmatrix} 1/\mathbf{d} \end{pmatrix} \end{bmatrix} \tag{32}$$

$$\chi\_{\text{int},2} = \chi\_2 + \begin{bmatrix} \mathbf{I} \ \tan \ \theta \ \end{bmatrix} \begin{bmatrix} \begin{pmatrix} 1/\mathbf{d} \end{pmatrix} \end{bmatrix} \tag{33}$$

$$\mathbf{y}\_{\text{int\\_2}} = \mathbf{y}\_2 + \begin{bmatrix} \mathbf{l} \ \tan \theta \ \mathbf{i} \ \end{bmatrix} \begin{pmatrix} \mathbf{l}/\mathbf{d} \ \end{pmatrix} \tag{34}$$

where, (xint\_1, yint\_1 ) and (xint\_2 , yint\_2 ) are one set of co-ordinates corresponding to one slice. With i varying within its range with an increment of S, the other set of slice co-ordinates will be obtained.

#### **Case II: Robot base is not in-line with the obstacle**

In this case,

$$\theta\_{\rm in} = \tan^{-1} \left[ \mid \left( \text{y}\_2 \text{ - y}\_{\text{b}} \right) / \left( \text{x}\_2 \text{ - x}\_{\text{b}} \right) \mid \right] \tag{35}$$

Also,

$$\mathbf{S}' = \mathbf{d} \left[ \, \pi(\; \theta\_{\rangle} \; \text{ - } \theta\_{\text{in}} \right) / \; 180 \; \text{J} \; \text{ } \forall \text{ j., where } \theta\_{\text{in}} \le \; \theta\_{\text{j}} \le \text{r}\_{\text{base}}.\tag{36}$$

Spatial Path Planning of Static Robots Using Configuration Space Metrics 447

6, 7} to be constant throughout the process of path generation. Now, by using the developed path planning algorithm, we will finally get a collision-free optimal path between S: (,) and G: (,). The generalized representation of co-ordinates of any two nodes (say Ni

Ni {(1= c1, 2 = c2), 3 = xi, 4= yi, (5 = c5, 6 = c6, 7 = c7)}

Nj {(1= c1, 2 = c2), 3 = xj, 4= yj, (5 = c5, 6 = c6, 7 = c7)} Where [c1 & c2] and [c5, c6 & c7] are two non-identical group of constants to be evaluated

Ni {(1= c1, 2 = c2,..…,p-1= cp-1), p= xi, q=yi, (q+1 = cq+1, q+2 = cq+2,…,k = ck)}

Nj {(1= c1, 2 = c2,……,p-1= cp-1), p = xj, q= yj, (q+1 = cq+1, q+2 = cq+2,…,k = ck)} where, k: the degrees-of-freedom of the articulated robot; 1, 2,…… p, q,….. ,k: jointangles of the robot of which 'p' & 'q' represent any two consequtive pair; [p -- q]: the most significant c-space slice map; [c1, c2,..…,cp-1] & [cq+1, cq+2,…,ck]: two non-identical group of constants to be evaluated using inverse kinematics solution for 'S' and 'G' respectively. Once this path is obtained for a particular slice, say the first one, the same procedure can be repeated for other slices too, because all the slices are identical. And, obviously the same path will be obtained in all slices, which will be designated as the final path for that robot in 3D. The kinematic inversion for 'S' & 'G' is another important facet in this regard and analytically, there can be multiple feasible positions of 'S' as well as 'G' in the c-space plot (refer fig. 25). One each from the two clusters of feasible locations can be selected for S: (,) and G: (,).

Fig. 25. Multiple feasible locations for 'S' & 'G' inside a specific c-space plot

& Nj) of the said path will be as follows,

using inverse kinematics solution for 'S' and 'G' respectively.

The general lemma in this regard is stated as below,

and

and

If S' 0 and S' w, then slice is possible and co-ordinates of the intercept of the slices are given by,

$$\chi\_{\text{int\\_ln}} = \chi\_1 + \begin{bmatrix} 1 \ \tan \left( \theta\_\text{) - \ \theta\_\text{in} \end{bmatrix} / \ \begin{pmatrix} 1/\text{d} \ \end{pmatrix} \end{bmatrix} \begin{bmatrix} 1 + \begin{pmatrix} 1/\text{d} \ \end{pmatrix} \end{bmatrix} \tag{37}$$

$$\mathbf{y}\_{\text{int\\_1n}} = \mathbf{y}\_1 + \begin{bmatrix} 1 \ \tan \left( \theta\_{\text{\\_}} \cdot \theta\_{\text{in}} \right) \end{bmatrix} \begin{pmatrix} 1/\text{d} \ \end{pmatrix} \begin{bmatrix} 1 + \begin{pmatrix} 1/\text{d} \ \end{pmatrix} \end{pmatrix} \tag{38}$$

$$\chi\_{\text{int\\_2n}} = \chi\_2 + \begin{bmatrix} 1 \ \tan \left( \theta\_{\text{\\_}} \cdot \theta\_{\text{in}} \right) \end{bmatrix} \begin{pmatrix} 1/\text{d} \end{pmatrix} \tag{39}$$

$$\mathbf{y}\_{\text{int\\_2n}} = \mathbf{y}\_2 + \begin{bmatrix} 1 \ \tan \left( \theta \right) \ - \ \theta \mathbf{e} \end{bmatrix} / \begin{pmatrix} 1/\mathbf{d} \ \end{pmatrix} \tag{40}$$

As before, (xint\_1n , yint\_1n ) and (xint\_2n , yint\_2n ) are one set of co-ordinates corresponding to one slice. With j varying within its range with an increment of S, the other set of slice coordinates will be obtained. Selection of 'safe' nodes of the robot end-effector in the 3D space depends on the elemental results, as obtained from the corresponding planar analysis. Symbolically, if the collision-free path for one particular 'slice' is represented as,

$$\{\mathbf{P}\_{\mathbb{S}\_k}\} = \{\mathbf{S}, \mathbf{X}\_{\mathbb{L}}, \mathbf{X}\_{\mathbb{S}\_k}, \dots, \dots, \mathbf{G} \mid\_{\mathbb{S}\_k}\} \tag{41}$$

where, X1, X2, ..............., represent the serial number of the 'safe' nodes (may not be in the same order as the node nos., viz, 1,2,3,........) and 's\_k' is the kth. slice, then the final path will be the union of all such feasible combinations, viz.,

$$\{\mathbf{P}\} = \bigcup\_{k=1}^{k=n} \{\mathbf{P}\_{\mathbb{S},k}\} \tag{42}$$

where, 'n' is the total number of slices generated.

#### **4.5 Evaluation of path in 3D for higher dimensional robot**

As depicted in fig. 19, evaluation of the collision-free path in 3D will depend on the degreesof-freedom of the robot (i.e. whether d.o.f. =2 or >2). Nonetheless, in both the cases we need to fragment the 3D task-space in multiple slices, which may or may not be identical to one another. Thus, we will arrive at a situation wherein we have to deploy different strategies to evaluate a safe path. These models are described below.

#### **4.5.1 Model for obtaining safe path for identical slices**

The first and foremost pre-requisite of evaluating a collision-free path in this case is to have the *most significant 2D c-space slice map* for the robotic workspace under consideration, as described in 3.4.2. Once the critical c-space slice map is earmarked, the next task is to pinpoint the corresponding locations for 'S' & 'G' in that map. This can be achieved by using the inverse kinematic solution for 'S' & 'G' and subsequent mapping from task space to joint space. For example, consider again the case of a seven degrees-of-freedom robot shown in fig. 9, wherein say the [3 -- 4] map is the most significant. Thus, the corresponding visibility graph of the environment will have non-identical 'S' & 'G' signatured as, S: (3 =0, 4=0) and G: (3=0, 4=0). We will assume that the set of other joint-angles, i.e. {1, 2, 5, 6, 7} to be constant throughout the process of path generation. Now, by using the developed path planning algorithm, we will finally get a collision-free optimal path between S: (,) and G: (,). The generalized representation of co-ordinates of any two nodes (say Ni & Nj) of the said path will be as follows,

$$\mathbf{N}\_{\mathbf{i}} \equiv \left| \left( \Theta\_{\mathbf{l}} = \mathbf{c}\_{\mathbf{1}\prime} \,\, \Theta\_{\mathbf{2}} = \mathbf{c}\_{\mathbf{2}\prime} \right) , \, \Theta\_{\mathbf{3}} = \mathbf{x}\_{\mathbf{i}\prime} \,\, \Theta\_{\mathbf{4}} = \mathbf{y}\_{\mathbf{i}\prime} \left( \Theta\_{\mathbf{5}} = \mathbf{c}\_{\mathbf{5}\prime} \,\, \Theta\_{\mathbf{6}} = \mathbf{c}\_{\mathbf{6}\prime} \,\, \Theta\_{\mathbf{7}} = \mathbf{c}\_{\mathbf{7}\prime} \right) \right|$$

and

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

If S' 0 and S' w, then slice is possible and co-ordinates of the intercept of the slices are

xint\_1n = x1 + [ l tan (j - in) / ( l/d ) ] [ 1 + ( l/d )] (37)

yint\_1n = y1 + [ l tan (j - in) / ( l/d ) ] [ 1 + ( l/d )] (38)

xint\_2n = x2 + [ l tan (j - in) / ( l/d ) ] (39)

 yint\_2n = y2 + [ l tan (j - in) / ( l/d ) ] (40) As before, (xint\_1n , yint\_1n ) and (xint\_2n , yint\_2n ) are one set of co-ordinates corresponding to one slice. With j varying within its range with an increment of S, the other set of slice coordinates will be obtained. Selection of 'safe' nodes of the robot end-effector in the 3D space depends on the elemental results, as obtained from the corresponding planar analysis.

where, X1, X2, ..............., represent the serial number of the 'safe' nodes (may not be in the same order as the node nos., viz, 1,2,3,........) and 's\_k' is the kth. slice, then the final path will

1

As depicted in fig. 19, evaluation of the collision-free path in 3D will depend on the degreesof-freedom of the robot (i.e. whether d.o.f. =2 or >2). Nonetheless, in both the cases we need to fragment the 3D task-space in multiple slices, which may or may not be identical to one another. Thus, we will arrive at a situation wherein we have to deploy different strategies to

The first and foremost pre-requisite of evaluating a collision-free path in this case is to have the *most significant 2D c-space slice map* for the robotic workspace under consideration, as described in 3.4.2. Once the critical c-space slice map is earmarked, the next task is to pinpoint the corresponding locations for 'S' & 'G' in that map. This can be achieved by using the inverse kinematic solution for 'S' & 'G' and subsequent mapping from task space to joint space. For example, consider again the case of a seven degrees-of-freedom robot shown in fig. 9, wherein say the [3 -- 4] map is the most significant. Thus, the corresponding visibility graph of the environment will have non-identical 'S' & 'G' signatured as, S: (3 =0, 4=0) and G: (3=0, 4=0). We will assume that the set of other joint-angles, i.e. {1, 2, 5,

*k*

*k n*

Symbolically, if the collision-free path for one particular 'slice' is represented as,

{ P } =

be the union of all such feasible combinations, viz.,

where, 'n' is the total number of slices generated.

**4.5 Evaluation of path in 3D for higher dimensional robot** 

evaluate a safe path. These models are described below.

**4.5.1 Model for obtaining safe path for identical slices** 

= d [j - in ) / 180 ], j , where in <sup>j</sup> rbase. (36)

{ PS\_k } = { S, X1, X2, ..............., G }S\_k (41)

{ PS\_k } (42)

Also,

given by,

S'

$$\mathbf{N}\_{\mathbf{j}} \equiv \{ (\mathbf{\theta}\_1 = \mathbf{c}\_1, \; \mathbf{\theta}\_2 = \mathbf{c}\_2), \; \mathbf{\theta}\_3 = \mathbf{x}\_{\dot{\mathbf{y}}}, \; \mathbf{\theta}\_4 = \mathbf{y}\_{\dot{\mathbf{y}}}, \; (\mathbf{\theta}\_5 = \mathbf{c}\_5, \; \mathbf{\theta}\_6 = \mathbf{c}\_6, \; \mathbf{\theta}\_7 = \mathbf{c}\_7) \}$$

Where [c1 & c2] and [c5, c6 & c7] are two non-identical group of constants to be evaluated using inverse kinematics solution for 'S' and 'G' respectively.

The general lemma in this regard is stated as below,

$$\mathbf{N}\_{\mathbf{i}} \equiv \{ (\boldsymbol{\Theta}\_{\mathbf{i}} = \mathbf{c}\_{1\prime}, \boldsymbol{\Theta}\_{\mathbf{2}} = \mathbf{c}\_{2\prime \dots \dots \prime}, \boldsymbol{\Theta}\_{\mathbf{p} \cdot \mathbf{1}} = \mathbf{c}\_{\mathbf{p} \cdot \mathbf{1} \rangle}, \boldsymbol{\Theta}\_{\mathbf{p}} = \mathbf{x}\_{\dot{\nu}}, \boldsymbol{\Theta}\_{\mathbf{q}} = \mathbf{y}\_{\dot{\nu}} \ (\boldsymbol{\Theta}\_{\mathbf{q} \cdot \mathbf{1}} = \mathbf{c}\_{\mathbf{q} + \mathbf{1} \boldsymbol{\nu}}, \boldsymbol{\Theta}\_{\mathbf{q} \cdot \mathbf{2}} = \mathbf{c}\_{\mathbf{q} + \mathbf{2} \boldsymbol{\nu} - \boldsymbol{\Lambda}}, \boldsymbol{\Theta}\_{\mathbf{k}} = \mathbf{c}\_{\mathbf{k}})\}$$

and

$$\mathbf{N}\_{\mathbf{j}} \equiv \left| \left( \boldsymbol{\theta}\_{1} = \mathbf{c}\_{1\nu} \ \boldsymbol{\theta}\_{2} = \mathbf{c}\_{2\nu}, \dots, \mathbf{c}\_{\mathbf{p}\ast 1} = \mathbf{c}\_{\mathbf{p}\ast 1} \right), \boldsymbol{\theta}\_{\mathbf{p}} = \mathbf{x}\_{\dot{\mathbf{p}}}, \boldsymbol{\theta}\_{\mathbf{q}} = \mathbf{y}\_{\dot{\mathbf{p}}} \ \left( \boldsymbol{\theta}\_{\mathbf{q}\ast 1} = \mathbf{c}\_{\mathbf{q}\ast 1\nu} \ \boldsymbol{\theta}\_{\mathbf{q}\ast 2} = \mathbf{c}\_{\mathbf{q}\ast 2\nu}, \dots, \boldsymbol{\theta}\_{\mathbf{k}} = \mathbf{c}\_{\mathbf{k}} \right) \right|$$

where, k: the degrees-of-freedom of the articulated robot; 1, 2,…… p, q,….. ,k: jointangles of the robot of which 'p' & 'q' represent any two consequtive pair; [p -- q]: the most significant c-space slice map; [c1, c2,..…,cp-1] & [cq+1, cq+2,…,ck]: two non-identical group of constants to be evaluated using inverse kinematics solution for 'S' and 'G' respectively.

Once this path is obtained for a particular slice, say the first one, the same procedure can be repeated for other slices too, because all the slices are identical. And, obviously the same path will be obtained in all slices, which will be designated as the final path for that robot in 3D. The kinematic inversion for 'S' & 'G' is another important facet in this regard and analytically, there can be multiple feasible positions of 'S' as well as 'G' in the c-space plot (refer fig. 25). One each from the two clusters of feasible locations can be selected for S: (,) and G: (,).

Fig. 25. Multiple feasible locations for 'S' & 'G' inside a specific c-space plot

Spatial Path Planning of Static Robots Using Configuration Space Metrics 449

Fig. 26. Visibility graph generated out of the 2D environment, vide fig. 6

A\* Algorithm S 1 9 7

amongst the various alternatives in graph-search methods.

**4.6.2 Sample workspace with seven degrees-of-freedom robot** 

fig. 26

infeasible.

**Algorithms Used Path With Nodes Joint-angle Combination** 

(222,190)

Angular Deviation Algorithm S 2 3 G (60,-120); (240,-166); (240,-139);

Table 5. Collision-free Near-optimal Path between 'S' & 'G' with reference to Example in

with Angular Deviation Algorithm. The other group of search algorithms, based on mathematical programming, such as Variational Methods, Hierarchical Dynamic Programming and Tangent Graph Method, are although relatively better focused, but those are highly *memory-extensive*. Thus, in all counts, Angular Deviation Algorithm scores high

This example is in reference to the robotic environment shown in fig. 17 and subsequently the various c-space slice maps, as detailed in fig. 18. As we have declared in section 3.5 that [1 -- 2] plot is the most significant out of the four plots, we need to obtain the v-graph for this plot. Figure 27 shows the developed v-graph for this c-space slice plot. Here the generated v-graph is relatively simpler by default as it has only four nodes, which is due to the fact that both the joint-angles in consideration, viz. 1 & 2 are plotted in their full ranges. Thus 'S' & 'G' are also located on the boundary lines, because other locations will be

13 12 G

**(in degrees)** 

(60,-120); (0,66); (0,86); (67,240); (129,240); (187,240); (222,190)

#### **4.5.2 Model for obtaining safe path for non-identical slices**

In this case, we will get different sets of nodal points, corresponding to safe paths, for each slice. The procedure for obtaining a particular set of nodal points (nodes) for a specific slice is same as described in 4.5.1. But the challenge involved here is the most significant c-space slice is not fixed for the slices, rather in worst case it will differ. For example, let us take the case of seven d.o.f. manipulator and we assume there are five slices in the workspace. After c-space slice mapping, we find that while [3 -- 4] is the most significant map for the first slice, [1 -- 2] is the same for second slice. And likewise, the maps of [3 -- 4], [5 -- 6] & [1 -- 2] are the significant ones for third, fourth and fifth slice respectively. Thus the hurdle becomes in unifying these varying sets of maps into one final path. This is solved considering the *union* of the available sets of nodal points.

In general, if there are 'k' non-identical slices and the sets of nodal points for each safe path are represented by, {Sk} = {N1k, N2k,……….,Nqk}, where 'q' is the cardinality of the set and the value of 'q' may vary for different 'k', then the final path will be defined as,

$$\{\mathbf{S}\_{Final}\} = \bigcup\_{p=1}^{r=k} \{\mathbf{S}\_p\}$$

In other words, statistical union of nodes will proceed slice-wise; i.e. to get the *safe* path complete posting all the nodes under one slice, then move on to the next slice and so on, till all the slices are exhausted. Nonetheless, the co-ordinates of the nodes in the path will be evaluated as per the lemma described in 4.5.1.

#### **4.6 Illustrative examples**

The developed path planning algorithm has been tested with two sample environments, the first one is contains a two degrees-of-freedom robot while the second one includes a seven degrees-of-freedom robot.

#### **4.6.1 Sample workspace for two degrees-of-freedom robot**

This example has a reference to the robot workspace with circular obstacles, as shown in fig. 6 and subsequently, the c-space map, vide fig. 8. Figure 26 presents the final c-space obstacles7 with nodes numbered sequentially and the visibility graph generated there from.

Table 5 shows the output of the graph search process using our algorithm, developed with 'S' & 'G' configurations as (600, -1200) and (2220, 1900) respectively. For comparison, the result obtained through A\* search algorithm is also included.

It may be mentioned here that we can very well *benchmark* the result obtained by the Angular Deviation Algorithm, as it is representative amongst the *AI-based* heuristic algorithms. In fact, due to its logistics, the developed algorithm is having an edge over the other possible metrics of path planning, e.g. Generalized Voronoi Diagram (GVD), Cellular Automata and Potential Field. All of these three methods rely on diversification in search, which eventually leads to more computational time and complexity. Besides, the important attribute, namely, "*closeness to desired path*" is compromised in most of the non-AI based techniques. In comparison, AI-based searches are much robust and coherent; like the case

<sup>7</sup> Only obstacle 3,5 & 6, referred in figures 6 & 8, have been considered for the creation of visibility graph in order to reduce computational complexity.

In this case, we will get different sets of nodal points, corresponding to safe paths, for each slice. The procedure for obtaining a particular set of nodal points (nodes) for a specific slice is same as described in 4.5.1. But the challenge involved here is the most significant c-space slice is not fixed for the slices, rather in worst case it will differ. For example, let us take the case of seven d.o.f. manipulator and we assume there are five slices in the workspace. After c-space slice mapping, we find that while [3 -- 4] is the most significant map for the first slice, [1 -- 2] is the same for second slice. And likewise, the maps of [3 -- 4], [5 -- 6] & [1 -- 2] are the significant ones for third, fourth and fifth slice respectively. Thus the hurdle becomes in unifying these varying sets of maps into one final path. This is solved

In general, if there are 'k' non-identical slices and the sets of nodal points for each safe path are represented by, {Sk} = {N1k, N2k,……….,Nqk}, where 'q' is the cardinality of the set and

> 1

In other words, statistical union of nodes will proceed slice-wise; i.e. to get the *safe* path complete posting all the nodes under one slice, then move on to the next slice and so on, till all the slices are exhausted. Nonetheless, the co-ordinates of the nodes in the path will be

The developed path planning algorithm has been tested with two sample environments, the first one is contains a two degrees-of-freedom robot while the second one includes a seven

This example has a reference to the robot workspace with circular obstacles, as shown in fig. 6 and subsequently, the c-space map, vide fig. 8. Figure 26 presents the final c-space obstacles7 with nodes numbered sequentially and the visibility graph generated there from. Table 5 shows the output of the graph search process using our algorithm, developed with 'S' & 'G' configurations as (600, -1200) and (2220, 1900) respectively. For comparison, the

It may be mentioned here that we can very well *benchmark* the result obtained by the Angular Deviation Algorithm, as it is representative amongst the *AI-based* heuristic algorithms. In fact, due to its logistics, the developed algorithm is having an edge over the other possible metrics of path planning, e.g. Generalized Voronoi Diagram (GVD), Cellular Automata and Potential Field. All of these three methods rely on diversification in search, which eventually leads to more computational time and complexity. Besides, the important attribute, namely, "*closeness to desired path*" is compromised in most of the non-AI based techniques. In comparison, AI-based searches are much robust and coherent; like the case

7 Only obstacle 3,5 & 6, referred in figures 6 & 8, have been considered for the creation of visibility

*p k Final p p S S* 

the value of 'q' may vary for different 'k', then the final path will be defined as,

**4.5.2 Model for obtaining safe path for non-identical slices** 

considering the *union* of the available sets of nodal points.

evaluated as per the lemma described in 4.5.1.

**4.6.1 Sample workspace for two degrees-of-freedom robot** 

result obtained through A\* search algorithm is also included.

graph in order to reduce computational complexity.

**4.6 Illustrative examples** 

degrees-of-freedom robot.

Fig. 26. Visibility graph generated out of the 2D environment, vide fig. 6


Table 5. Collision-free Near-optimal Path between 'S' & 'G' with reference to Example in fig. 26

with Angular Deviation Algorithm. The other group of search algorithms, based on mathematical programming, such as Variational Methods, Hierarchical Dynamic Programming and Tangent Graph Method, are although relatively better focused, but those are highly *memory-extensive*. Thus, in all counts, Angular Deviation Algorithm scores high amongst the various alternatives in graph-search methods.
