<!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>3DVFH+: Real-Time Three-Dimensional Obstacle Avoidance Using an Octomap</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>CoSys-Lab, Faculty of Applied Engineering Paardenmarkt 92</institution>
          ,
          <addr-line>B-2000 Antwerpen</addr-line>
        </aff>
      </contrib-group>
      <abstract>
        <p>Recently, researchers have tried to solve the computational intensive three-dimensional obstacle avoidance by creating a 2D map from a 3D map or by creating a 2D map with multiple altitude levels. When a robot can move in a three-dimensional space, these techniques are no longer su cient. This paper proposes a new algorithm for realtime three-dimensional obstacle avoidance. This algorithm is based on the 2D VFH+ obstacle avoidance algorithm and uses the octomap framework to represent the three-dimensional environment. The algorithm will generate a 2D Polar Histogram from this octomap which will be used to generate a robot motion. The results show that the robot is able to avoid 3D obstacles in real-time. The algorithm is able to calculate a new robot motion with an average time of 300 s.</p>
      </abstract>
      <kwd-group>
        <kwd>Three-Dimensional Obstacle Avoidance</kwd>
        <kwd>Octomap</kwd>
        <kwd>Navigation and Planning</kwd>
        <kwd>ROS</kwd>
        <kwd>Robotics</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Robotic applications such as airborne or underwater robots need to avoid
obstacles in a 3D environment. These robots need to create a 3D map from the
environment to locate obstacles. This can, for example, be accomplished by using
a 3D laser scan Simultaneous Localization and Mapping (SLAM) algorithm [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]
or a RGB-D SLAM algorithm [
        <xref ref-type="bibr" rid="ref2 ref3">2, 3</xref>
        ]. These algorithms will build a 3D map from
an unknown environment while at the same time locate the robot within this
map. The 3D maps can be represented more e ciently by the octomap
framework [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. In this research we will use this octomap to determine the locations of
obstacles so the robot can avoid them.
      </p>
      <p>
        Researchers [5{7] have tried to solve the 3D obstacle avoidance problem with
a 2D robot by creating a 2.5D height map from the original 3D map or by
projecting the 3D map on a 2D map. This technique can only be used if the robot
can move in 2D. When the robot can move in 3D, researchers [
        <xref ref-type="bibr" rid="ref8 ref9">8, 9</xref>
        ] solved the
3D obstacle avoidance problem by planning and re-planning a 3D path by using
the A* [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] and D* lite [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] algorithm. These techniques have the disadvantage
that they are computational expensive. In this paper, we presents the Three
Dimensional Vector Field Histogram (3DVFH+) algorithm. This is an real-time
obstacle algorithm, that will generate a robot motion to avoid obstacles in 3D.
      </p>
      <p>
        The 3DVFH+ algorithm is based on the 2D VFH+ algorithm [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. It will
make a 2D polar histogram from an octomap of the environment. The algorithm
consists of ve stages to calculate a new 3D robot motion.
      </p>
      <p>This research paper is organised in the following order. To begin with, the
related researches will be described in Section 2. Then in Section 3, we will
discuss the octomap framework. Section 4 will describe the multiple stages of
the 3DVFH+ algorithm. Section 5 follows with an analysis of the results of this
research. Next, we will come to a conclusion in Section 6. Finally, Section 7
proposes future improvements to the 3DVFH+ algorithm.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Related Work</title>
      <p>
        Ulrich et al. [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] presented the VFH+ algorithm on which the 3DVFH+
algorithm is based. This obstacle avoidance system is able to plan local paths for a
robot that can move in 2D. The VFH+ algorithm generates a smooth trajectory
in real-time and takes the physical characteristics such as size and turning speed
of the robot into account.
      </p>
      <p>
        Hrabar [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] described a probabilistic roadmap planner. The planner
generates a probabilistic roadmap which will be used to plan or re-plan a path with
the D* lite algorithm [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. When a path needed to be re-planned, it took on
average 0.15s.
      </p>
      <p>
        Burgard et al. [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] described a method for an autonomously quad-copter for
indoor use. This research will plan a 3D path by using the D* lite algorithm [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]
but only consider 2D actions of the robot. For these 2D points the multi-level
map will be used to nd the surface elevation under the robot to determine the
change in altitude cost.
      </p>
      <p>
        Maier et al. [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] developed a system that allows a Nao humanoid robot [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] to
plan its path in a 3D environment and map new obstacles. The path planning
algorithm uses a part of the octomap (vertical size of the robot) and project
it to a 2D map. Next the path planning algorithm will calculate a path in two
dimensions with an A* algorithm [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
      <p>
        Nieuwenhuisen et al. [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] presents a local multiresolution path planning
system. This system will use a multiresolution grid map that will be used for local
path planning. This planner will plan a new path to the intermediate goals
generated by the global path planner. This path will be planned by using an A*
algorithm [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
The octomap [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] data structure is an e cient way to represent a 3D
environment. The octomap can, for example, be accomplished by using a 3D laser scan
SLAM algorithm [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] or a RGB-D SLAM algorithm [
        <xref ref-type="bibr" rid="ref2 ref3">2, 3</xref>
        ]. With the octomap the
3DVFH+ algorithm can calculate a robot motion. This section will describe the
basic principles of the octomap. The octomap framework is a 3D occupancy grid
mapping framework based on the octree structure. The octree data structure
is a hierarchical structure containing multiple nodes. These voxels (also called
nodes) are cubic volumes in space. Every voxel can contain 8 or 0 child voxels.
When the voxel contains 8 occupied child voxels the octomap will reduce these 8
child voxels to one parent voxel that is occupied. If no child voxels are occupied
the voxels will be reduced to one parent voxel that is free. All the combinations
in between will be stored by using the 8 child voxels. The number of layers in
this hierarchical structure (also called the resolution of the octree) determine the
precision and size of the octree (see Figure 1). This way the entire environment
is represented by voxels.
      </p>
      <p>Robot applications often use a probabilistic representation of the
environment because input sensors introduce noise and therefore uncertainty into the
system. The octomap leaf voxels contains a probabilistic number. This allows
the octomap to have a probabilistic representation of the environment. This
likelihood will be used to determine if te voxel is occupied or if voxel is free.</p>
      <p>The octomap framework does not directly include information on the voxel
location. The location can be calculated when descending the octomap tree. The
root voxel has a xed location and the number of the child voxel that is explored
determines the location of the child voxel.
4</p>
    </sec>
    <sec id="sec-3">
      <title>3DVFH+</title>
      <p>
        3DVFH+ is an enhanced version of the two-dimensional VFH+ algorithm [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]
which is used to work in a 3D environment. The algorithm uses an octomap to
determine where the obstacles are located given the robot pose in a 3D
environment. The 3DVFH+ algorithm uses ve stages to calculate a new robot motion.
These stages are described in the following subsections.
4.1
      </p>
      <p>
        First Stage: Octomap Exploring
The octomap data structure makes use of the Octree data structure (see
Figure 1). When the robot moves around in a large environment it is not possible to
explore all the voxels due to computational limits. So the Octomap's exploring
stage will only research voxels that lie within a bounding box around the robot.
This bounding box has a size of ws ws ws (width, height and depth) and
contains the Vehicle Center Point (VCP) as centroid. The VCP is the center point
of the robot and the whole robot will be represented by this point. When a voxel
lies within the bounding box, the voxel is an active cell Ci;j ;k with i; j; k
coordinates within the active region Ca. The exploring stage only needs to nd voxels
that lie within the boundaries of the bounding box. The algorithm needs to use
the location of the voxels to determine which voxels need further exploration or
which voxels can be ignored. But the location of the voxels is not implemented
in the octomap data structure to reduce memory overhead [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. These locations
will be calculated when exploring the octomap tree. Voxels that are too far from
the bounding box will not be explored. This principle also works on high level
voxels, which will result in entire branches that can be ignored and improve the
exploring speed without losing relevant information. When a voxel is found by
the rst stage, the second stage will use the information from the located voxel
to make a 2D primary polar histogram
4.2
      </p>
      <p>Second Stage: 2D Primary Polar Histogram
The second stage will add the information from the voxel (which has been found
by the rst stage) into the 2D primary polar histogram. This histogram (as
shown in Figure 2) is a polar histogram where the location of an active voxel
is determined by two angles. These angles are determined by the position of
the voxel and the VCP. A weight that is calculated based on the voxel will be
inserted into the 2D primary polar histogram with the two angles as coordinates.</p>
      <p>First, the list of active cells will further be reduced by making a bounding
sphere within the bounding box. This can be accomplished by calculating the
euclidean distance di;j;k between the VCP and each voxel. When the euclidean
distance is larger then the radius of the bounding sphere di;j;k &gt; ws=2, the
active cell will be ignored. A boundary sphere is necessary to create a rotation
independent 2D polar histogram.</p>
      <p>Next, the algorithm will calculate the two angles to determine the
coordinates within the 2D primary polar histogram Hp. These angles are the azimuth
angle z (x-axis of the 2D primary polar histogram) and the elevation angle e
(y-axis of the 2D primary polar histogram). These angles are shown in Figure 3
li,j,k</p>
      <p>d i,j,k
λ i,j,k
rr+s+v</p>
      <p>VCP</p>
      <p>
        The azimuth angle z is calculated by using (1) which is also used in the
VFH+ algorithm [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. The combination of the oor function and the partition
by the resolution of the 2D polar histogram will create a natural number
(requirement for 2D primary polar histogram). The resolution is determined by
the di erence between the largest angle and the lowest angle that will lead to
the same cell within the 2D polar histogram.
      </p>
      <p>z = oor</p>
      <p>arctan
1
xi
yi
x0
y0
!
(1)</p>
      <p>The elevation angle needs to be calculated in a di erent way (see (2) and (3))
because we need the elevation angle independent of the azimuth angle. This can
be implemented by calculating p based on the x and y coordinates of the VCP
and the voxel, see Figure 3.</p>
      <p>e = oor
1 arctan zi
p
z0 !
p = p(xi
x0)2 + (yi
y0)2
(2)
this results in
The previous calculations used the VCP and the center of the voxel to calculate
the two angles. The size of the robot is implemented by enlarging all the active
voxels in the 2D primary polar histogram with rr+s+v to compensate for the
robots size, see Figure 4. This enlargement factor is calculated by adding the
radius of the robot rr, the safety radius rs and the voxel size rv. The voxels are
enlarged so the algorithm can calculate the maximum and minimum angle in
which the voxel lies, see (4).
(3)
(4)
(5)
(6)
(7)
The minimum distance between the voxel and the VCP can be calculated by
subtracting the enlargement from the euclidean distance, see (5).
li;j;k = di;j;k
rr+s+v
Now the algorithm has calculated which cells in the 2D primary polar histogram
are in uenced by the voxel, the algorithm needs to calculate the weight that the
voxel will add to the 2D primary histogram. The weight of a voxel is calculated
based on the euclidean distance li;j;k and their occupancy certainty oi;j;k, see
(6).</p>
      <p>Hzp;e =</p>
      <p>X
i;j;k2Ca &gt;&gt;&gt;: 0
8
&gt;&gt; (oi;j;k)2(a
&gt;
&lt;
bli;j;k)
if e 2 [ e
and z 2 [ z
otherwise
; e +</p>
      <p>]
; z +
]
i;j;k = oor
1 arcsin rr+s+v
di;j;k
!
Two constants a and b are calculated by using (7) to obtain a balanced a and b.
The value of these constants is unimportant, only the relative size or fraction is
important.</p>
      <p>a
b
ws
2
The weight of a voxel will be used during stage 4 to obtain the 2D binary polar
histogram.
After the second stage, the third stage will calculate and add new information
into the 2D primary polar histogram based on the physical characteristics of the
robot and location of the voxel. When the robot has a certain heading retrieved
by the RGBD-SLAM algorithm and speed, it cannot change direction instantly,</p>
      <p>Δxr
Δxl VCP rr
Δyr
dr</p>
      <p>
        Voxel
(8)
(9)
(10)
(11)
so it will need to turn. When the robot is moving slowly, this stage will be ignored
because it can change its direction instantly. The robot's turning trajectory
depends on the robot's forward velocity, turning speed and the climbing speed.
The turning speed and robot velocity are implemented in the VFH+ algorithm
[
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] so the same method can be used. The climbing acceleration has no in uence
on this part of the calculation.
      </p>
      <p>
        First, the two center points of the turning circle need to be calculated (see
Figure 5). This can be achieved in the same way as in the original VFH+
algorithm [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] (see (8) and (9)).
      </p>
      <p>xr = rr sin
xl =
rl sin</p>
      <p>yr = rr cos
yl =
rl cos
Secondly, the algorithm needs to check every active cell Ci;j;k to see if it lies on
the turning circle. This will be achieved by calculating the distance dl;r between
the centre of the turning circle and the voxel, see (10). To detect if the voxel lies
on the turning circle, the algorithm will compare this distance with the safety
range rr+s+v and the diameter of the turning circle rl;r, see (11). The function
x(i) will calculate the x distance between the voxel and the VCP.
dr = p( xr
dl = p( xl
x(i))2 + ( yr
x(i))2 + ( yl
y(j))2
y(j))2
dr &lt; (rr + rr+s+v)
dl &lt; (rl + rr+s+v)
Thirdly, the algorithm also needs to take the climbing motion of the robot into
account. The algorithm will calculate which cells within the 2D masked polar
histogram are blocked by the voxel. This will be achieved by calculating for all
the following e angles after the object which z angle is blocked by the voxel.
First, the climbing motion constant f needs to be calculated. This is achieved by
calculating the turning distance t to the obstacle, see (12). Next, the climbing
motion constant is calculated with the altitude di erence zi z0 and the turning
distance, see (13).
t
Next, a new unreachable altitude z z needs to be calculated for every z
angle after voxel. The turning distance t z, see (14) to the next z needs to be
calculated to determine the unreachable altitude, see (15).</p>
      <p>Finally, the unreachable elevation angle e will be calculated using the altitude
di erence and the euclidean distance l z, see (16) and by using (17).
l z = pr4
2:r2: cos(270</p>
      <p>2: z)
1
e =
arctan(
z z</p>
      <p>)
l z
These calculations can be extended so that the algorithm will calculate
unreachable cells with a given forward speed and maximum climb speed.
t =
f =
(17)
(18)
4.4</p>
      <p>Fourth Stage: 2D Binary Polar Histogram
The previous stages will generate a 2D primary polar histogram based on the
voxels of the octomap. The fourth stage will reduce the information further by
creating a 2D binary polar histogram based on the 2D primary polar histogram.
This will be accomplished by comparing every cell in the 2D primary polar
histogram with two thresholds low and high. When a value is higher than high
the point will be 1 in the 2D binary polar histogram. When a value is lower
than low the point will be 0 in the 2D binary polar histogram. If a point lies
between the two thresholds the value next to the point will be used in the 2D
binary polar histogram. The two thresholds allow the algorithm to distinguish
real obstacles and measurement errors.</p>
      <p>Because the 3DVFH+ algorithm uses a 2D polar histogram, the thresholds
high and low need to change when using a di erent elevation angle e. The cells
of the 2D polar histogram do not have the same size (as shown in Figure 2) so
to compensate for this, di erent thresholds are required for di erent elevation
angles, see (18). The size of these thresholds depends on the robot, the robot's
speed, the window size of stage ve, the octomap resolution and the bounding
sphere size.</p>
      <p>8 1
Hbz; e = &lt; 0</p>
      <p>p
: H z 1; p</p>
      <p>p
if H z; e &gt;</p>
      <p>p
if H z; e &lt;
otherwise
ehigh
elow</p>
      <p>Fifth stage: Path detection and selection
The fth stage searches for available paths in the 2D binary polar histogram
and selects the path with the lowest path weight. To determine which paths are
available the algorithm will detect openings in the 2D binary polar Histogram by
moving a window around the 2D binary polar histogram. This window will mark
the path passable, if all the elements in the window are equal to 0. This way
only large openings will be threaded as available paths. When implementing this
window the algorithms needs to take the polar properties of the histogram into
account. When the window crosses the boundaries of the histogram, the window
will use elements that are connected by the rules of a 2D polar histogram.</p>
      <p>When the window crosses the upper or lower boundary of the histogram (see
black markings in Figure 6) the cells that need to be checked are located in the
same elevation angle but 180 degrees rotated over the azimuth angle. When the
window crosses the left or right border the window will check the cells on the
other side of the histogram.</p>
      <p>
        Next, three path weights will be calculated and combined into a single path
weight for the candidate direction, see (19). The rst path weight will be
calculated based on the di erence between the target angle kt and the candidate
direction v. The second path weight is the di erence between the rotation of
the robot and the candidate direction v. The last path weight is the di erence
between the previous selected direction ki 1 and the candidate direction v. The
variable is used to select which of the three path weight has a larger impact
on the nal path weight. We used for our goal-oriented robot 1 = 5, 2 = 2
and 3 = 2 as proposed by Ulrich et al. [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. The path weight function can be
adapted to enable a di erent behavior. For example the path weight function
can give a preference to a turning motion instead of a climbing motion.
      </p>
      <p>The function (v1; v2) will calculate the di erence between the two elevation
angles and the two azimuth angles. From these di erences the function will
generate a weight based on the two calculated angle di erences.
ki =
1: (v; kt) + 2: (v; ) + 3: (v; ki 1)
(19)</p>
      <p>When the path weight of all the candidate directions is calculated the algorithm
can select the direction with the lowest weight. The chosen direction will be
converted into a robot motion. The conversion can easily be implemented by
making a decision tree that will generate a robot motion based on the coordinates
of the calculated direction.
5</p>
    </sec>
    <sec id="sec-4">
      <title>Results</title>
      <p>
        In this section we will evaluate the 3DVFH+ algorithm. The requirements for
the 3DVFH+ algorithm are that it needs to avoid obstacles in a 3D environment
and perform these calculations in real time. These results are generated by using
the Robot Operating System (ROS) [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] framework and the simulation software
gazebo [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ].
5.1
      </p>
      <p>
        3D Obstacle Avoidance Result
The 3DVFH+ algorithm is a 3D obstacle avoidance algorithm, so to test the
algorithm we simulated a quad-copter in gazebo. The quad-copter needed to y
from point A to point B and from point B to point C without bumping into
obstacles (as shown in Figure 7). For this simulations, the dataset FR-079
corridor [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] is used. This octomap has a resolution of 0.05 m and is publicly available.
      </p>
      <p>The left image in Figure 7 shows how the robot will go from point A to point
B and from point B to point C. The right in Figure 7 image shows how the
robot meets an obstacle O and will avoid it by a combination of ying over the
obstacle and turning to avoid the wall.
5.2</p>
      <p>Performance Result
This section will describe the performance of the 3DVFH+ histogram is
measured by using the same dataset and the same intermediate points as in the
previous section, see Figure 7. For these experiments we used a standard
laptop with an Intel i7-3720QM processor with a NVIDIA GeForce GT 650M. The
simulations were executed on a di erent machines to ensure that the simulation
software did not in uence the results. When performing the simulation the robot
was ying around at a low speed, so the third stage was ignored. The third stage
did not impact the performance measurements. The following parameters has
the most in uences to the performance of the algorithm: the bounding box size,
the moving window size, the thresholds of stage four, the robot speed, and the
octomap resolution. Due to the increasing complexity and the amount of voxels,
the performance will raise or slow down.</p>
      <p>We found that the average time that the algorithm needs to calculate a new
robot motion is 326 s. As a result, that the algorithm is capable of calculating on
average a new robot motion 3061 times per second. The rst three stages mainly
determine the speed of the algorithm because these stage speed depends on the
number of voxels within the bounding sphere. Based on multiple experiments
we found that it takes 300 ns for every voxel to calculate the 2D primary polar
histogram. The speed of the fourth and fth stage are negligible with a speed of
0.2 s for every robot motion. In practice the algorithm is limited to the other
algorithms that the robot uses to calculate its pose and the octomap.
6</p>
    </sec>
    <sec id="sec-5">
      <title>Conclusion</title>
      <p>The 3DVFH+ algorithm is a real-time three-dimensional obstacle avoidance
algorithm that uses an octomap to determine the obstacles locations. The
algorithm can determine the location of these obstacles in real-time because the
algorithm will only take obstacles into account that are located close to the
robot. From the location of the obstacles the algorithm will make a 2D primary
polar histogram based on the pose of the robot and location of the obstacles.
Next, the algorithm will take the physical capability of the robot into account.
In this 2D binary polar histogram the algorithm will nd multiple paths, give
them a path weight and determine the path with the lowest path weight. This
path will be used to calculate a motion for the robot. By using these techniques
the algorithm is able to calculate the robot motion real time in 3 dimensions.
7</p>
    </sec>
    <sec id="sec-6">
      <title>Future work</title>
      <p>Before the 3DVFH+ algorithm can be used, the algorithm needs to be con
gured based on the robot's size, robot's speed, octomap's resolution and multiple
levels of thresholds to generate a 2D binary polar histogram. These parameters
are chosen empirically. In future work this process could be automated.</p>
      <p>In this system the thresholds that generate a 2D binary polar histogram are
static. But when the robot is moving with a di erent speed, di erent thresholds
could and should be used.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>D. M.</given-names>
            <surname>Cole and P. M. Newman</surname>
          </string-name>
          ,
          <article-title>"Using laser range data for 3d slam in outdoor environments,"</article-title>
          <source>in Robotics and Automation</source>
          ,
          <year>2006</year>
          .
          <article-title>ICRA 2006</article-title>
          .
          <source>Proceedings 2006 IEEE International Conference on. IEEE</source>
          ,
          <year>2006</year>
          , pp.
          <fpage>1556</fpage>
          -
          <lpage>1563</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>F.</given-names>
            <surname>Endres</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hess</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Engelhard</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Sturm</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Cremers</surname>
          </string-name>
          , and
          <string-name>
            <given-names>W.</given-names>
            <surname>Burgard</surname>
          </string-name>
          ,
          <article-title>"An evaluation of the rgb-d slam system," in Robotics and Automation (ICRA</article-title>
          ),
          <source>2012 IEEE International Conference on. IEEE</source>
          ,
          <year>2012</year>
          , pp.
          <fpage>1691</fpage>
          -
          <lpage>1696</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>P.</given-names>
            <surname>Henry</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Krainin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Herbst</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Ren</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Fox</surname>
          </string-name>
          ,
          <article-title>"Rgb-d mapping: Using depth cameras for dense 3d modeling of indoor environments,"</article-title>
          <source>in the 12th International Symposium on Experimental Robotics (ISER)</source>
          , vol.
          <volume>20</volume>
          ,
          <year>2010</year>
          , pp.
          <fpage>22</fpage>
          -
          <lpage>25</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>A.</given-names>
            <surname>Hornung</surname>
          </string-name>
          ,
          <string-name>
            <surname>K. M. Wurm</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Bennewitz</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Stachniss</surname>
            , and
            <given-names>W.</given-names>
          </string-name>
          <string-name>
            <surname>Burgard</surname>
          </string-name>
          ,
          <article-title>"Octomap: An e cient probabilistic 3d mapping framework based on octrees,"</article-title>
          <source>Autonomous Robots</source>
          , vol.
          <volume>34</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>189</fpage>
          -
          <lpage>206</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>D.</given-names>
            <surname>Maier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Hornung</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Bennewitz</surname>
          </string-name>
          ,
          <article-title>"Real-time navigation in 3d environments based on depth camera data," in Humanoid Robots (Humanoids</article-title>
          ),
          <year>2012</year>
          12th
          <string-name>
            <given-names>IEEERAS</given-names>
            <surname>International</surname>
          </string-name>
          <article-title>Conference on</article-title>
          . IEEE,
          <year>2012</year>
          , pp.
          <fpage>692</fpage>
          -
          <lpage>697</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>J.</given-names>
            <surname>Chestnutt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Takaoka</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Suga</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Nishiwaki</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.</surname>
          </string-name>
          <article-title>Ku ner, and</article-title>
          <string-name>
            <given-names>S.</given-names>
            <surname>Kagami</surname>
          </string-name>
          ,
          <article-title>"Biped navigation in rough environments using on-board sensing,"</article-title>
          <source>in Intelligent Robots and Systems</source>
          ,
          <year>2009</year>
          .
          <article-title>IROS 2009</article-title>
          . IEEE/RSJ International Conference on. IEEE,
          <year>2009</year>
          , pp.
          <fpage>3543</fpage>
          -
          <lpage>3548</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>J.-S. Gutmann</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Fukuchi</surname>
            , and
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Fujita</surname>
          </string-name>
          ,
          <article-title>"3d perception and environment map generation for humanoid robot navigation,"</article-title>
          <source>The International Journal of Robotics Research</source>
          , vol.
          <volume>27</volume>
          , no.
          <issue>10</issue>
          , pp.
          <fpage>1117</fpage>
          -
          <lpage>1134</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>M.</given-names>
            <surname>Nieuwenhuisen</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Behnke</surname>
          </string-name>
          ,
          <article-title>"Hierarchical planning with 3d local multiresolution obstacle avoidance for micro aerial vehicles,"</article-title>
          <source>in Proceedings of the Joint Int. Symposium on Robotics (ISR) and the German Conference on Robotics (ROBOTIK)</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>S. G. G. G. W.</given-names>
            <surname>Burgard</surname>
          </string-name>
          ,
          <article-title>"A fully autonomous indoor quadrotor."</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>P. E. Hart</surname>
            ,
            <given-names>N. J.</given-names>
          </string-name>
          <string-name>
            <surname>Nilsson</surname>
            , and
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>Raphael</surname>
          </string-name>
          ,
          <article-title>"A formal basis for the heuristic determination of minimum cost paths,"</article-title>
          <source>Systems Science and Cybernetics</source>
          , IEEE Transactions on, vol.
          <volume>4</volume>
          , no.
          <issue>2</issue>
          , pp.
          <fpage>100</fpage>
          -
          <lpage>107</lpage>
          ,
          <year>1968</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <given-names>S.</given-names>
            <surname>Koenig</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Likhachev</surname>
          </string-name>
          ,
          <article-title>"Fast replanning for navigation in unknown terrain," Robotics, IEEE Transactions on</article-title>
          , vol.
          <volume>21</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>354</fpage>
          -
          <lpage>363</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12. I. Ulrich and
          <string-name>
            <given-names>J.</given-names>
            <surname>Borenstein</surname>
          </string-name>
          ,
          <article-title>"Vfh+: Reliable obstacle avoidance for fast mobile robots,"</article-title>
          <source>in Robotics and Automation</source>
          ,
          <year>1998</year>
          . Proceedings. 1998 IEEE International Conference on, vol.
          <volume>2</volume>
          . IEEE,
          <year>1998</year>
          , pp.
          <fpage>1572</fpage>
          -
          <lpage>1577</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <given-names>S.</given-names>
            <surname>Hrabar</surname>
          </string-name>
          ,
          <article-title>"3d path planning and stereo-based obstacle avoidance for rotorcraft uavs,"</article-title>
          <source>in Intelligent Robots and Systems</source>
          ,
          <year>2008</year>
          .
          <article-title>IROS 2008</article-title>
          . IEEE/RSJ International Conference on. IEEE,
          <year>2008</year>
          , pp.
          <fpage>807</fpage>
          -
          <lpage>814</lpage>
          .
          <article-title>Real-Time Three-Dimensional Obstacle Avoidance Using an Octomap 13</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <given-names>D.</given-names>
            <surname>Gouaillier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Hugel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Blazevic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Kilner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Monceaux</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Lafourcade</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Marnier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Serre</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Maisonnier</surname>
          </string-name>
          ,
          <article-title>"Mechatronic design of nao humanoid,"</article-title>
          <source>in Robotics and Automation</source>
          ,
          <year>2009</year>
          . ICRA'09. IEEE International Conference on. IEEE,
          <year>2009</year>
          , pp.
          <fpage>769</fpage>
          -
          <lpage>774</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15. "http://www.ros.
          <source>org/"</source>
          ,
          <year>2014</year>
          , Page retrieved on 21/05/
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16. "http://gazebosim.org
          <source>/"</source>
          ,
          <year>2014</year>
          , Page retrieved on 21/05/
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17. "http://ais.informatik.uni-freiburg.de/projects/datasets/octomap/",
          <year>2013</year>
          , Page retrieved on 18/05/
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>