<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Smoothing Voronoi-based Path with Minimized Length and Visibility using Composite Bezier Curves</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Ilya Makarov</string-name>
          <email>iamakarov@hse.ru</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Pavel Polyakov</string-name>
          <email>polyakovpavel96@gmail.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>National Research University Higher School of Economics</institution>
          ,
          <addr-line>3 Kochnovskiy Proezd, 125319 Moscow</addr-line>
          ,
          <country country="RU">Russia</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>National Research University Higher School of Economics, Department of Data Analysis and Arti cial Intelligence</institution>
          ,
          <addr-line>3 Kochnovskiy Proezd, 125319 Moscow</addr-line>
          ,
          <country country="RU">Russia</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>We present an obstacle avoiding path planning method based on a Voronoi diagram. We use a tactical visibility measure to obtain the shortest path length with the lowest local probability to be discovered based on the map topology. A Voronoi-based navigation mesh for nding the shortest smooth path with the lowest visibility along the path is used. The piecewise linear rough path in the Voronoi diagram is compared with collision free composite Bezier curves with shortest curve length. Whether we use visibility component or not, the smooth path length does not di er more than 12%. This allows us to use tactical information from map geometry without signi cant loss in path length.</p>
      </abstract>
      <kwd-group>
        <kwd>Path Planning</kwd>
        <kwd>Voronoi Diagram</kwd>
        <kwd>Bezier Curve</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Path planning and path nding problems play one of the main topics in robotic
and automation elds, especially for dynamically changing environments. There
are a large variety of algorithms for di erent tasks, such as in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
      </p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] J. Reif proved that the path planning problem is PSPACE-complete. In
addition to the storage problem, Reif also proved that the path planning
problem is NP-complete. The exponential time and storage requirements combined
together create an open research problem. The path planning is represented by
two diverse strategies, separating o ine computing of initially known BOT and
global characteristics from constructing sensor-based local environment.
      </p>
      <p>
        Voronoi diagrams are the simplest case of a k -nearest neighbour classi cation
rule with k = 1 . There are certain types of continuous locational optimization
problems that can be solved through modi cations of the Voronoi diagram (see
[
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]). In game programming, Voronoi diagrams are used to make a partition of a
navigation mesh to nd a collision free path in both global [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] and local
environments [
        <xref ref-type="bibr" rid="ref4 ref8">4,8</xref>
        ]. The path is a piecewise linear path or a curve smoothed with the help
of splines. In the rst case, the actor movements look bad when programming
BOT with human-like behavior. The smooth path is constructed by connecting
splines with some functional property, such as continuity of the rst or second
derivatives. The resulting path should be continuous itself. The authors of [
        <xref ref-type="bibr" rid="ref10 ref9">9,10</xref>
        ]
make a path by splines through the way points on a map. A rather di erent
approach is presented in the works by [
        <xref ref-type="bibr" rid="ref11 ref12 ref2 ref4">2,4,11,12</xref>
        ], in which authors use Bezier
curves to construct the path based on obstacle vertices' points.
      </p>
      <p>
        We combine these two approaches by choosing composite Bezier curves to
implement the second strategy of writing obstacle-avoiding path. In [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] the
author started to use a set of control points for one Bezier curve instead of using
the reference points as way points. In [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] the connection of reference points by
taking each point as a way point leads to longer path length, by comparing to
their connection by taking each point as a control point of Bezier curves. Using
a composite Bezier curve they obtain a reduction of 8.33% of the path length.
      </p>
      <p>
        In this paper, we propose an obstacle avoiding smooth path planning
algorithm with visibility component. We increase the average path length without
visibility in comparison to the works [
        <xref ref-type="bibr" rid="ref13 ref14">13,14</xref>
        ] to obtain more realistic trajectories.
      </p>
    </sec>
    <sec id="sec-2">
      <title>Voronoi-based navigation mesh</title>
      <sec id="sec-2-1">
        <title>De nition</title>
        <p>Regular navigation meshes consisting of convex polygons without any additional
constraints seem to be perfect for path nding only until we need to
calculate navigation characteristics using tactical properties of a map. Di erent
approaches can be used to achieve this goal. However, without applying structural
changes to the navigation mesh itself they are either not e cient enough or too
di cult to implement. In this paper, we study a special navigation mesh type
called Voronoi-based navigation mesh, which is designed to nd paths
considering properties such as visibility/cover, curvature of path trajectory and general
penalties for traveling in particular areas. Let P = fp0; p1; : : : ; png be a set of
points (called sites) placed on a map manually or automatically with
precomputed tactical properties. Let</p>
        <p>V D(pi) = fx : jpi
xj
jpj
xj; 8j 6= i; x 2 R2g
(1)
be polygons of a navigation mesh. To support multi-layered environments,
several surfaces (simply connected closed surfaces with Z = const ) are also placed
on a map. Each surface determines an area where a Voronoi diagram should be
constructed, before being projected on a level geometry. A union of diagrams
constructed in all surfaces is called a Voronoi-based navigation mesh. Examples
of such map partitions are shown on Figure 1 and Figure 2. The navigation area
is similar to Riemann's variety and is homeomorphic to the plane R2 .</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Construction and Memory Storage of Voronoi Diagram</title>
      <sec id="sec-3-1">
        <title>Voronoi diagram</title>
        <p>
          The Voronoi diagrams (VD) in each surface are independently computed in
(n log n) time using Fortune's algorithm presented in [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ]. The polygons lying
outside an area determined by the corresponding surface are discarded. A
diagram itself is stored in DCEL format, which guarantee (n) memory footprint.
The number of vertices and edges of VD are not greater than 2n and 3n ,
respectively. In addition, a quad tree for each diagram is built so that the solution
to the point location problem can be found in short time.
        </p>
        <p>
          In [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ] authors give a new randomized incremental algorithm for the
construction of planar Voronoi diagrams in O (n log n) time and O (n) space.
Improvements of this work can also be found in [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ].
3.2
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>Projection and obstacle detection</title>
        <p>First, the polygon vertices are projected from surface's Z onto the geometry.
It is important to move vertices at some " {height above the ground so that
obstacle detection will work correctly for non- at areas, such as stairs or hills.
After that, the polygon's Z is calculated as an average of its vertexes.</p>
        <p>Once navigation mesh is properly located in 3D space, a number of
geometry ags for each polygon can be computed. We iterate through all edges of a
mesh (there are (n) edges) and perform the following: obstacle collision check
along an edge; ground collision check under an edge; height above an edge
evaluation for both crouch and jump. These ags are then copied from edges to
adjacent polygons using logical OR. That is a way to gather information about
the geometry of each polygon. This step requires (n) ray casts.</p>
      </sec>
      <sec id="sec-3-3">
        <title>Building navigation links</title>
        <p>This step requires the exploration of jump-points on a navigation mesh and
O (n2) ray casts in worst case. In practice, this number can be greatly reduced
to O (n) on real maps with bounded gravitation elds. For each of the polygons
lying near the surface border, we use the following strategy to nd link
candidates: polygons should belong to di erent surfaces, both be navigable and the
distance between the Voronoi sites inside them should not exceed a constant d
derived from gravity eld. A set of polygons lying within a range d from a given
one in each surface can be found using a corresponding quad tree. In addition,
link candidate is eliminated if a segment of polygons' sites intersects the edge of
the border face which is not near the border.</p>
        <p>Each link candidate is tested with two possible scenarios: jump (Figure 2)
and walking o a ledge. The rst one can be checked with a few ray casts
and physics calculations. The second one minimizes unnecessary jumping and
requires a number of ground height checks between two polygons.
3.4</p>
      </sec>
      <sec id="sec-3-4">
        <title>Calculating tactical properties</title>
        <p>We introduce a method for calculating visibility as a characteristic of Voronoi
regions areas. All the values are computed o ine as parts of map tactical
properties and can be combined with on-line computed enemies' locations frag map.</p>
        <p>
          Let visibility be a value from 0 to 1 indicating the amount of area visible
from a polygon within a given range. One may argue how visibility should be
converted into a number, but in fact, it gives us believable tactical results. Similar
algorithm of calculating tactical map properties are presented in [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ].
for Polygon in Polygons do
if Polygon.IsNavigable() then
        </p>
        <p>Polygon.Visibility = 0
for Other in Polygons do
if Other.IsNavigable() then</p>
        <p>Hits = 0
for (H1; H2) in f CrouchHeight, FullHeight g do</p>
        <p>Hits +=</p>
        <p>CheckCollision(Polygon.Location+ H1 ,Other.Location+ H2 )
if Distance(Polygon,Other) &lt; d then</p>
        <p>Polygon.Visibility += Area(Other) Hits = 4
Polygon.Visibility = Min(1,Polygon.Visibility = c)</p>
        <sec id="sec-3-4-1">
          <title>Algorithm 1: Visibility Computation</title>
          <p>
            The threshold parameters d and c should be chosen experimentally
depending on the game engine and the empirical estimation of the visibility map (see
[
            <xref ref-type="bibr" rid="ref19">19</xref>
            ]). It is clear that c should be about d2 but it is not necessary.
          </p>
          <p>The result of the Algorithm 1 is shown on Figure 3. The darker the polygon
is, the worse the visibility is in it. All non navigable areas have red colour.</p>
          <p>We will further improve the representation of visibility and distance
structures with BSP-trees.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Path planning</title>
      <sec id="sec-4-1">
        <title>Path nding</title>
        <p>
          The work with navigation proceeds in the following steps:
1. BOT makes a query to navigation system;
2. Navigation system uses A (or I{ARA anytime algorithm from [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ] for
large maps) nding a sequence of adjacent polygons on navigation mesh;
3. A sequence of polygons is converted into a sequence of points;
4. BOT receives a sequence of points and build a collision free path to walk.
4.2
        </p>
      </sec>
      <sec id="sec-4-2">
        <title>Weight function and heuristics</title>
        <p>We design the interface for interaction between querier and navigation system
at each iteration of A algorithm as follows:
float GetPenaltyForRotation();
float GetPenaltyMultiplierForCrouch();
float GetPenaltyForJump();
float GetAdditionalPenalty(PreviousPolygon,NextPolygon);
FVector2D GetInitialRotation();</p>
        <p>Using the rst three methods, a querier can manage penalties for path's
curvature, crouching and jumping. The last function is a method for querier
to in uence navigation with respect to previous movement direction.
GetAdditionalPenalty is used by querier to modify path penalty according to tactical
properties of \previous" and \next" polygons and depending on its current
preferences, similar to Markov's chains. There are also so-called general penalties,
such as base cost, base enter cost and no way ag, which can be dynamically
modi ed by any game event.</p>
        <p>// Zeroth is Polygon visited before First
// Negative distance means no way
def Distance(Querier,Zeroth,First,Second,bJumpRequired):
if not Second.IsNavigable() or Second.bNoWay then</p>
        <p>return -1
Penalty = Querier.GetAdditionalPenalty(First,Second)
if Penalty &lt; 0 then</p>
        <p>return -1
Direction Calculate direction from First to Second
if 9 Zeroth then</p>
        <p>PreviousDirection Calculate direction from Zeroth to First
else</p>
        <p>PreviousDirection</p>
        <sec id="sec-4-2-1">
          <title>Querier.GetInitialRotation()</title>
          <p>// &lt;a,b&gt; stands for dot product of normalized vectors
Rotation = 1 - &lt; Direction,PreviousDirection &gt;
Penalty += Rotation Max(0,Querier.GetPenaltyForRotation())
BaseCost = (First.BaseCost + Second.BaseCost) = 2
if First.bCrouchedOnly or Second.bCrouchedOnly then</p>
          <p>BaseCost *= Max(1,Querier.GetPenaltyMultiplierForCrouch())
Penalty += Distance(First,Second) * BaseCost + Second.BaseEnterCost
if bJumpRequired then</p>
          <p>Penalty += Max(0,Querier.GetPenaltyForJump()
return Penalty</p>
        </sec>
        <sec id="sec-4-2-2">
          <title>Algorithm 2: Calculating Weight Function For proper work of A algorithm, each penalty is jammed to a limited range, so the resulting penalty is not less than the Euclidean distance, which is used as heuristics in our implementation.</title>
          <p>4.3</p>
        </sec>
      </sec>
      <sec id="sec-4-3">
        <title>Post processing path</title>
        <p>
          Once a path is found, it should be converted into a point sequence. Apart from
how this is done in regular navigation meshes, potential eld or Funnel
algorithms (see [
          <xref ref-type="bibr" rid="ref19 ref21">19,21</xref>
          ]) are not of any use because they can not smooth the paths
furhter.
        </p>
        <p>
          There are two ways polygons in navigation mesh can be connected: by link
and by edge. In the rst case, positions of points are chosen as coordinates of
sites. In the second one, point can take di erent positions on an edge connecting
two sequential polygons in a path. We use a weighted approach to choose this
point in order to produce believable (in the sense of [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ]) and natural looking
paths.
        </p>
        <p>Let pi 1 be a point already chosen, and pi+1 be a site position of the next
polygon. Then pi is a point to be chosen. Also let v1 and v2 be vertices of an
edge connecting polygons i and i + 1 . We have:
(2)
(3)
(4)
dj = distance(vj; line(pi 1; pi+1));
wj = rand(1; b)=dj; j = 1; 2;
pi =
v1 w1 + v2 w2
w1 + w2
;
where b stands for the amount of randomness. We recommend to set b around
the value 2 so that it does not overweight distance modi er, and at the same
time produce paths that appear to be \unique" (it looks unnatural when BOT
is travelling along the same trajectory all the time, especially when there are
several BOTs going one after another). The distance to the line modi er is used
for removing zigzag e ects and as a rst attempt to smooth the path. Figure 4
shows how a typical path may look after this step.</p>
      </sec>
      <sec id="sec-4-4">
        <title>Building Bezier curve</title>
        <p>When developing a BOT navigation, smoothing is one of the key steps. It is
the rst thing for a human to distinguish a BOT from a human player. Several
approaches can be used to smooth movements. For example, a potential method
when a force proportional to distance from obstacle is applied to a BOT, limiting
rotation rate of a BOT when moving between points, and splines. Bezier curves
seem to be the most suitable because they lie strictly inside the convex hull of
way points1. This fact guarantees that the smoothed path is collision-free, and
that a BOT will not be stuck into an obstacle. In addition, the path does not
pass through a majority of points it is built on, and that is actually why we do
not eliminate the points with a Funnel or another algorithm. We use all these
points to smooth paths.</p>
        <p>
          In this section we present how to build a composite Bezier curve, as shown
on Figure 5. We also improve the results of [
          <xref ref-type="bibr" rid="ref13 ref14">13,14</xref>
          ], obtaining worse length path
for realistic motion and detour around the obstacles.
        </p>
        <p>The rst step is an insertion of additional points into a path so that the
distance between sequential ones is greater than some predetermined constant.
In practice, it greatly enhances results of the further step where we split a path
into several pieces to build a Bezier curve in each one. Points of each piece
of the path should lie in a collision-free convex hull so we have to choose the
subsequences of points with no obstacles in their convex hull and ensure that
there are no any holes under it. We want to minimize over all partitions:
X distance(P iece:F irstP oint; P iece:LastP oint) ! min
(5)</p>
        <p>Also if two partitions lengths di ers on a small " then we choose the one
with less parts as a composite Bezier curve produces worse smoothing when
it consists of a big number of small curves. This strategy roughly minimizes a
length of the resulting curve and allows better smoothing behavior on turns.
1 http://www.ams.org/samplings/feature-column/fcarc-bezier
else
The following algorithm for path subdivision is used:
CollideArray[N][N] initialized by false
Partition[N][N] struct f Value,Parts,End g
for k in range(1,N) do
for i in range(0,N - k) do
j = i + k
if CollideArray[i][j - 1] or CollideArray[i + 1][j] or
CheckCollision(PathPoints[i],PathPoints[j]) then</p>
        <p>CollideArray[i][j] = true
if CollideArray[i][j] then</p>
        <p>Partition[i][j].Value = +1
Partition[i][j].Value = distance(PathPoints[i],PathPoints[j])
Partition[i][j].Parts = 1</p>
        <p>Partition[i][j].End = j
for l in range(i + 1,j) do</p>
        <p>ValueAlternative = Partition[i][l].Value + Partition[l][j].Value
PartsAlternative = Partition[i][l].Parts + Partition[l][j].Parts
if Partition[i][j].Value &gt; ValueAlternative + " or
(abs(Partition[i][j].Value - ValueAlternative) &lt; " and
PartsAlternative &lt; Partition[i][l].Parts) then</p>
        <p>Partition[i][j].Value = ValueAlternative
Partition[i][j].Parts = PartsAlternative</p>
        <p>Partition[i][j].End = l</p>
        <sec id="sec-4-4-1">
          <title>Algorithm 3: Composite Bezier Curve Construction</title>
          <p>Once array Partition is computed, we can get indexes of the path subdivision
using a simple recursive backtracking algorithm.</p>
          <p>def Backtracking(Partition,i,j,Indexes):
if j == Partition[i][j].End then</p>
          <p>Indexes.Add(j)
else</p>
          <p>Backtracking(Partition,i,Partition[i][j].End,Indexes)
Backtracking(Partition,Partition[i][j].End,j,Indexes)</p>
        </sec>
        <sec id="sec-4-4-2">
          <title>Algorithm 4: Backtracking</title>
          <p>Our next step is removal of crowded control points in each part of the path,
therefore decreasing the curvature and the length of a curve. This can be done
directly by verifying that points are not closer than some e &gt; 0 and that there
are not too many control points.</p>
          <p>
            The nal step of building a composite Bezier curve is the \repairing" of a
derivative at parts' connection locations. This can be achieved by inserting
additional control points at these locations in order to ensure that we have at least
continuously di erentiable trajectories. Complete algorithms for constructing
composite Bezier curves can be found in [
            <xref ref-type="bibr" rid="ref13 ref14">13,14</xref>
            ].
          </p>
          <p>Now, a BOT can start moving along it. In general, there may be di culties
with the correct calculation of the current and the next positions on the curve,
so we use the simplest prediction for small time interval and correct path nder.
5</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Experiment and Conclusion</title>
      <p>In practice, the contribution of visibility component to remain undetected during
BOT motion is very low if we are not taking into account the enemies'
movements. We consider the relative dependence of the smooth low-visibility path
length with the length of the shortest path obtained by Recast navigation mesh.</p>
      <p>We take 1000 di erent start and end locations on the map shown on Figure
3. The average di erence (AD, %) and variance of di erence (VD, %) from the
shortest path length for the next paths were calculated during the experiment:
[Case 1 &amp; 2] Piecewise path with visibility penalty set to 0 and 10, respectively;
[Case 3 &amp; 4] Smoothed path with visibility penalty set to 0 and 10, respectively.
We perform the exepriment in Unreal Engine 4 2. Results are shown in Table 1.</p>
      <p>We can see that the resulting di erence between the smooth paths with and
without a visibility component does not exceed 10{12%, so taking into account
tactical information seems to be a useful decision.</p>
      <p>
        The di erence in 15{25% between smooth path length from our algorithm
and the results from [
        <xref ref-type="bibr" rid="ref13 ref14">13,14</xref>
        ] is not too signi cant because we mainly focus on
constructing realistic randomized paths for BOTs. When implementing such an
algorithm in 3D rst-person shooter, our algorithm provides more realistic
motion behaviours than the minimized CBR-based path, while saving the property
of the path to be suboptimal.
2 https://www.unrealengine.com
      </p>
      <p>Figure 6 illustrates the visual comparison between piecewise linear path,
smoothed path and the shortest path drawn in yellow(1), pink(2) and green(3)
color respectively.</p>
      <p>
        We will continue the evaluation of this method by applying it to BOTs'
formations and by simplifying the computational part of the visibility measure,
expanding Markov's processes based approach for BOT motion from [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ].
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Bhattacharya</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gavrilova</surname>
          </string-name>
          , Marina L.:
          <article-title>Voronoi diagram in optimal path planning</article-title>
          .
          <source>In: 4th IEEE International Symposium on Voronoi Diagrams in Science and Engineering</source>
          . (
          <year>2007</year>
          )
          <volume>38</volume>
          {
          <fpage>47</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Choi</surname>
            ,
            <given-names>J.w.</given-names>
          </string-name>
          , Curry,
          <string-name>
            <given-names>Renwick E.</given-names>
            ,
            <surname>Elkaim</surname>
          </string-name>
          , Gabriel H.:
          <article-title>Obstacle avoiding real-time trajectory generation and control of omnidirectional vehicles</article-title>
          . In: American Control Conference. (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Gulati</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kuipers</surname>
            ,
            <given-names>B.:</given-names>
          </string-name>
          <article-title>High performance control for graceful motion of an intelligent wheelchair</article-title>
          .
          <source>In: IEEE International Conference on Robotics and Automation</source>
          . (
          <year>2008</year>
          )
          <volume>3932</volume>
          {
          <fpage>3938</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Guechi</surname>
            ,
            <given-names>E.H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lauber</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dambrine</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>On-line moving-obstacle avoidance using piecewise bezier curves with unknown obstacle trajectory</article-title>
          .
          <source>In: 16th Mediterranean Conference on Control and Automation</source>
          . (
          <year>2008</year>
          )
          <volume>505</volume>
          {
          <fpage>510</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Nagatani</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Iwai</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tanaka</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>Sensor based navigation for car-like mobile robots using generalized voronoi graph</article-title>
          .
          <source>In: IEEE International Conference on Intelligent Robots and Systems</source>
          . (
          <year>2001</year>
          )
          <volume>1017</volume>
          {
          <fpage>1022</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Reif</surname>
            ,
            <given-names>J. H.</given-names>
          </string-name>
          :
          <article-title>Complexity of the mover's problem and generalizations</article-title>
          .
          <source>20th Annual IEEE Conference on Foundations of Computer Science</source>
          (
          <year>1979</year>
          )
          <volume>421</volume>
          {
          <fpage>427</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Okabe</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Suzuki</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Locational optimization problems solved through voronoi diagrams</article-title>
          .
          <source>European Journal of Operational Research</source>
          <volume>98</volume>
          (
          <issue>3</issue>
          ) (
          <year>1997</year>
          )
          <volume>445</volume>
          {
          <fpage>456</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Mohammadi</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hazar</surname>
          </string-name>
          , N.:
          <article-title>A voronoi-based reactive approach for mobile robot navigation</article-title>
          .
          <source>Advances in Computer Science and Engineering</source>
          <volume>6</volume>
          (
          <year>2009</year>
          )
          <volume>901</volume>
          {
          <fpage>904</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Eren</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fung</surname>
            ,
            <given-names>C.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Evans</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          :
          <article-title>Implementation of the spline method for mobile robot path control</article-title>
          .
          <source>In: 16th IEEE Instrumentation and Measurement Technology Conference</source>
          . Volume
          <volume>2</volume>
          . (
          <year>1999</year>
          )
          <volume>739</volume>
          {
          <fpage>744</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Magid</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Keren</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rivlin</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yavneh</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          :
          <article-title>Spline-based robot navigation</article-title>
          .
          <source>In: International Conference on Intelilgent Robots and Systems</source>
          . (
          <year>2006</year>
          )
          <volume>2296</volume>
          {
          <fpage>2301</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Hwang</surname>
            ,
            <given-names>J.H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Arkin</surname>
            ,
            <given-names>R.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kwon</surname>
            ,
            <given-names>D.S.:</given-names>
          </string-name>
          <article-title>Mobile robots at your ngertip: Bezier curve on-line trajectory generation for supervisory control</article-title>
          .
          <source>In: IEEE International Conference on Intelligent Robots and Systems</source>
          . Volume
          <volume>2</volume>
          . (
          <year>2003</year>
          )
          <volume>1444</volume>
          {
          <fpage>1449</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Skrjanc</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Klancar</surname>
          </string-name>
          , G.:
          <article-title>Cooperative collision avoidance between multiple robots based on bezier curves</article-title>
          .
          <source>In: 29th International Conference on Information Technology Interfaces</source>
          . (
          <year>2007</year>
          )
          <volume>451</volume>
          {
          <fpage>456</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Ho</surname>
            ,
            <given-names>Y.J.</given-names>
          </string-name>
          , Liu,
          <string-name>
            <surname>J.S.:</surname>
          </string-name>
          <article-title>Smoothing voronoi-based obstacle-avoiding path by lengthminimizing composite bezier curve</article-title>
          .
          <source>In: International Conference on Service and Interactive Robotics</source>
          . (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Ho</surname>
            ,
            <given-names>Y.J.</given-names>
          </string-name>
          , Liu,
          <string-name>
            <surname>J. S.</surname>
          </string-name>
          :
          <article-title>Collision-free curvature-bounded smooth path planning using composite bezier curve based on voronoi diagram</article-title>
          .
          <source>In: IEEE International Symposium on Computational Intelligence in Robotics and Automation</source>
          . (
          <year>2009</year>
          )
          <volume>463</volume>
          {
          <fpage>468</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Fortune</surname>
            ,
            <given-names>S.:</given-names>
          </string-name>
          <article-title>A sweepline algorithm for voronoi diagrams</article-title>
          .
          <source>In: 2nd Annual Symposium on Computational geometry</source>
          . (
          <year>1986</year>
          )
          <volume>313</volume>
          {
          <fpage>322</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Guibas</surname>
            ,
            <given-names>Leonidas J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Knuth</surname>
            ,
            <given-names>Donald E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sharir</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Randomized incremental construction of delaunay and voronoi diagrams</article-title>
          .
          <source>Algorithmica</source>
          <volume>7</volume>
          (
          <issue>1</issue>
          ) (
          <year>1992</year>
          )
          <volume>381</volume>
          {
          <fpage>413</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17. van Toll,
          <string-name>
            <given-names>W.G.</given-names>
            ,
            <surname>Cook</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.F.</given-names>
            ,
            <surname>Geraerts</surname>
          </string-name>
          ,
          <string-name>
            <surname>R.:</surname>
          </string-name>
          <article-title>A navigation mesh for dynamic environments</article-title>
          .
          <source>Comput. Animat. Virtual Worlds</source>
          <volume>23</volume>
          (
          <issue>6</issue>
          ) (
          <year>November 2012</year>
          )
          <volume>535</volume>
          {
          <fpage>546</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Funge</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Millington</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          :
          <article-title>Arti cial Intelligence for Games</article-title>
          . M.
          <string-name>
            <surname>Kaufmann</surname>
          </string-name>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Barraquand</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Latombe</surname>
          </string-name>
          , J.:
          <article-title>Robot motion planning: A distributed approach</article-title>
          .
          <source>International Journal of Robotics Research</source>
          <volume>10</volume>
          (
          <issue>6</issue>
          ) (
          <year>1991</year>
          )
          <volume>628</volume>
          {
          <fpage>649</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Koenig</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sun</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Uras</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yeoh</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Incremental</surname>
            <given-names>ARA</given-names>
          </string-name>
          :
          <article-title>An incremental anytime search algorithm for moving-target search</article-title>
          .
          <source>In: Proceedings of the TwentySecond International Conference on Automated Planning and Scheduling</source>
          . (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Ish-Shalom</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>The funnel algorithm and task level robot control</article-title>
          .
          <source>In: IEEE International Conference on Robotics and Automation</source>
          . Volume
          <volume>4</volume>
          . (
          <year>1987</year>
          )
          <volume>25</volume>
          {
          <fpage>32</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Hingston</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          : Believable Bots: Can Computers Play Like People? Springer (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Makarov</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tokmakov</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tokmakova</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Imitation of human behavior in 3Dshooter game</article-title>
          .
          <source>In: 4th International Conference on Analysis of Images, Social Networks and Texts</source>
          . (
          <year>2015</year>
          )
          <volume>64</volume>
          {
          <fpage>77</fpage>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>