<!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>A distributed framework for monocular visual SLAM</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Ruwan Egodagamage</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mihran Tuceryan</string-name>
          <email>tuceryan@iupui.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Computer and Information Science Indiana University Purdue University Indianapolis Indianapolis</institution>
          ,
          <addr-line>Indiana 46202</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2017</year>
      </pub-date>
      <fpage>55</fpage>
      <lpage>61</lpage>
      <abstract>
        <p>In Distributed Simultaneous Localization and Mapping (SLAM), multiple agents generate a global map of the environment while each performing its local SLAM operation. One of the main challenges is to identify overlapping maps, especially when agents do not know their relative starting positions. In this paper we are introducing a distributed framework which uses an appearance based method to identify map overlaps. Our framework generates a global semi-dense map using multiple monocular visual SLAM agents, each localizing itself in this map.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>In Simultaneous Localization and Mapping (SLAM), an
agent creates a map of an unknown environment, at the same
time localizing itself in it. These two tasks, cannot be solved
independent to each other. An accurate estimation of the pose
is required, to build a map. At the same time, a good map is
required for agent localization.</p>
      <p>In certain applications such as indoor tracking, there could
be multiple agents moving in a given environment. The
agents (cameras for our purposes in this paper) can enter and
exit the environment at any time. The environment may be
unknown. If there is a map of the environment, the agents
can utilize it to localize themselves in it. If an agent moves in
a part of the environment that is not mapped, it can start
building the map and localize itself in it as part of the SLAM
process. Each agent can do this independently, however, when
they are operating in a common environment, it makes sense
to use their locally built maps to complement each other and
complete and/or improve the global map and, therefore, help
each other in their respective tasks.</p>
      <p>One can use a camera as the only input device to perform
Visual SLAM. Ubiquitous cameras (e.g., on mobile devices)
make visual SLAM a more popular choice. However,
cameras impose an additional challenge since they provide
bearing only data. In recent work, both feature based and
featureless direct methods are used in visual SLAM. Direct methods
like [Engel et al., 2014] generate denser maps. Dense maps
can be more attractive in certain applications, such as
augmented reality, in which a user is interacting with the
environment and virtual objects in the environment. It is desirable
that this interaction be realistic and seamless. A dense map
of the environment makes this interaction possible.</p>
      <p>Additionally, using multiple agents to perform SLAM
increases the robustness of SLAM process and makes it more
fault tolerant and less vulnerable for catastrophic failures.
One of the main challenges in distributed SLAM is to
compute map overlaps, especially when agents have no prior
knowledge of their relative starting positions. Usually agents
also have limited bandwidth to communicate with each other.</p>
      <p>In this paper we introduce a distributed framework for
monocular visual SLAM agents with no initial knowledge of
their relative positions.
2
2.1</p>
    </sec>
    <sec id="sec-2">
      <title>Related Work</title>
      <sec id="sec-2-1">
        <title>Visual SLAM</title>
        <p>Building a 3D map of the environment from motion has been
studied in computer vision under the name of structure from
motion [Faugeras and Lustman, 1988; Sturm and Triggs,
1996]. However, this 3D scene structure estimated from
motion does not necessarily mean that the result is a coherent
global map. In SLAM this is accomplished by “loop closure”
in which features or structures already seen before are used
to refine the map as well as correct the camera’s path and,
therefore, the localization.</p>
        <p>Davison et al. introduced a visual SLAM method of
capturing the path of a freely moving camera (6 Degrees of
Freedom — DoF), while generating a sparse map [Davison et
al., 2007]. The method was called Monocular visual SLAM
(MonoSLAM). MonoSLAM is limited to work in a
roomsized environment. A more robust method called Parallel
Tracking and Mapping (PTAM) was introduced by Klein et
al. in [Klein and Murray, 2007]. It focused on accurate and
fast mapping in a similar environment to MonoSLAM.</p>
        <p>In contrast to feature based methods, recent Monocular
SLAM work, DTAM by Newcombe et al. in [Newcombe
et al., 2011] and LSD-SLAM by Engel et al. [Engel et al.,
2014], utilize image pixel intensities directly, and generate
dense or semi-dense maps of the environment. These maps
describe the environment better. And, generally, they are
more robust to blur.
2.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>Distributed SLAM</title>
        <p>Multiple agents in a distributed SLAM system could be
handled using a naive brute-force method, where nodes
communicate all sensor observations and map updates with each
other in a complete graph topology. However, the
communication bandwidth and computational resources available for
an agent are typically limited and the distributed network is
subject to failures of nodes and links. So it is necessary to
come up with an intelligent approach to cope with these
challenges.</p>
        <p>A unique, globally consistent map can be easily generated,
if the agents know either their relative locations or map
overlaps. For example, in [Nettleton et al., 2006] relative
locations of the agents are found by global positioning sensors
(GPS). It is also relatively easier to determine map overlaps
if all relative initial poses of agents are known. For example,
Paull et al. in [Paull et al., 2015] initialize agents with known
GPS location information.</p>
        <p>The problem becomes more difficult if the relative
locations of the agents are unknown. In some contributions,
agents continue building local sub maps until the agents meet
each other. Howard et al. [Howard et al., 2006] propose a
method where each agent could detect the other agents. The
agents use these coincidental encounters to find their relative
locations. Dieter Fox et al. in [Fox et al., 2006] present a
method where each agent is actively seeking the other agents
in the environment to find relative locations between them.</p>
        <p>We used our experimental framework for distributed
SLAM [Gamage and Tuceryan, 2016] for the development
of the methods in this paper.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Methodology</title>
      <p>The distributed computing framework is implemented as
computing nodes that communicate with each other over a
network. The nodes have different computing tasks
depending on what their function is.
3.1</p>
      <sec id="sec-3-1">
        <title>The distributed SLAM framework</title>
        <p>We have two types of nodes in our distributed framework,
exploring nodes and monitoring nodes. Nodes are physically
located in different computers. They communicate with each
other using the underlying computer network. At any given
time, there is one monitoring node and multiple exploring
nodes. Each node has a unique identifier. The exploring
nodes are linked to the monitoring node and exploring nodes
may be linked to each other if their maps overlap resulting in
a network of nodes as shown in Figure 1.</p>
        <p>The exploring nodes perform monocular visual SLAM.
Each node receives images from a single camera. Also these
nodes receive data and commands from the monitoring node.
They exchange data between each other and they send data
to the monitoring node. Our framework adapted the
monocular visual SLAM work by [Engel et al., 2014] in exploring
nodes. The details of the exploring nodes are described in
section 3.3.</p>
        <p>The monitoring node continuously receives data from
exploring nodes. By looking at the maps of exploring nodes, it
detects map overlaps and loop closures. Accordingly, it
issues commands to relevant exploring nodes. The details of
the monitoring nodes are described in section 3.2.</p>
      </sec>
      <sec id="sec-3-2">
        <title>The Robot Operating System</title>
        <p>We use the ROS infrastructure [Quigley et al., 2009] to
implement the distributed SLAM framework. A ROS node is
responsible of performing computations. ROS also provides a
message passing communication framework between nodes.
Nodes in our framework are implemented as ROS nodes.</p>
        <p>In its communication framework, ROS provides named
communication buses called topics. Multiple nodes can
publish messages to a topic while multiple subscribed nodes
could receive them. Based on the requirement, ROS could
either use UDP or TCP for message passing. In our
framework data and commands are communicated between nodes
as ROS messages.</p>
        <p>ROS has a master server to list all available topics of a
system. After identifying providers and subscribers of a topic by
communicating with master server, ROS nodes can
communicate with each other, peer-to-pear via topics.</p>
        <p>The Map
In our framework, a map is represented using a set of
keyframes in a pose graph.</p>
        <p>The ith keyframe, Ki consists of an absolute pose ⇠ W i, an
image Ii, an inverse depth map Di, an inverse depth variance
map Vi, and a list of features fi(n). Each keyframe gets a
globally unique 32 bit identifier as shown in Algorithm 1.
Algorithm 1 Unique identifier for a keyframe
1: procedure GETUNIQUEID(keyf rame id, node id)
2: id SHIFTLEFT(node id, 20)
3: id id + keyf rame id
4: return id . A globally unique identifier</p>
      </sec>
      <sec id="sec-3-3">
        <title>5: end procedure</title>
        <p>The pose graph contains edges, "ji, having similarity
transformation ⇠ ji 2 R7 and corresponding covariance matrix
⌃ ji, between ith and jth key frames as shown in Figure 2.
The relative pose between the two nodes is encoded with
three components of the translation and the four components
of the quaternion.
3.2</p>
      </sec>
      <sec id="sec-3-4">
        <title>Monitoring nodes</title>
        <p>
          The monitoring node contains a feature store to collect all the
SURF [Bay et al., 2008] features
          <xref ref-type="bibr" rid="ref8">(and SIFT [Lowe, 2004]
descriptors)</xref>
          received from the exploring nodes. It also
maintains a fusion graph of exploring nodes to keep track of map
overlaps.
        </p>
      </sec>
      <sec id="sec-3-5">
        <title>Map overlap detection</title>
        <p>All features found in incoming the key frames are compared
against features in the feature store. If there are more than N
matching features with a key frame of a different node, it is
concluded that those two nodes have overlapping maps. The
threshold N is determined empirically.</p>
        <p>Exploring nodes are represented as vertices in the fusion
graph. All identified map overlaps are represented as edges
in the fusion graph. The weight corresponds to the number of
matching features found across multiple key frames.</p>
      </sec>
      <sec id="sec-3-6">
        <title>Loop closure detection</title>
        <p>Similar to map overlap detection, if there are matching
features between two key frames of the same node and there is
no edge between those key frames in the map, then it is
considered a loop closure. Loop closures that connect temporally
far apart key frames, corresponds to the event where agent
revisit a location after a while. These large loop closures help to
reduce accumulated pose drift, and improve the accuracy of
the entire map. Similarly, small loop closures, which connect
key frames that are temporally closer, improve sub regions of
the map.</p>
      </sec>
      <sec id="sec-3-7">
        <title>Rigid transformation between key frames</title>
        <p>In both map overlap detection and loop closure detection, the
relative rigid transformation between key frames are
computed using a least-square method [Sorkine-Hornung and
Rabinovich, 2017]. RANSAC algorithm [Fischler and Bolles,
1981] is used to get rid of outliers.
3.3</p>
      </sec>
      <sec id="sec-3-8">
        <title>Exploring nodes</title>
        <p>The functional modules and the architecture of an exploring
node are shown in Figure 3 which consist of the input stream,
tracking, mapping, and optimization modules. All these
modules run in separate threads.</p>
        <p>The input stream module accepts incoming frames from
the camera as well as commands and data from other nodes.</p>
        <p>The tracking module accepts a new frame from the input
stream module, and tracks it against the current key frame. If
the current key frame no longer can track the frame, i.e. when
the frame has significantly deviated from the key frame, a new
key frame is created.</p>
        <p>The old key frame is added to the map by the mapping
module. The new key frame is also sent to the monitoring
node and to all other exploring nodes subscribed (linked) to
the current exploring node.</p>
        <p>The optimization module continuously optimizes the pose
graph in the background. After each optimization the pose
graph is sent to the monitoring node and to the subscribed
exploring nodes.</p>
      </sec>
      <sec id="sec-3-9">
        <title>Map merging process</title>
        <p>The Figure 4 shows the sequence of operations that take place
in the map merging process.</p>
        <p>Consider the case in which the exploring node A receives a
merge command from the monitoring node. The input stream
module puts the command into a command buffer. The
tracking module contains multiple state submodules, including
one for map merging. The map merging state submodule,
processes the command from the buffer and changes its state,
to waiting for a map from the other exploring node B.
Furthermore, it sends its own map to B. Once the map of B is
received, all new key frames and the new pose graph is added
into the A’s map, and the state is changed to the default state,
where node A is waiting for new merge commands.</p>
        <p>Figure 5 shows a resultant map after map merging process.</p>
      </sec>
      <sec id="sec-3-10">
        <title>Multiple instances of the same ROS node</title>
        <p>In our distributed framework, we implemented exploring
node as a ROS node. Given there are multiple instances of
exploring node in the network, we have to configure these
instances, so that we can uniquely identify each exploring
node’s topics. For this we use ROS topic remapping. For
example, say we have two exploring node instances, namely A
and B, then exploring node’s /dvslam/graph topic could be
remapped to /A/dvslam/graph and /B/dvslam/graph.
In this way, node A could listen to topic /B/dvslam/graph
and node B could listen to topic /A/dvslam/graph.</p>
        <p>The following simplified scripts in Listing 1 and Listing 2
show how an exploring node was configured for remapping.</p>
        <p>Listing 1: Setting up environment variables
export ROS_IP=10.1.2.3
export ROS_MASTER_URI=http://10.1.2.2:11311
export EXP_NODE=2
roslaunch exploring_node.launch</p>
        <p>Listing 2: ROS node launch script
&lt;launch&gt;
&lt;node pkg="exploring_node"
type="live_slam"
name="node_$(env EXP_NODE)"
args="image:=/image_raw
camera_info:=/camera_info"
output="screen"&gt;
&lt;remap from="/dvslam/graph"
to="/$(env EXP_NODE)/dvslam/graph"/&gt;</p>
        <sec id="sec-3-10-1">
          <title>Camera</title>
        </sec>
        <sec id="sec-3-10-2">
          <title>Frames</title>
        </sec>
        <sec id="sec-3-10-3">
          <title>Exploring Node</title>
          <p>Map</p>
        </sec>
        <sec id="sec-3-10-4">
          <title>Input Stream</title>
        </sec>
        <sec id="sec-3-10-5">
          <title>Tracking</title>
        </sec>
        <sec id="sec-3-10-6">
          <title>Mapping</title>
        </sec>
        <sec id="sec-3-10-7">
          <title>Optimization</title>
        </sec>
        <sec id="sec-3-10-8">
          <title>Commands &amp;</title>
        </sec>
        <sec id="sec-3-10-9">
          <title>Data</title>
        </sec>
        <sec id="sec-3-10-10">
          <title>Key frames</title>
        </sec>
        <sec id="sec-3-10-11">
          <title>Pose graph</title>
        </sec>
        <sec id="sec-3-10-12">
          <title>Incremental map updating after merging</title>
        </sec>
        <sec id="sec-3-10-13">
          <title>Receiving map from another exploring node</title>
        </sec>
        <sec id="sec-3-10-14">
          <title>Monitoring Node fusion graph feature store</title>
          <p>Nodes use ROS topics and messages to issue commands and
to exchange data. Four topics named, keyframes, graph,
command and map are used in the framework. These topics are
fully-qualified using the namespace /dvslam/.</p>
          <p>ROS topics used in the framework are shown in Table 1.
The publisher node writes data and subscriber nodes receive
the data via the topic.</p>
        </sec>
      </sec>
      <sec id="sec-3-11">
        <title>Network statistics</title>
        <p>A distributed SLAM could easily reach the bandwidth
limitations of a network, especially, when dense maps are
transferred between nodes. In our distributed framework we could
generate statistics by using ROS Topic Statistics.</p>
        <p>The measurement of traffic volume in bytes of every
connection between nodes helps us to identify bandwidth
utilization. Furthermore, measurements like number of dropped
messages between nodes is a good indication of reaching the
bandwidth limit. Other statistics such as mean &amp; standard
deviation of the age of messages, and period of messages of
all nodes can also be used to investigate the communication
between nodes.
4
4.1</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Experimental Results</title>
      <sec id="sec-4-1">
        <title>The experimental setup</title>
        <p>Our experimental setup is designed to precisely define the
ground truth against which the estimated camera positions
along the motion path can be measured. To test our
framework we mounted a global shutter camera, Point Grey
Firefly MV, on a Computer Numeric Control (CNC) machine as
shown in Figure 6. We then prepared a 1m ⇥ 1.5m table
surface containing wooden objects. We then moved the
camera above the wooden objects, roughly 4 minutes each time,
along known paths and captured both the image stream and
the ground truth from the CNC controller. The CNC machine
has 0.2mm accuracy in all 3 axes. The camera operated in
640 ⇥ 480 pixel resolution. To capture ground truth from the
tiny CNC controller, we wrote an open source ROS node in
[Egodagamage, 2017].
4.2</p>
      </sec>
      <sec id="sec-4-2">
        <title>Running experiments</title>
        <p>We defined two different 3D paths with 10% overlap, P athA
and P athB with two different known starting points A and
B respectively. Next, we collected four datasets, with two
different camera orientations for each path. We created two
experiments. In the first experiment, we selected two datasets
having parallel camera optical axes. In the second experiment
we used remaining two datasets, where the optical axes is
40 to each other. Each dataset is used to deploy an exploring
node.</p>
        <p>In each experiment, two exploring nodes and one
monitoring node are used. These nodes are deployed in three different
computers. Once the framework detected map overlaps, we
recorded the relative transformation between the maps of
exploring nodes. Each experiment is repeated 100 times. The
average transformation for each experiment is then compared
against the ground truth to compute errors in rotation and
translation.</p>
        <p>In both experiments, resultant rotation errors in translation
Monitoring</p>
        <p>Node</p>
        <p>Other
Exploring</p>
        <p>Node</p>
        <p>Merge
Command</p>
        <p>Map</p>
        <p>Buf ers</p>
        <p>State SM</p>
        <p>Received</p>
        <p>Map</p>
        <p>Map
Optimization</p>
        <p>Module
Input Stream</p>
        <p>Module</p>
        <p>Tracking
Module
Monitoring nodes always receive key frames from all exploring
nodes. After merging maps, exploring nodes exchange key frames
between each other.</p>
        <p>Monitoring nodes always receive pose graph from all exploring
nodes. After merging maps, exploring nodes exchange pose graphs
between each other.</p>
        <p>All exploring nodes process commands addressed to them and
discard others. Commands like map merging, loop closure is received
via this topic.</p>
        <p>During the merge process, relevant exploring nodes subscribe each
others’ map topic and unsubscribe once done.
In this paper, we have introduced a distributed framework for
visual SLAM, with no knowledge of relative starting
positions of exploring nodes. We have tested our framework using
two experiments. Each experiment was repeated 100 times to
compute the relative transformation between maps of two
exploring nodes. We found that, the error from the ground truth
was less than 3cm in calculating the translation between maps
and less than 6 in calculating the rotation.</p>
        <p>As future work, we will be working on supporting more
than two exploring nodes. We will also be working on
methods to recover random node failures. Moreover, we will be
conducting more experiments on network bandwidth
utilization.
slam with low-bandwidth communication for teams of
vehicles. In Field and Service Robotics, pages 179–188.</p>
        <p>Springer, 2006.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [Bay et al.,
          <year>2008</year>
          ]
          <string-name>
            <given-names>Herbert</given-names>
            <surname>Bay</surname>
          </string-name>
          , Andreas Ess, Tinne Tuytelaars, and Luc Van Gool.
          <article-title>Speeded-up robust features (surf)</article-title>
          .
          <source>Comput. Vis. Image Underst</source>
          .,
          <volume>110</volume>
          (
          <issue>3</issue>
          ):
          <fpage>346</fpage>
          -
          <lpage>359</lpage>
          ,
          <year>June 2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [Davison et al.,
          <year>2007</year>
          ]
          <string-name>
            <given-names>A.J.</given-names>
            <surname>Davison</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I.D.</given-names>
            <surname>Reid</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.D.</given-names>
            <surname>Molton</surname>
          </string-name>
          , and
          <string-name>
            <given-names>O.</given-names>
            <surname>Stasse</surname>
          </string-name>
          . Monoslam:
          <article-title>Real-time single camera slam</article-title>
          .
          <source>Pattern Analysis and Machine Intelligence</source>
          , IEEE Transactions on,
          <volume>29</volume>
          (
          <issue>6</issue>
          ):
          <fpage>1052</fpage>
          -
          <lpage>1067</lpage>
          ,
          <year>June 2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <source>[Egodagamage</source>
          , 2017]
          <string-name>
            <surname>Ruwan J Egodagamage.</surname>
          </string-name>
          <article-title>An open source ros node for tinyg motion controller</article-title>
          . https: //github.com/japzi/rostinyg,
          <year>2017</year>
          . [Online; accessed in February 2017].
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [Engel et al.,
          <year>2014</year>
          ]
          <string-name>
            <given-names>Jakob</given-names>
            <surname>Engel</surname>
          </string-name>
          , Thomas Schps, and Daniel Cremers.
          <article-title>Lsd-slam: Large-scale direct monocular slam</article-title>
          .
          <source>In Computer Vision ECCV</source>
          <year>2014</year>
          , volume
          <volume>8690</volume>
          of Lecture [Fox et al.,
          <year>2006</year>
          ]
          <string-name>
            <given-names>D.</given-names>
            <surname>Fox</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Ko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Konolige</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Limketkai</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Schulz</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Stewart</surname>
          </string-name>
          .
          <article-title>Distributed multirobot exploration and mapping</article-title>
          .
          <source>Proceedings of the IEEE</source>
          ,
          <volume>94</volume>
          (
          <issue>7</issue>
          ):
          <fpage>1325</fpage>
          -
          <lpage>1339</lpage>
          ,
          <year>July 2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <source>[Gamage and Tuceryan</source>
          , 2016]
          <string-name>
            <given-names>R.</given-names>
            <surname>Gamage</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Tuceryan</surname>
          </string-name>
          .
          <article-title>An experimental distributed framework for distributed simultaneous localization and mapping</article-title>
          .
          <source>In 2016 IEEE International Conference on Electro Information Technology (EIT)</source>
          , pages
          <fpage>0665</fpage>
          -
          <lpage>0667</lpage>
          , May
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [Howard et al.,
          <year>2006</year>
          ]
          <string-name>
            <given-names>Andrew</given-names>
            <surname>Howard</surname>
          </string-name>
          , LynneE. Parker, and GauravS. Sukhatme.
          <article-title>The sdr experience: Experiments with a large-scale heterogeneous mobile robot team</article-title>
          .
          <source>In Jr. Ang</source>
          , MarceloH. and Oussama Khatib, editors,
          <source>Experimental Robotics IX</source>
          , volume
          <volume>21</volume>
          of Springer Tracts in Advanced Robotics, pages
          <fpage>121</fpage>
          -
          <lpage>130</lpage>
          . Springer Berlin Heidelberg,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <source>[Klein and Murray</source>
          , 2007]
          <string-name>
            <given-names>G.</given-names>
            <surname>Klein</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.</given-names>
            <surname>Murray</surname>
          </string-name>
          .
          <article-title>Parallel tracking and mapping for small ar workspaces</article-title>
          .
          <source>In Mixed and Augmented Reality</source>
          ,
          <year>2007</year>
          .
          <source>ISMAR</source>
          <year>2007</year>
          .
          <article-title>6th IEEE and</article-title>
          ACM International Symposium on, pages
          <fpage>225</fpage>
          -
          <lpage>234</lpage>
          ,
          <year>Nov 2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <source>[Lowe</source>
          , 2004]
          <string-name>
            <given-names>David G.</given-names>
            <surname>Lowe</surname>
          </string-name>
          .
          <article-title>Distinctive image features from scale-invariant keypoints</article-title>
          .
          <source>Int. J. Comput. Vision</source>
          ,
          <volume>60</volume>
          (
          <issue>2</issue>
          ):
          <fpage>91</fpage>
          -
          <lpage>110</lpage>
          ,
          <year>November 2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [Nettleton et al.,
          <year>2006</year>
          ]
          <string-name>
            <given-names>Eric</given-names>
            <surname>Nettleton</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Sebastian</given-names>
            <surname>Thrun</surname>
          </string-name>
          , Hugh Durrant-Whyte, and
          <string-name>
            <given-names>Salah</given-names>
            <surname>Sukkarieh</surname>
          </string-name>
          . Decentralised [Newcombe et al.,
          <year>2011</year>
          ] Richard A. Newcombe,
          <string-name>
            <given-names>S.J.</given-names>
            <surname>Lovegrove</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.J.</given-names>
            <surname>Davison</surname>
          </string-name>
          . Dtam:
          <article-title>Dense tracking and mapping in real-time</article-title>
          .
          <source>In Computer Vision</source>
          (ICCV),
          <year>2011</year>
          IEEE International Conference on, pages
          <fpage>2320</fpage>
          -
          <lpage>2327</lpage>
          ,
          <year>Nov 2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [Paull et al.,
          <year>2015</year>
          ]
          <string-name>
            <given-names>L.</given-names>
            <surname>Paull</surname>
          </string-name>
          , Guoquan Huang,
          <string-name>
            <given-names>M.</given-names>
            <surname>Seto</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.J.</given-names>
            <surname>Leonard</surname>
          </string-name>
          .
          <article-title>Communication-constrained multi-auv cooperative slam</article-title>
          .
          <source>In Robotics and Automation (ICRA)</source>
          ,
          <year>2015</year>
          IEEE International Conference on, pages
          <fpage>509</fpage>
          -
          <lpage>516</lpage>
          , May
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [Quigley et al.,
          <year>2009</year>
          ] Morgan Quigley, Ken Conley, Brian Gerkey, Josh Faust, Tully Foote, Jeremy Leibs, Rob Wheeler, and Andrew Y Ng.
          <article-title>Ros: an open-source robot operating system</article-title>
          .
          <source>In ICRA workshop on open source software</source>
          , volume
          <volume>3</volume>
          , page 5,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          <source>[Sorkine-Hornung and Rabinovich</source>
          , 2017]
          <article-title>Olga SorkineHornung</article-title>
          and
          <string-name>
            <given-names>Michael</given-names>
            <surname>Rabinovich</surname>
          </string-name>
          .
          <article-title>Least-squares rigid motion using svd</article-title>
          .
          <year>2017</year>
          . Available at https://igl. ethz.ch/projects/ARAP/svd_rot.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          <source>[Sturm and Triggs</source>
          , 1996]
          <string-name>
            <given-names>Peter</given-names>
            <surname>Sturm</surname>
          </string-name>
          and
          <string-name>
            <given-names>Bill</given-names>
            <surname>Triggs</surname>
          </string-name>
          .
          <article-title>A factorization based algorithm for multi-image projective structure and motion</article-title>
          .
          <source>In European conference on computer vision</source>
          , pages
          <fpage>709</fpage>
          -
          <lpage>720</lpage>
          . Springer,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>