A method of generating navigation data, the method including: receiving a new experience data set relating to a new experience capture, wherein experience data consists of data representative of a visual map of a physical space and said experience data set includes a set of nodes, each said node comprising a series of visual image frames taken over a series of time frames, with each node in an experience data set being linked to a previous node in the same data set by a 6 degree of freedom translational and rotational transform and each node containing a list of all landmarks observed in their associated visual image frames; receiving at least one stored experience data set relating to at least one previous experience capture; obtaining a candidate set of said nodes from the at least one stored experience data set that potentially matches a said node in the new experience data set, and checking if a said node in the candidate set matches the node in the new experience data set; wherein if a result of the checking is positive, then data relating to the matched nodes is added to a place data set useable for navigation, wherein place data consists of data representative of topological links between places in two or more different experience data sets, the place data set indicating that said matched nodes in different said experience data sets relate to a same place; characterised in that the step of checking if a said node in the candidate set matches the node in the new experience data set includes: creating a set of nodes ({m c} w), called a window of nodes, including a said node and a number of nodes either side of a said node in the candidate set; computing transforms from the node (m*) in the new experience data set to each said node in the window; if all the transforms are valid then computing translations from the node (m*) in the new experience data set to each said node in the window ({m c} w), and if a local minima is found between the node (m*) in the new experience data set and a said node in the window ({m c} w) then the node in the window with a smallest said translation is returned as matching the node (m*) in the new experience data set. receiving a new experience data set relating to a new experience capture, wherein experience data consists of data representative of a visual map of a physical space and said experience data set includes a set of nodes, each said node comprising a series of visual image frames taken over a series of time frames, with each node in an experience data set being linked to a previous node in the same data set by a 6 degree of freedom translational and rotational transform and each node containing a list of all landmarks observed in their associated visual image frames; receiving at least one stored experience data set relating to at least one previous experience capture; obtaining a candidate set of said nodes from the at least one stored experience data set that potentially matches a said node in the new experience data set, and checking if a said node in the candidate set matches the node in the new experience data set; wherein if a result of the checking is positive, then data relating to the matched nodes is added to a place data set useable for navigation, wherein place data consists of data representative of topological links between places in two or more different experience data sets, the place data set indicating that said matched nodes in different said experience data sets relate to a same place; characterised in that the step of checking if a said node in the candidate set matches the node in the new experience data set includes: creating a set of nodes ({m c} w), called a window of nodes, including a said node and a number of nodes either side of a said node in the candidate set; computing transforms from the node (m*) in the new experience data set to each said node in the window; if all the transforms are valid then computing translations from the node (m*) in the new experience data set to each said node in the window ({m c} w), and if a local minima is found between the node (m*) in the new experience data set and a said node in the window ({m c} w) then the node in the window with a smallest said translation is returned as matching the node (m*) in the new experience data set. creating a set of nodes ({m c} w), called a window of nodes, including a said node and a number of nodes either side of a said node in the candidate set; computing transforms from the node (m*) in the new experience data set to each said node in the window; if all the transforms are valid then computing translations from the node (m*) in the new experience data set to each said node in the window ({m c} w), and if a local minima is found between the node (m*) in the new experience data set and a said node in the window ({m c} w) then the node in the window with a smallest said translation is returned as matching the node (m*) in the new experience data set.