Robot apparautus and control method for resuming operation following a pause.
15 claims: 3 independent, 12 dependent
- 1An apparatus comprising:a robot (100);and a controller of the robot configured to: perform simultaneous localization and mapping for learning the spatial distribution of one or more continuous signals in an environment in which the robot (100) is navigating, compute a pose of the robot through the simultaneous localization and mapping as the robot moves along a surface to generate one or more maps, wherein the pose comprises a position and orientation of the robot (100), wherein each of the one or more maps includes a vector field being defined by signal vectors over space of measurement values of the one or more continuous signals expected for various positions along the surface (150);navigate the robot such that the robot treats the surface (150) in a methodical manner;characterized in that the controller of the robot configured to: determine that operation of the robot has been paused, and after resumption of operation of the robot: re-localize the robot (100) within a map of the one or more maps without erasing the one or more maps;and resume treatment of the surface in the methodical manner, wherein the robot is configured to reposition itself in a previously mapped area when operation is resumed by searching the vector field for positions that provide a signal vector fitting sensor measurements of the robot, wherein the controller is further configured to return the robot (100) to a previous pose prior to resumption of treatment, wherein the previous pose is from a time prior to the pausing event, wherein the previous pose comprises a prior position and a prior orientation.
- 2The apparatus of Claim 1, wherein the controller is further configured to resume treatment of the surface (150) substantially without re treating areas of the surface already treated prior to the pausing event.
- 3The apparatus of Claim 1, wherein to re-localize the robot, the controller is further configured to:obtain a current set of actually-observed sensor measurements;convert the current set of actually-observed sensor measurements to converted sensor measurements, wherein the converted sensor measurements are independent of the orientation of the robot;compare the converted sensor measurements to a plurality of sensor measurements of the one or more maps corresponding to different positions within the one or more maps;and identify a pose from among the plurality of positions of the one or more maps, wherein the pose comprises a position and orientation of the robot.
- 4The apparatus of Claim 3, wherein to compare, the controller is further configured to:calculate closeness between the converted sensor measurements and the plurality of sensor measurements for nodes of the map;select a cell based on the closeness calculated for its nodes;interpolate within the cell to generate the position of the pose;and analyze the current set of actually-observed sensor measurements to generate an orientation of the pose.
- 5The apparatus of Claim 4, wherein to compare, the controller is further configured to:calculate closeness between the converted sensor measurements and the plurality of sensor measurements for nodes of the map;select a node based on the closeness;for a cell adjacent to the selected node, interpolate within the cell to generate the position of the pose;and analyze the current set of actually-observed sensor measurements to generate an orientation of the pose.
- 6The apparatus of one of the preceding claims, wherein the robot (100) is adapted to pause in response to a user initiated event.
- 7A method of estimating a pose of a robot (100), the method comprising:performing simultaneous localization and mapping for learning the spatial distribution of one or more continuous signals in an environment in which the robot is navigating;computing the pose of the robot through the simultaneous localization and mapping as the robot moves along a surface (150) to generate one or more maps, wherein the pose comprises position and orientation of the robot, wherein each of the one or more maps includes a vector field being defined by signal vectors over space of measurement values of the one or more continuous signals expected for various positions along the surface;navigating the robot such that the robot (100) treats the surface in a methodical manner;determining that operation of the robot has been paused, and after resuming operation of robot: re-localizing the robot within a map of the one or more maps without erasing the one or more maps;returning the robot to a previous pose prior to resuming treatment, wherein the previous pose is from a time prior to the pausing event, wherein the previous pose comprises a prior position and a prior orientation;and resuming treatment of the surface (150) in the methodical manner, wherein the robot is configured to reposition itself in a previously mapped area when operation is resumed by searching the vector field for positions that provide a signal vector fitting sensor measurements of the robot.
- 8The method of Claim 7, further comprising resuming treatment of the surface substantially without re-treating areas of the surface (150) already treated prior to the pausing event.
- 9The method of Claim 7, wherein re-localizing further comprises:obtaining a current set of actually-observed light sensor measurements;comparing the actually-observed light sensor measurements to a plurality of light sensor measurements of the one or more maps corresponding to different positions within the one or more maps;and identifying a pose from among the plurality of positions of the one or more maps, wherein the pose comprises a position and orientation of the robot.
- 10The method of Claim 9, wherein re-localizing further comprises:obtaining a current set of actually-observed light sensor measurements;converting the current set of actually-observed light sensor measurements to converted light sensor measurements, wherein the converted light sensor measurements are independent of the orientation of the robot;comparing the converted light sensor measurements to a plurality of light sensor measurements of the one or more maps corresponding to different positions within the one or more maps;and identifying a pose from among the plurality of positions of the one or more maps, wherein the pose comprises a position and orientation of the robot.
- 11The method of Claim 10, wherein comparing further comprises:calculating closeness between the converted light sensor measurements and the plurality of light sensor measurements for nodes of the map;selecting a cell based on the closeness calculated for its nodes;interpolating within the cell to generate the position of the pose;and analyzing the current set of actually-observed light sensor measurements to generate an orientation of the pose.
- 12The method of Claim 8, further comprising confirming the identified pose by further tracking of the pose of the robot (100) and comparing a count of measurement outliers to a value to confirm or reject the identified pose.
- 13The method of Claim 10, wherein comparing further comprises:calculating closeness between the converted light sensor measurements and the plurality of light sensor measurements for nodes of the map;selecting a node based on the closeness;for a cell adjacent to the selected node, interpolating within the cell to generate the position of the pose;and analyzing the current set of actually-observed light sensor measurements to generate an orientation of the pose.
- 14The method of Claim 7, wherein determining that operation of the robot (100) has been paused further comprises determining that the robot (100) has been lifted off of the surface, controlling the robot so that it should not be moving, and detecting motion with a gyroscope.
- 15The method of Claim 7, wherein determining that operation of the robot (100) has been paused further comprises detecting user interaction with a pause function of the robot.
Independent claims15
362 paragraphs in 4 sections, as filed
BACKGROUND OF THE INVENTION
Field of the Invention
0001The invention generally relates to mobile robots, and in particular, to the localization of mobile robots.
Description of the Related Art
0002<patcit id="pcit0001" dnum="US2011125323A1"><text>US2011/12.5323 A1</text></patcit> relates to a robot having a signal sensor, a motion sensor configured to measure a relative change in pose, a local correlation component configured to correlate the signal with the position and/or orientation of the robot in a local region including the robot's current position, and a localization component configured to apply a filter to estimate the position and optionally the orientation of the robot based at least: on a location reported bv the motion sensor, a signal detected by the signal sensor, and the signal predicted by the local correlation component.
0003By choosing appropriate sensors, computing hardware, algorithms, and a process for setup, a mobile robot can be installed for autonomous navigation in almost any indoor space [1].
0004The question from a consumer perspective then becomes, how cheap can a system be designed, and how simple can the setup process be made. In the context of autonomous floor cleaning, the hardware costs should be as small as possible (within a few tens of dollars) and the setup should be minimal, e.g. the often suggested approach of first fully mapping an environment for the purpose of localization afterwards [2] will not be acceptable to many end consumers.
0005In this respect, approaches using vision or small laser range finders have become very successful within the last few years. Samsung's Hauzen is one of the existing autonomous vacuum cleaners showing systematic navigation. A camera pointing towards the ceiling is used for tracking the pose of the robot [3]. The same sensor configuration is used nowadays on many other robot vacuums, including those of Yujin Robotics, Philips and LG Electronics. In addition to the up-facing camera, LG's Roboking also uses an optical sensor observing the floor surface. A different sensing technology is employed in Neato's XV-11 vacuum robot: a miniature laser range finder [4]. Navigation using that sensor has been a research topic for more than two decades [5].
SUMMARY
0006According to the invention, an apparatus according to claim 1 is provided. The dependent claims set out particular embodiments of the invention.
0007According to a further aspect of the invention, a method according to claim 7 is provided. The dependent claims set out particular embodiments of the invention.
0008The robots can also include a drive assembly, such as a motor, wheels, gearbox and the like for moving and maneuvering the robot, include wheel odometers for odometry, a gyroscope for measuring yaw angle, and a treatment assembly, such as a cleaning assembly, for treating a surface, such as a floor.
BRIEF DESCRIPTION OF THE DRAWINGS
0009These and other features of the invention will now be described with reference to the drawings summarized below. These drawings (not to scale) and the associated descriptions are provided to illustrate preferred embodiments of the invention and are not intended to limit the scope of the invention. Like designations denote like elements. <ul id="ul0001" list-style="none" compact="compact"><li><figref idref="f0001">Figure 1</figref> illustrates an example embodiment of a mobile device configured to learn signal distributions for use in localizing and navigating an environment.</li><li><figref idref="f0002">Figure 2</figref> is a functional logical diagram illustrating example functional elements of an embodiment of such a mobile device.</li><li><figref idref="f0003">Figure 3</figref> illustrates an example physical architecture of an embodiment of such a mobile device.</li><li><figref idref="f0004">Figure 4</figref> illustrates a linear relationship between the actual ("truth") ground position of a mobile device and the output of a sensor detecting signals at that ground position.</li><li><figref idref="f0005">Figure 5</figref> illustrates a non-linear relationship between the actual ("truth") ground position of a mobile device and the output of a sensor detecting signals at that ground position.</li><li><figref idref="f0006">Figure 6</figref> is a flow chart of an example localization filter initialization process.</li><li><figref idref="f0007">Figure 7</figref> illustrates an example embodiment of a signal sensor for localization.</li><li><figref idref="f0008">Figure 8</figref> is a cross-section of the sensor of <figref idref="f0007">Figure 7</figref>.</li><li><figref idref="f0009">Figure 9</figref> illustrates a top-down perspective of an illustrative example operating environment with a grid of sensor measurement points.</li><li><figref idref="f0010">Figure 10</figref> illustrates an example of rotational variance of signal measurement as well as detected variation in the signal throughout the environment of <figref idref="f0009">Figure 9</figref>.</li><li><figref idref="f0011">Figure 11</figref> illustrates bilinear interpolation used by some embodiments.</li><li><figref idref="f0012">Figure 12</figref> is a flow chart illustrating an example use of GraphSLAM for localization.</li><li><figref idref="f0013">Figure 13</figref> illustrates an example 8-neighborhood of a node.</li><li><figref idref="f0014">Figure 14</figref> illustrates an example extrapolation of localization values for a new node from a neighboring pair of nodes.</li><li><figref idref="f0015">Figure 15</figref> is a flow chart illustrating an example use of EKF SLAM for localization.</li><li><figref idref="f0016 f0017 f0018 f0019 f0020 f0021 f0022">Figures 16-22</figref> illustrate an example development of an information matrix in an embodiment using EKF SLAM for localization.</li><li><figref idref="f0023">Figure 23</figref> is a flow chart illustrating an example use of ESEIF-SLAM for localization.</li><li><figref idref="f0024">Figure 24</figref> illustrates example results of using odometry (dead-reckoning) alone to follow a navigational plan.</li><li><figref idref="f0025">Figure 25</figref> illustrates example results of using an example embodiment of background signal localization to follow a navigational plan.</li><li><figref idref="f0026">Figures 26</figref> and <figref idref="f0027">27</figref> illustrate example signal strength maps generated by an embodiment.</li><li><figref idref="f0028">Figure 28</figref> illustrates a map generated by vector-field SLAM during a cleaning run in a relatively large 3-bedroom home environment.</li><li><figref idref="f0029">Figure 29</figref> illustrates bilinear interpolation from cell nodes.</li><li><figref idref="f0030">Figure 30</figref> illustrates a sample grid in vector field SLAM showing information links.</li><li><figref idref="f0031">Figure 31</figref> illustrates an atlas of three maps each having a beacon that projects two unique spots for localization.</li><li><figref idref="f0032">Figure 32</figref> is a flowchart of computing motion for a robot from dead reckoning data, such as data from odometry and a gyroscope.</li><li><figref idref="f0033">Figure 33</figref> illustrates a robot moving in a straight line followed by an in-place rotation.</li><li><figref idref="f0034">Figure 34</figref> illustrates a robot moving in an arc.</li><li><figref idref="f0035">Figures 35A and 35B</figref> are flowcharts illustrating re-localization with one pose hypothesis.</li><li><figref idref="f0036">Figure 36</figref> is flowchart illustrating re-localization with multiple pose hypotheses.</li><li><figref idref="f0037">Figure 37</figref> is a flowchart illustrating a process for finding a pose hypothesis.</li><li><figref idref="f0038">Figure 38</figref> is a flowchart illustrating an alternative process for finding a pose hypothesis.</li><li><figref idref="f0039">Figure 39</figref> illustrates an example of area coverage as a function of the number of beacons.</li><li><figref idref="f0040">Figure 40A</figref> illustrates experimental results for position error in meters.</li><li><figref idref="f0041">Figure 40B</figref> illustrates experimental results for position errors in percentages of errors above 1 meter.</li><li><figref idref="f0042">Figure 41</figref> is a block diagram illustrating one implementation of an apparatus for position estimation.</li><li><figref idref="f0043">Figure 42</figref> illustrates an example of a use for the position estimation techniques.</li><li><figref idref="f0044">Figure 43</figref> illustrates a geometrical model associated with one embodiment.</li></ul>
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
0010Although these methods and apparatus will be described in terms of certain preferred embodiments, other embodiments that are apparent to those of ordinary skill in the art, including embodiments that do not provide all of the benefits and features set forth herein, are also within the scope of the invention.
0011One embodiment uses low-cost indoor navigation which employs active beacons in the form of navigation cubes that project two patterns onto the ceiling in the area to be cleaned (see <figref idref="f0001">Figure 1</figref>). It can be argued that this is a modification to the environment. However, other systems also require modifications before a robot can operate, e.g. turning on lights for a vision system, installing virtual walls for defining the area the robot is allowed to navigate in, or, in general, opening doors and clearing of obstacles. In another embodiment, the localization system leverages on existing infrastructure already present in the home, for example the WiFi signals of base stations.
0012Some of the advantages of embodiments compared to vision or range finders-based solutions are the low memory footprint and the low computational requirements. The data structures used fit into tens of kilobytes and are updated on relatively low-cost computational hardware, such as an ARM7 processor. This reduces the cost of the localization subsystem which is crucially important in consumer products and can make the difference between success and failure of the product in the marketplace.
0013Localization using active beacons looks trivial at first sight as the pose of the robot could be triangulated from the known beacon positions [6]. However, usually the beacon positions are not known <i>α priori</i> and the beacon signals become distorted by reflections off walls and furniture. The latter is also a well-known problem with other similar signals, like GPS in urban canyons [7], or the mobile positioning in wireless networks [8].
0014Instead of modeling or filtering multi-path signals, recent approaches compute a signal map over the environment, sometimes also referred to as <i>location fingerprinting</i> [9]. The signal map can be learned by, for example, Expectation-Maximization [10] or Gaussian Process Latent Variable Models [11]. In one embodiment, the signal map is learned using a simultaneous localization and mapping (SLAM) approach.
0015In one embodiment, the signal map includes signal vectors over space and is referred to as Vector Field SLAM. An earlier application (<patcit id="pcit0002" dnum="US940937" dnum-type="L"><text>U.S. Application No. 12/940,937</text></patcit>) disclosed a method for keeping a robot localized in small- to medium-sized environments containing a single "Northstar" beacon [12, 13]. A Northstar beacon refers to a device which projects two or more spots of lights, preferably to a ceiling. These spots can be in the infrared spectrum and each spot can be distinguished based on a switching frequency at which the spots are pulsed.
0016Described herein are methods and systems for the localization of an object, such as a mobile object (e.g., a robotic floor cleaner). Certain embodiments may utilize such mobile object localization to navigate the mobile object. By way of illustration and not limitation, the mobile object may optionally be an autonomous, semiautonomous, or remotely directed floor cleaner (e.g., a sweeper, a vacuum, and/or a mopper), delivery vehicle (e.g., that delivers mail in a building, food in a hospital or dormitory, etc.), or monitoring vehicle (e.g., pollution or contaminant detector, security monitor), equipped with one or more drive motors which drive one or more wheels, tracks, or other such device, where the drive motors may be under control of a computing device executing a program stored in non-transitory memory (e.g., it persists when the object is powered down or when some other data is overwritten or erased).
0017Example embodiments will now be described with reference to certain figures. Through the description herein, "localization" may include determining both the position of an object in an environment and the orientation of that object. The combination of position and orientation is referred to as the "pose". Either or both of the position (or location) and orientation may be absolute (in terms of a logical reference angle and origin) or relative (to another object).
0018Many objects, including mobile objects, are not functionally or physically symmetrical. Knowing the orientation of such objects may be useful in determining how to navigate such objects in an environment. For example, some mobile objects can only move forward and some mobile objects may have functional components, such as vacuum ports or sweepers, at specific locations on their surface. Also, the current orientation of a mobile object may affect its future position as much as its current position does if it moves in the direction of its orientation. Thus, determining the pose of a mobile object may be of great assistance in determining how to navigate the mobile object to perform a task, such as a floor cleaning task, in an efficient manner.
0019For convenience, much of this disclosure is expressed in terms of localizing a "mobile device". However, the disclosed aspects may generally be used to localize types of objects, and one of skill in the art will understand how the disclosure can be applied to objects that are not independently mobile (such as those that are transported or carried by something else) and to objects that are not devices (e.g., pets equipped with collars or humans carrying appropriately configured tags or computing devices).
0020Typically, when performing tasks such as vacuum cleaning, lawn mowing, delivery, elderly care, etc., an autonomous or mobile device needs to know its pose with respect to its environment in order to reach its goal or accomplish its task in an effective way. For example, toys and other devices might be intended and configured to behave in a particular manner when they are in a particular location. Even if the device itself has no additional task or goal that benefits from localization, if its pose can be determined then the location of a person or other entity carrying or otherwise attached to the device can be determined. If the relative orientations of the carrier and the device are known, then the pose of the carrier can be determined.
0021The methods and systems disclosed herein advance the state of the art in how the pose of an autonomous device is computed from a combination of observations of a vector field that varies over space and measurements from motion sensors such as odometers, gyroscopes, accelerometers, internal measurement units (IMU) or other dead-reckoning devices (generically referred to as "dead-reckoning sensors" and the output of which is generically referred to as "odometry" or "motion measurements"). Measurements (e.g., measurements of change in position or orientation) from a motion sensor may be relative to another position or may be absolute. Such measurements may include measures of location or distance (e.g., distance or direction of travel) as well as measures of object orientation (e.g., amount of rotation from a previous orientation or amount of rotation from an absolute reference). Wave or other signals emitted into an environment by an external source can create an appropriate vector field. Example methods and systems disclosed herein use a localization and mapping technique, such as a simultaneous (which may be substantially simultaneous) localization and mapping (SLAM) framework, for estimating object pose, parameters modeling rotational variability, and parameters describing the signal distribution or vector field in the environment.
0022Example embodiments incorporating certain disclosed aspects can localize and track a mobile device with higher accuracy than conventional methods that ignore complications such as rotational variability or multi-path effects. Some embodiments do so in a way that requires no a priori map of the environment or of the signal strength in that environment. Some disclosed embodiments can optionally do so while using relatively inexpensive amounts of computational resources such as processing power, storage, and time, such that the functionality disclosed herein can be made available in a relatively compact mobile device and/or it can be distributed in affordable mass market consumer goods, including products which perform additional functionality beyond localizing, mapping, or navigating. Pose estimates can be obtained in near real time in some such embodiments and some embodiments run in constant or substantially constant time, with storage requirements linear or near linear based on the size of the environment for a given node size (i.e., for a given node size, it is linear in the number of nodes).
0023<figref idref="f0001">Figure 1</figref> illustrates an example context or environment in which an object 100 such as a mobile device may be situated. The environment 110 in this example includes left wall 120, right wall 130, front wall 135, ceiling 140, and floor or ground 150. One or more signal sources 180 generate background wave signals - the aforementioned vector field. The mobile device 100 includes a signal detector 170 configured to detect the signals generated by the sources 180 and a dead-reckoning (motion) sensor 190 to report on observed motion.
0024<patcit id="pcit0003" dnum="US7720554B"><text>U.S. Patent No. 7,720,554</text></patcit> discloses, among other things, a low-cost optical sensing system for indoor localization. A beacon 160 projects a pair of unique infrared patterns or spots 180 on the ceiling 140. The beacon 160 can be placed relatively freely in the environment 110 and adjusted such that it points towards the ceiling 140. An optical signal sensor 170 measures the direction to both spots 180 on the ceiling 140. The signal sensor 170 then reports the coordinates of both direction vectors projected onto the sensor plane. These beacon spots 180 are the signal sources in an example embodiment that is used throughout this disclosure. Other embodiments may use more or fewer spots 180. Other wave signals such as those used in Wi-Fi, GPS, cellular networks, magnetic fields, sound waves, radio-frequency identification (RFID), or light can also be used. Corresponding sources include wireless routers, satellites, cell towers, coils, speakers, RFID transmitters, and projectors. For example, appropriately configured ceiling lights or speakers may be used in certain embodiments. Although the illustrated embodiment uses a dedicated projector 160 to generate the signal sources 180, in other embodiments preexisting or off-the-shelf generators can be used. For example, in an apartment complex or a yard, a detector 170 may be configured to take advantage of the distinct Wi-Fi signals available from the various Wi-Fi routers that may be within range. Similarly, existing lights, including fixed ceiling lights, may be used with photo-sensitive sensors. Other signal sources may generate soundwaves (audible, subsonic, or ultrasonic) and the detector 170 may be configured to detect the generated waves. Thus, no or minimal modification to the environment is necessary for such embodiments to be effective. Digital signals, including those transmitted by radio and/or as used in wireless communications may also be used.
0025Because an indoor embodiment is used to illustrate many of the disclosed aspects, those aspects are disclosed in the context of an indoor environment. However, the disclosed aspects are not limited in this way and can operate outdoors as well as indoors.
0026A system that tracks the pose of a mobile device 100 equipped with a signal sensor 170 by relying, even in part, on the values reported by that sensor 170 faces a number of challenges. Typically, the signals sensed by the sensor 170 will have a different strength or value at different locations in the environment. In the illustrated scenario, the mobile device 100 moves along the ground 150 (although one of skill could readily apply what is disclosed to a mobile device that travels along a wall or ceiling, or that moves (and rotates) in three dimensions). One challenge is relating a change in the detected (sensed) signal to a change in ground position. The relationship between sensed signal and ground position is the "scale" parameter.
0027Another challenge stems from the construction, manufacture, or assembly of the sensor 170, performance properties of the sensor 170, and/or its association with or coupling to the mobile device 100. In some embodiments the orientation of the sensor 170 is fixed relative to the environment 110 and is independent of the rotation of the mobile device 100. For example, a gyroscopic or inertial system may be used to rotatably attach the sensor 170 to the mobile device 100 such that when the mobile device turns or rotates, the sensor rotates in a counter direction. In other embodiments the sensor 170 is rigidly affixed to or integrated with the mobile device 100 such that its orientation is substantially fixed relative to the orientation of the mobile device 100. Indeed, in this disclosure the position and orientation of the sensor 170 are presumed to be identical to that of the mobile device 100 so that, for example, "sensor 170" is used interchangeably with "device 100" when discussing pose or motion. As discussed below, this assumption simplifies the disclosure. One of reasonable skill can readily account for any fixed or calculable offset between the orientation of the sensor 170 and the device 100.
0028Ideally, rotation of the sensor 170 relative to the environment 110 should not affect the detected signal or should affect it in a way that depends only on the degree of rotation. For example, the direction to signal sources 180 changes when rotating the sensor 170, but the magnitude of the signal at that position is not changed. However, some sensors have directional sensitivities. For example, a Wi-Fi receiver can show changes in signal strength when the antenna is rotating as a result of the device on which it is mounted (e.g., the mobile device) rotating. Even in such a situation, the variation might be predictable and calculable. However, errors in manufacturing, misalignments in attaching the sensor on the object, uneven flooring, and the like may introduce an additional, difficult to predict, variation in the orientation of the signal sensor 170 relative to the orientation of the device 100. This may lead to seemingly unpredictable variation in the signal strength detected by the sensor 170. Thus, for example, a sensor 170 measuring bearing and elevation relative to sources 180 can show variations due to calibration errors of the sensor's vertical axis. This parameter is referred to herein as "rotational variability".
0029A third challenge in determining the pose of a mobile device arises from the multiple paths from the signal sources 180 to the sensor 170. In general, a sensor 170 may receive a wave signal not only directly from a source 180 but also through reflections on walls 120, 130, 135 and other stationary and non-stationary objects in the environment (e.g., furniture, trees, and humans). The direct path as well as each reflection may contribute to the signal measured on the sensor 170. This can create non-linear and seemingly arbitrary distributions of the signal throughout the environment 110. This effect is referred to herein "multi-path".
0030Some embodiments of the methods and systems disclosed are configured to operate when some or all of the following conditions are met:
0031First, a given signal can be uniquely identified relative to other signals so that when a signal is detected at different times in an environment 110 with multiple signals, a correspondence between the signals can be maintained. For example, signals in Wi-Fi, GPS and other networks contain a unique ID as part of their data packet protocol. Active beacons, such as those disclosed in <patcit id="pcit0004" dnum="US7720554B"><text>U.S. Patent No. 7,720,554</text></patcit>, may encode a signature (e.g., by modulating the signal, such as by modulating a light that forms light spots on a ceiling).
0032Second, signals are substantially continuous and change over space but optionally not in time. It should be understood that continuity does not mean that there is necessarily a one-to-one correspondence of vector of signal values to ground positions. The same measurement vector might be observed at several different locations in the environment 110 because, for example, of multi-path. Some embodiments may operate with signals that change in time, where the change over time is known or can be predicted.
0033Third, a dependency on orientation can by described by signal sensor orientation and rotational variability. In other words, knowing the signal values at one pose (position and orientation) enables expected signal values for other orientations at the same position to be calculated if the change in sensor orientation and any rotational variability are known.
0034<figref idref="f0002">Figure 2</figref> illustrates an example functional block diagram of an embodiment of a localization system. A dead reckoning sensor 190 provides relative motion data (odometry). Information from the dead reckoning sensor may be used to estimate, in whole or in part, the device's current position based upon a previously determined position and advancing that position using a known or estimated speed over an elapsed period of time.
0035The dead reckoning (motion) sensor 190 may include multiple instances of multiple types of dead reckoning sensors such as those mentioned above. A signal sensor 170 provides measurement vectors of the signals in the environment. The signal sensor 170 may include multiple instances of one or more types of sensing components. In some embodiments the signal sensor 170 may include one or more sensors which detect more than one different types of signals (e.g., the signal sensor 170 may include both Wi-Fi sensors and light sensors). Some such embodiments may use only one signal type at a time; some such embodiments may normalize the output of the signal sensor and proceed as if there were only one type of (composite) signal being sensed; and some embodiments may extend what is disclosed below in obvious ways by using the availability of more signal sensor data to improve the filtering results.
0036The output of sensors 170, 190 are provided to a Vector Field SLAM module 220. The illustrated SLAM module 220 reads and stores information 230 about a grid of nodes. The SLAM module 220 also provides pose estimates of the mobile device 100 and map information about the signal distribution in the environment 110. These may be provided to other components for use and/or display. For example, pose estimates may be provided to a navigational component 240, which directs the mobile device 100 to move to a new location based at least in part on its current pose. They may also be provided to an alerting or action system 250 which uses the current pose as at least a partial basis for subsequent action such as cleaning. The map may be stored for future use and/or displayed for diagnostic purposes, for example.
0037Even though many appropriate signal sources may be present or could be made available, and although appropriate signal sensors may be configured on an embodiment, some embodiments will optionally not use GPS, not use WiFi, not use direct light signals (e.g., non-reflected light from lamps or infrared sources), and/or not make use of ceiling lighting fixtures for some or all aspects of the localization process.
0038<figref idref="f0003">Figure 3</figref> illustrates example physical components of an appropriately configured example device 100. The dead reckoning sensors 190 and signal sensors 170 are instantiated by components such as those described above. Those physical sensors may include their own processors and/or local storage components and may be configured to normalize data and generate standardized output signals. The sensor components may communicate with one or more processors 310. The processor may be, for example, a specially configured chip or a more general processor executing software. Regardless, it is configured in accordance with what is disclosed herein. The processor may include its own storage, but it may be advantageous for the device 100 to include additional memory or storage 320 to store any necessary software and the data necessary to implement the methods disclosed below. In some embodiments the sensors may also store data directly in the memory 320. Software for implementing aspects of what is disclosed would typically be stored in ROM, flash memory, or some other form of persistent storage, although volatile storage may be used as well. Data may be stored in volatile (e.g., can be erased when the system powers down) and/or non-volatile memory (which stores the data for later access even if the device is powered down and then powered up again). The processor 310 and storage 320 may also be used for functional purposes not directly related to localization. For example, the mobile device 100 may use them when performing navigation or when performing tasks such as cleaning or guarding. In other embodiments, the processing and storage capacity are dedicated to localization and mapping and the device contains additional computational capacity for other tasks.
0039The processor 310 may be operatively connected to various output mechanisms such as screens or displays, light and sound systems, and data output devices (e.g., busses, ports, and wireless or wired network connections). The processor may be configured to perform navigational routines which take into account the results of the SLAM process. Executing a navigational process may result in signals being sent to various controllers such as motors (including drive motors or servomotors), brakes, actuators, etc, which may cause the mobile device 100 to move to a new pose (or to perform another activity, such as a cleaning function). The move to this new pose may, in turn, trigger additional output from the sensors to the processor, causing the cycle to continue. An example embodiment is configured with an ARM7 processor, 256K of flash ROM for software, and 64K of RAM for data. These are not minimum requirements - some or all of what is disclosed herein can be accomplished with less processing and storage capacity. Other embodiments may be different processors and different memory configurations, with larger or smaller amounts of memory.
0040Turning back to <figref idref="f0001">Figure 1</figref>, the signal sensor 170 measures bearing and elevation to two or more of the projected spots 180 on the ceiling 140. Bearing and elevation can be translated into (x, y) coordinates in a sensor coordinate system by projecting them onto the sensor plane, which in the illustrated example embodiment is typically less than 10cm above the ground 150 and is substantially parallel to it. In addition to the signal coordinates, the amount of light from each spot 180 is measured as the signal magnitude.
0041The geometry of the illustrated localization system results in a linear model for position estimation in an ideal environment without multi-path signals. That is, if the sensor 170 moves one meter in one direction, the sensor coordinates change by a certain amount (depending on the scale parameter, which is proportional to the height of the ceiling 140). If the sensor 170 then moves another meter into the same direction, the sensed signals change by the same amount. <figref idref="f0004">Figure 4</figref> illustrates this property by using measurements of a sensor 170 mounted on a fixed path (or "rail") along which the sensor 170 moves in a fixed and known direction. The rail is an experimental platform for evaluating the systems and methods described herein which allows the ground position of the sensor 170 to be known to observers and which also allows the orientation of the sensor 170 to be controlled. On the x-axis the position on the rail is shown. The y-axis shows the y coordinate of one of the spots 180 in sensor units.
0042In situations such as that shown in <figref idref="f0004">Figure 4</figref>, the linear distribution of the wave signal can be used directly for the localization of the sensor 170 in conjunction with other system parameters. For example, in the embodiment illustrated in <figref idref="f0001">Figure 1</figref> with two spots 180, these parameters could be chosen as per Eq. 1, where <i>s</i><sub>1</sub> and <i>s</i><sub>2</sub> are scale factors for each spot 180 and <b>m</b><sub>0</sub> = (<i>m</i><sub>0<i>,x</i>1</sub><i>m</i><sub>0<i>,y</i>1</sub><i>m</i><sub>0<i>,x</i>2</sub><i>m</i><sub>0<i>,y</i>2</sub>)<i><sup>T</sup></i> contains absolute offsets (<i>m</i><sub>0<i>,x</i>1</sub><i>m</i><sub>0<i>,x</i>1</sub>)<i><sup>T</sup></i> for the first spot 181 and (<i>m</i><sub>0<i>,x</i>2</sub><i>m</i><sub>0<i>,y</i>2</sub>)<i><sup>T</sup></i> for the second spot 182. <maths id="math0001" num="Eq. 1"><math display="block"><msub><mi>ν</mi><mi mathvariant="italic">init</mi></msub><mo>=</mo><mfenced><msub><mi>s</mi><mn>1</mn></msub><msub><mi>s</mi><mn>2</mn></msub><msub><mi mathvariant="bold">m</mi><mn>0</mn></msub></mfenced></math><img file="EP2776216B1_D0001.tif" /></maths>
0043From these parameters, an expected signal value <b>h</b> = (<i>h</i><sub><i>x</i>1</sub><i>, h</i><sub><i>y</i>1</sub><i>, h</i><sub><i>x</i>2</sub><i>, h</i><sub><i>y</i>2</sub>)<i><sup>T</sup></i> at a sensor position (<i>x y</i>)<i><sup>T</sup></i> can be calculated as: <maths id="math0002" num="Eq. 2"><math display="block"><mfenced><mtable columnalign="left"><mtr><mtd><msub><mi>h</mi><mrow><mi>x</mi><mn>1</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>h</mi><mrow><mi>y</mi><mn>1</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>h</mi><mrow><mi>x</mi><mn>2</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>h</mi><mrow><mi>y</mi><mn>2</mn></mrow></msub></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced><mtable columnalign="left"><mtr><mtd><msub><mi>m</mi><mrow><mn>0</mn><mo>,</mo><mi>x</mi><mn>1</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>m</mi><mrow><mn>0</mn><mo>,</mo><mi>y</mi><mn>1</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>m</mi><mrow><mn>0</mn><mo>,</mo><mi>x</mi><mn>2</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>m</mi><mrow><mn>0</mn><mo>,</mo><mi>y</mi><mn>2</mn></mrow></msub></mtd></mtr></mtable></mfenced><mo>+</mo><mfenced><mtable columnalign="left"><mtr><mtd><msub><mi>s</mi><mn>1</mn></msub></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><msub><mi>s</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><msub><mi>s</mi><mn>2</mn></msub></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><msub><mi>s</mi><mn>2</mn></msub></mtd></mtr></mtable></mfenced><mfenced><mtable><mtr><mtd><mi>x</mi></mtd></mtr><mtr><mtd><mi>y</mi></mtd></mtr></mtable></mfenced></math><img file="EP2776216B1_D0002.tif" /></maths>
0044It is straightforward to extend this model for an arbitrary number of spots 180.
0045For general wave signals, a similar linear model can be chosen. In general, the following model in Eq. 3 applies, where h is the vector of estimated signal values for position (<i>x y</i>)<sup>T</sup>, <b>h</b><sub>0</sub> is the absolute offset in the sensor space, and <b>A</b><sub>0</sub> is a general scale matrix. <maths id="math0003" num="Eq. 3"><math display="block"><mi mathvariant="bold">h</mi><mo>=</mo><msub><mi mathvariant="bold">h</mi><mn>0</mn></msub><mo>+</mo><msub><mi mathvariant="bold">A</mi><mn>0</mn></msub><mfenced><mtable><mtr><mtd><mi>x</mi></mtd></mtr><mtr><mtd><mi>y</mi></mtd></mtr></mtable></mfenced></math><img file="EP2776216B1_D0003.tif" /></maths>
0046A flow chart for computing the parameters of this linear model (either Eq. 2 or Eq. 3) is shown in <figref idref="f0005">Figure 5</figref>. At state 510, sensor measurements are obtained from the signal sensor 170. When a sensor measurement is obtained, data about the concurrent pose of the device 100 is also obtained (e.g., at the same or substantially the same time), such as from one or more on-board dead-reckoning sensors 190 or from separate monitoring systems. State 510 continues while the device 100 travels a short distance. At state 520, a RANSAC method (or, more generally, any algorithm for fitting data into a linear model) is run. At state 525 the status of the process is evaluated. Based on, for example, the number of data points evaluates (which may be set to 2, 5, 10, or more), the amount of time elapsed (which may be set to 1 second, 5 seconds, 10 seconds, 30 seconds, or more), or the quality of the data fitting algorithm (which may be set to be about or above a particular threshold), an embodiment may determine the initialization is sufficient. If so, then at state 530, the output of RANSAC is used to initialize the parameters for the relevant equation. If not, the initialization process continues.
0047RANSAC (Random Sample Consensus) is an iterative method to estimate the parameters of a mathematical function from sensor data that include outliers (see, e.g., .<nplcit id="ncit0001" npl-type="s"><text> A. Fischler, R. C. Bolles. Random Sample Consensus: A Paradigm for Model Fitting with Applications to Image Analysis and Automated Cartography. Comm. of the ACM, Vol 24, pp 381-395, 1981</text></nplcit>). The RANSAC algorithm runs several iterations. In a given iteration a number of measurements are chosen at random (the term "random" as used herein, encompasses pseudo random). In an embodiment using two spots 180, two signal sensor 170 readings each containing measurements to both spots 180 are sufficient. In an example implementation, it was determined that additional sample readings per iteration did not produce a significant improvement on the results and increased the resources consumed by the RANSAC process. From the chosen measurements the parameter values are determined by solving the set of equations arising from placing the chosen measurements into the mathematical model, Eq. 2. More generally, Eq. 3 may be used. The computed parameters are then evaluated using some or all available sensor data, optionally including dead reckoning data. This usually computes a score such as the number of inliers or the overall residual error. After completing the desired number of iterations, the parameter values with a score meeting certain criteria (e.g., the best score) are chosen as the final parameters.
0048Embodiments may use variations of RANSAC or alternatives to it.
0049Illustrative examples of the parameters used during initialization are presented below, in the discussion of GraphSLAM.
0050Once the initialization process is complete or the parameters for the relevant equation are otherwise determined, one or more algorithms for accounting for noisy sensors and dead-reckoning drift can be used to implement a system to effectively track the pose of the mobile device 100 with more accuracy, in less time, and/or with lower computational resource requirements than many conventional methods. Examples of such algorithms include the Kalman Filter, the Extended Kalman Filter (EKF), the Invariant Extended Kalman Filter (IEKF), and the Unscented Kalman Filter (UKF). However, the ability of these filters to effectively track pose after the initialization process of Figure 500 tends to degrade in environments where the distribution of the wave signal is non-linear. But even in environments, such as room 110, where the wave signal is distorted (e.g., by multi-path), the linear model described here is still useful for the initialization of non-linear systems according to what is disclosed herein.
0051As discussed above, multi-path occurs when the wave signal not only reaches the signal sensor 170 directly but also in other ways, such as by reflecting from nearby objects or walls (e.g. the right wall 130 in <figref idref="f0001">Figure 1</figref>). As the sensor 170 moves closer to wall 130, due to occlusion and limited field of view, the sensor 170 receives more signal contributions from wall reflections. The result is a shift in the signal back to a position that appears to be further away from the wall 130.
0052<figref idref="f0006">Figure 6</figref> illustrates this scenario where right wall 130 reflects the signal from the spots 180. Note how the curve 610 bends over and switches to the opposite direction: when the mobile device 100 is 3 meters from its starting point the sensor 170 is reporting a detected value of approximately -0.3, the same value it reported at approximately 1.5 meters, instead of the expected value of approximately -0.55 predicted by a linear model. This compression of the sensor signal appears with any wave signal that shows reflections from walls or other objects. It makes position estimation particularly difficult because a range of signal sensor readings do not match to exactly one ground position but instead have a least two ground position candidates. Even more candidates are possible when taking measurements in 2D or higher dimensions, or when the multipath pattern involves multiple objects, for example.
0053However, if the expected signal strength as a particular location is known, then signal strength measurements can still be used for localization in a multi-path environment via, for example, a Bayesian localization framework such as an EKF. In an example embodiment, by way of illustration, a piece-wise linear approximation (pieces are illustrated in <figref idref="f0006">Figure 6</figref> by the solid vertical lines 620) is used to substantially simultaneously learn the signal shape or "map" (the strength of the signal throughout the environment) and estimate the pose of the mobile device 100. This is done using a simultaneous localization and mapping (SLAM) approach.
0054The second challenge mentioned was rotational variability. When turning a sensor 170 in place, the measurements of the observed vector signal can change. This is the rotational variability of the sensor 170. For example, a sensor 170 in an embodiment using spots 180 outputs (x y) coordinates of the center of a spot 180 on the sensor plane. The (x y) coordinates essentially are a vector representing bearing and elevation to the spot 180. Ideally, as the sensor 170 rotates in place, only the bearing should change - the elevation should stay constant. In practice, however, elevation changes (usually, but not always, by a relatively small amount) due to variations in manufacturing, calibration errors, or misalignments in mounting the sensor 170 on the mobile device 100.
0055For example, <figref idref="f0007">Figure 7</figref> shows a top-down perspective of an example of one embodiment of a signal sensor 170 mounted on a mobile device 100. Although <figref idref="f0001">Figure 1</figref> represents the sensor 170 as protruding from the mobile device 100, <figref idref="f0007">Figure 7</figref> depicts an embodiment in which the sensor 170 is recessed in a cavity or depression with a substantially circular perimeter (although other perimeters could also be used). The sensor 170 comprises four infrared photodiodes 710 mounted on a pyramidal structure 720. The top of the pyramid 720 does not contain a photodiode 710 and is substantially coplanar with the top surface of the mobile device 100. In other embodiments, the sensor 170 may have a different structure including, for example, more or fewer photodiodes 710 arranged in a similar or different configuration. The approach described herein can be adapted to account for the geometric properties of the sensor 170 used. In the arrangement shown in <figref idref="f0007">Figure 7</figref>, each of the photodiodes 710 measures incoming light by producing an electric current substantially proportional to the received light. Each of the two opposing photodiode pairs is then used for measuring the direction of light on the corresponding axis. Below, the computation of the light direction and the effects of rotational variability for the x axis of the sensor are discussed. The computations for the y axis are analogous. Thus, what follows describes a mathematical system that models rotational variability for the signal sensor 170 of <figref idref="f0007">Figure 7</figref> and can be readily adapted to a wide range of signal sensors.
0056<figref idref="f0008">Figure 8</figref> illustrates a representation 800 of the sensor 170 of <figref idref="f0007">Figure 7</figref>, simplified for the purposes of clarity. Only the pair of photodiodes 710 measuring along the x axis is shown. Light from one of the spots 180 (it can be assumed to be spot 181 without any loss of generality) is directed at the sensor 170 as illustrated by light vectors 810. The x coordinate reported by the sensor 170 is proportional to the tangent of the elevation angle (β) to spot 181. This tangent of β is measured through the two currents i1 and i2 of the opposing photodiodes 801 and 802, respectively. The angle α of the pyramid is a parameter that may vary among embodiments. Some embodiments may have an adjustable angle α. The below assumes that α is greater than zero or that such an effect is simulated (e.g., through the use of apertures above the photodiodes which cast shadows and limit the exposure of the photodiodes to light from the spots.). Generally, the larger the angle α is, the larger the sensitivity of the sensor 170 to changes in location, but the smaller the field of view (e.g., the closer the sensor 170 must remain to the spots). While any effective angle α between 0 and 90 degrees may be used, it is preferably within the range of 15 to 75 degrees. Some embodiments may use, for example, 30, 45, or 60 degrees.
0057The coordinate h<sub>x1</sub> of spot 181 is equal to the tangent of β and is measured by: <maths id="math0004" num="Eq. 4"><math display="block"><msub><mi>h</mi><mrow><mi>x</mi><mn>1</mn></mrow></msub><mo>=</mo><mfrac><mrow><msub><mi>i</mi><mn>1</mn></msub><mo>−</mo><msub><mi>i</mi><mn>2</mn></msub></mrow><mrow><msub><mi>i</mi><mn>1</mn></msub><mo>+</mo><msub><mi>i</mi><mn>2</mn></msub></mrow></mfrac><mo>=</mo><mi>tan</mi><mi>β</mi><mi>tan</mi><mi>α</mi><mo>.</mo></math><img file="EP2776216B1_D0004.tif" /></maths>
0058The rotational variability is modeled by an offset in <i>β</i> that changes with the orientation of the sensor 170 such that Eq. 5 holds, where <i>β</i>' is the angle to the ideal axis of rotation perpendicular to the ground plane and <i>β<sub>ε</sub></i> is the angular error that changes with rotation. <maths id="math0005" num="Eq. 5"><math display="block"><mi>β</mi><mo>=</mo><mi>β</mi><mo>′</mo><mo>+</mo><msub><mi>β</mi><mi>ε</mi></msub></math><img file="EP2776216B1_D0005.tif" /></maths>
0059Inserting Eq. 5 in Eq. 4 and applying the rule of the tangent of the sum of angles yields: <maths id="math0006" num="Eq. 6"><math display="block"><mtable columnalign="left"><mtr><mtd><mfrac><mrow><msub><mi>i</mi><mn>1</mn></msub><mo>−</mo><msub><mi>i</mi><mn>2</mn></msub></mrow><mrow><msub><mi>i</mi><mn>1</mn></msub><mo>+</mo><msub><mi>i</mi><mn>2</mn></msub></mrow></mfrac></mtd><mtd><mrow><mo>=</mo><mi>tan</mi><mfenced><mi>β</mi><mo>′</mo><mo>+</mo><msub><mi>β</mi><mi>ε</mi></msub></mfenced><mi>tan</mi><mi>α</mi></mrow></mtd></mtr><mtr><mtd><mspace width="1ex" /></mtd><mtd><mrow><mo>=</mo><mfrac><mrow><mi>tan</mi><mi>β</mi><mo>′</mo><mo>+</mo><mi>tan</mi><msub><mi>β</mi><mi>ε</mi></msub></mrow><mrow><mn>1</mn><mo>−</mo><mi>tan</mi><mi>β</mi><mo>′</mo><mi>tan</mi><msub><mi>β</mi><mi>ε</mi></msub></mrow></mfrac><mi>tan</mi><mi>α</mi></mrow></mtd></mtr></mtable></math><img file="EP2776216B1_D0006.tif" /></maths>
0060Since <i>β<sub>ε</sub></i> is small, tan <i>β<sub>ε</sub></i> is approximated by: <maths id="math0007" num="Eq. 7"><math display="block"><mi>tan</mi><msub><mi>β</mi><mi>ε</mi></msub><mo>=</mo><mfrac><mrow><mi>sin</mi><msub><mi>β</mi><mi>ε</mi></msub></mrow><mrow><mi>cos</mi><msub><mi>β</mi><mi>ε</mi></msub></mrow></mfrac><mo>≈</mo><mfrac><msub><mi>β</mi><mi>ε</mi></msub><mn>1</mn></mfrac><mo>=</mo><msub><mi>β</mi><mi>ε</mi></msub></math><img file="EP2776216B1_D0007.tif" /></maths>
0061Substituting Eq. 7 into Eq. 6 yields: <maths id="math0008" num="Eq. 8"><math display="block"><mfrac><mrow><msub><mi>i</mi><mn>1</mn></msub><mo>−</mo><msub><mi>i</mi><mn>2</mn></msub></mrow><mrow><msub><mi>i</mi><mn>1</mn></msub><mo>+</mo><msub><mi>i</mi><mn>2</mn></msub></mrow></mfrac><mo>≈</mo><mfrac><mrow><mi>tan</mi><mi>β</mi><mo>′</mo><mo>+</mo><msub><mi>β</mi><mi>ε</mi></msub></mrow><mrow><mn>1</mn><mo>−</mo><msub><mi>β</mi><mi>ε</mi></msub><mi>tan</mi><mi>β</mi><mo>′</mo></mrow></mfrac><mi>tan</mi><mi>α</mi></math><img file="EP2776216B1_D0008.tif" /></maths>
0062For elevation angles <i>β</i>' that are much less then 90°, 1 - <i>β<sub>ε</sub></i> tan <i>β</i>' is approximated as 1, yielding Eq. 9, where <i>c<sub>x</sub></i> is the rotational variance on the x axis depending on the orientation of the signal sensor 170. <maths id="math0009" num="Eq. 9"><math display="block"><mtable columnalign="left"><mtr><mtd><mfrac><mrow><msub><mi>i</mi><mn>1</mn></msub><mo>−</mo><msub><mi>i</mi><mn>2</mn></msub></mrow><mrow><msub><mi>i</mi><mn>1</mn></msub><mo>+</mo><msub><mi>i</mi><mn>2</mn></msub></mrow></mfrac></mtd><mtd><mrow><mo>≈</mo><mi>tan</mi><mi>β</mi><mo>′</mo><mi>tan</mi><mi>α</mi><mo>+</mo><msub><mi>β</mi><mi>ε</mi></msub><mi>tan</mi><mi>α</mi></mrow></mtd></mtr><mtr><mtd><mspace width="1ex" /></mtd><mtd><mrow><mo>=</mo><mi>tan</mi><mi>β</mi><mo>′</mo><mi>tan</mi><mi>α</mi><mo>+</mo><msub><mi>c</mi><mi>x</mi></msub></mrow></mtd></mtr></mtable></math><img file="EP2776216B1_D0009.tif" /></maths>
0063For the y axis of the sensor 170 another bias term <i>c<sub>y</sub></i> is derived in an analogous way. Together both parameters form the vector c of rotational variability. <maths id="math0010" num="Eq. 10"><math display="block"><mi mathvariant="bold">c</mi><mo>=</mo><mfenced><mtable><mtr><mtd><msub><mi>c</mi><mi>x</mi></msub></mtd></mtr><mtr><mtd><msub><mi>c</mi><mi>y</mi></msub></mtd></mtr></mtable></mfenced></math><img file="EP2776216B1_D0010.tif" /></maths>
0064Since the direction <i>β</i> to the spots 180 can be arbitrary, the parameters for rotational variability are substantially independent of where the spots 180 are located. All spots 180 may therefore share substantially the same parameters.
0065Similar and analogous results can be obtained for other signal sources and sensor types. Rotational variability is not limited to the illustrated embodiment. Other sensor(s) 170 that measures bearing-to-signal sources 180 can show similar effects when the vertical axis of the sensor 170 is slightly misaligned or the sensor 170 otherwise rotates around an axis different from the ideal one. For example, antennas for radio or other wireless communication can show slight changes in the received signal when they rotate. Thus, an optional useful model of the way the vector of signal values changes on rotation of the sensor 170 is a function that only depends on the orientation of signal sensor 170 and parameters describing the rotational variability of the signal sensor 170.
0066<figref idref="f0009">Figures 9</figref> and <figref idref="f0010">10</figref> illustrate rotational variability and non-linearity arising from multi-path signals. The two figures depict the environment of room 110 from a top down perspective. <figref idref="f0009">Figure 9</figref> shows a regular grid 900 consisting of 8 x 7 positions (every 50 cm in this example) on the floor 150. A system using spots 180 was deployed with an appropriately configured signal sensor 170. At a given location 910, sensor measurements were taken with eight different sensor orientations (every 45°).
0067The measurements were then rotated back and drawn in a common reference frame. <figref idref="f0010">Figure 10</figref> shows the resulting signal measurements using different symbols for the eight orientations. At a given location 910, the measurements form a ring which shows the rotational variability at this location. In this experiment the radius is almost constant over the entire room 110. The mean of rotational variability is about 0.0072 sensor units, which corresponds to an angular error of about <i>β<sub>ε</sub></i> = 0.72°. The error caused by rotational variability can be constant (as in this example) but might also change over time or location, e.g., if the angular error <i>β<sub>ε</sub></i> is more significant or if there are other similarly variable sources of error, such as uneven floors or motion dependent device vibration, not modeled in Eq. 4 to Eq. 9.
0068Changes in the pitch or angle of the mobile device relative to the surface it is traversing can also cause or contribute to rotational variability. For example, uneven floors or ground such as might result from rolling terrain, general bumpiness, twigs or branches, brickwork, and the like can cause the pitch of the mobile device to change. In some embodiments, rotational variability due to change in pitch is monotonic, although it complements rotational variability due to manufacturing and other sources At least some rotational variability due to changes in pitch may be accounted for using the methods described herein. For example, changes in pitch of less than 3, 5, or 7 degrees (or other pitches) may be accommodated by some embodiments without modification to what is disclosed herein.
0069<figref idref="f0009">Figure 9</figref> also shows the effect of multi-path signals. In the illustrated scenario, the walls on the left 120, right 130, and front 135 cause signal reflections. While the left wall 120 and right wall 130 create some level of signal compression, the front wall 135 causes severe reflections that make the signal bend over. Even worse, in the corners of the room, the signal is reflected from two walls and therefore the resulting measurement is even more distorted.
0070Although there is significant signal distortion, it has been determined that the error is systematic and continuous. This allows modeling the nature of the signal using non-linear systems. An example embodiment approximates the non-linearity caused by multi-path through the use of piece-wise linear functions. This example technique is described below in greater detail. Other approximations, e.g., using Splines (piecewise polynomial (parametric) curves which may be used to approximate complex shapes using curve fitting) or Nurbs (non-uniform rational basis splines, which are mathematical models which may be used to generate and represent surfaces and curves) may also be used and may provide more accurate representations of the non-linear signal distortion. However, experimentation with certain embodiments has indicated that the use of bi-linear interpolation results in faster processes and produces sufficiently good results in embodiments that have limited computational resources. Embodiments with more computational resources or those with relaxed time constraints may beneficially use other representations, including Splines or Nurbs.
0071In some embodiments, localization of a mobile device 100 equipped with a signal sensor 170 is performed by learning the signal distribution in the environment 110 while at the same time (or at substantially the same time) localizing the mobile device 100. This is known as simultaneous localization and mapping (SLAM). As discussed above, in the following it is assumed that the pose of the mobile device 100 and the signal sensor 170 are substantially identical. In some embodiments they are not, and it is straightforward to add, for example, a fixed coordinate transformation between the two poses. However, assuming pose identity facilitates understanding of the various disclosed aspects.
0072In SLAM, a device moves through a time series of poses <b>x</b><sub>0</sub>... <b>x</b><i><sub>T</sub></i>, <b>x</b><i><sub>t</sub></i> = (<i>x, y</i>, <i>θ</i>)∈ SE(2), in an environment (e.g. room 110) containing N map features <b>m</b><sub>1</sub>... <b>m</b><i><sub>N</sub></i>, <b>m</b><i><sub>i</sub></i><maths id="math0011"><math display="inline"><mo>∈</mo><msup><mi>ℜ</mi><mi>M</mi></msup></math><img file="EP2776216B1_D0011.tif" /></maths>. Here SE(2) is the space of poses in the 2 dimensional plane and <maths id="math0012"><math display="inline"><msup><mi>ℜ</mi><mi>M</mi></msup></math><img file="EP2776216B1_D0012.tif" /></maths> the space of the map features. Without loss of generality, <b>x</b><sub>0</sub> = (0, 0, 0)<i><sup>T</sup></i>. At each time step t = 1...T the system receives a motion input <b>u</b><i><sub>t</sub></i> (e.g., odometry from dead reckoning sensors 190) with covariance <b>R</b><i><sub>t</sub></i> and a measurement <b>z</b><i><sub>t</sub></i> (e.g., of signal strength from signal sensors 170) with covariance Qt.
0073The motion input <b>u</b><i><sub>t</sub></i> is measured, for example, by motion sensors 190 on the mobile device 100 and describes the change in pose of the sensor 170 from time step t - 1 to t. As mentioned above, in certain embodiments the motion input may be provided by external sensors or a combination of internal and external sensors. The input vector <b>u</b><i><sub>t</sub></i> is associated with a covariance <b>R</b><i><sub>t</sub></i> that models the accuracy of the pose change. Typical motion sensors 190 include wheel encoders, gyroscopes, accelerometers, IMUs and other dead-reckoning systems. A motion model defined by a function <i>g</i> describes the motion of the device 100 since the previous time step where <b>e</b><i><sub>u</sub></i> is a zero mean error with covariance <b>R</b><i><sub>t</sub></i>: <maths id="math0013" num="Eq. 11"><math display="block"><msub><mi mathvariant="bold">x</mi><mi>t</mi></msub><mo>=</mo><mi>g</mi><mfenced><msub><mi mathvariant="bold">x</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub><msub><mi mathvariant="bold">u</mi><mi>t</mi></msub></mfenced><mo>+</mo><msub><mi mathvariant="bold">e</mi><mi>u</mi></msub></math><img file="EP2776216B1_D0013.tif" /></maths>
0074An example of input <b>u</b><i><sub>t</sub></i> is a forward translation d followed by a rotation <i>α:</i><b>u</b><i><sub>t</sub> =</i> (<i>d α</i>)<i><sup>T</sup>.</i> Eq. 11 then resolves into the following form: <maths id="math0014" num="Eq. 12"><math display="block"><msub><mi mathvariant="bold">x</mi><mi>t</mi></msub><mo>=</mo><mfenced><mtable><mtr><mtd><mi>x</mi></mtd></mtr><mtr><mtd><mi>y</mi></mtd></mtr><mtr><mtd><mi>θ</mi></mtd></mtr></mtable></mfenced><mo>+</mo><mfenced><mtable><mtr><mtd><mrow><mi>d</mi><mspace width="1ex" /><mi>cos</mi><mi>θ</mi></mrow></mtd></mtr><mtr><mtd><mrow><mi>d</mi><mspace width="1ex" /><mi>sin</mi><mi>θ</mi></mrow></mtd></mtr><mtr><mtd><mi>α</mi></mtd></mtr></mtable></mfenced><mo>+</mo><msub><mi mathvariant="bold">e</mi><mi>u</mi></msub></math><img file="EP2776216B1_D0014.tif" /></maths>
0075For those skilled in the art it is straightforward to substitute different motion models <i>g</i> and input vectors <b>u</b><i><sub>t</sub></i> depending on the geometry of the mobile device 100 and available motion sensors 190. The systems and methods disclosed herein apply regardless of the motion model.
0076When the signal sensor 170 on the mobile device 100 obtains a new reading <b>z</b><i><sub>t</sub></i> of the wave signals, the SLAM system uses a sensor model to predict the observation. As in the case of motion, the sensor reading <b>z</b><i><sub>t</sub></i> is associated with a covariance <b>Q</b><i><sub>t</sub></i> modeling the accuracy of the measurement. The sensor model is defined by a function h that predicts an observation given the sensor 170 pose at time step t and map features as in Eq. 13, where <b>e</b><sub>z</sub> is a zero mean error with covariance <b>Q</b><i><sub>t</sub></i>. The sensor model h depends on the map features and the available signal sensor 170 in the mobile device 100. In early SLAM applications such as those described in Thrun <i>et al.</i> [2005, Chapter 10], map features are landmarks and the sensor model h computes bearing and distance to them. The systems and methods disclosed herein optionally use a very different approach: some or all of the features are signal values at predetermined or fixed locations and, few or none of the features are landmarks in the environment. The expected values of wave signals at a given device 100 pose are computed by <i>h</i> as follows. <maths id="math0015" num="Eq. 13"><math display="block"><msub><mi mathvariant="bold">z</mi><mi>t</mi></msub><mo>=</mo><mi>h</mi><mfenced><msub><mi mathvariant="bold">x</mi><mi>t</mi></msub><mo>,</mo><msub><mi mathvariant="bold">m</mi><mn>1</mn></msub><mo>…</mo><msub><mi mathvariant="bold">m</mi><mi>N</mi></msub></mfenced><mo>+</mo><msub><mi mathvariant="bold">e</mi><mi>z</mi></msub></math><img file="EP2776216B1_D0015.tif" /></maths>
0077In SLAM it is possible to include in the sensor model calibration parameters like those describing rotational variability of the sensor 170. The SLAM algorithm then not only estimates device pose and map features, but also estimates the calibration parameters. All calibration parameters are summarized in a vector c. The size of this vector depends on the sensor 170. For example, in an embodiment using the reflection from spots of modulated light created by a projector 160 as the signal sources 180, the calibration parameters include the two bias constants (<i>c<sub>x</sub>, c<sub>y</sub></i>) in Eq. 10. The observation model in Eq. 13 then includes this parameter: <maths id="math0016" num="Eq. 14"><math display="block"><msub><mi mathvariant="bold">z</mi><mi>t</mi></msub><mo>=</mo><mi>h</mi><mfenced><msub><mi mathvariant="bold">x</mi><mi>t</mi></msub><mo>,</mo><mi mathvariant="bold">c</mi><mo>,</mo><msub><mi mathvariant="bold">m</mi><mn>1</mn></msub><mo>…</mo><msub><mi mathvariant="bold">m</mi><mi>N</mi></msub></mfenced><mo>+</mo><msub><mi mathvariant="bold">e</mi><mi>z</mi></msub></math><img file="EP2776216B1_D0016.tif" /></maths>
0078Embodiments also learn the vector field generated by M signals over the environment. This vector field can mathematically be described as a function that maps a ground pose to a vector of M signal values. <maths id="math0017" num="Eq. 15"><math display="block"><mi>VF</mi><mo>:</mo><mspace width="1ex" /><mi>SE</mi><mfenced><mn>2</mn></mfenced><mo>→</mo><msup><mi>ℜ</mi><mi>M</mi></msup></math><img file="EP2776216B1_D0017.tif" /></maths>
0079Since signals are independent of sensor 170 orientation (per the preferences set forth above), the space of poses SE(2) can be decomposed into position and orientation. The vector field over position is then modeled as a piece-wise linear function by laying a regular grid of node positions <b>b</b><i><sub>i</sub></i> = (<i>b</i><sub><i>i</i>;<i>x</i></sub>; <i>b</i><sub><i>i</i>;<i>y</i></sub>)<i><sup>T</sup>, i</i> = <i>1...N</i> onto the ground 150 (or onto whatever surface the mobile device 100 is traversing). This creates rectangular cells with one node at each of the cell's four corners. Each node i holds a vector <maths id="math0018"><math display="inline"><msub><mi mathvariant="bold">m</mi><mi>i</mi></msub><mo>∈</mo><msup><mi>ℜ</mi><mi>M</mi></msup></math><img file="EP2776216B1_D0018.tif" /></maths> describing the expected signal values when placing the sensor at <b>b</b><i><sub>i</sub></i> and pointing at a pre-defined direction θ<i><sub>0</sub></i>. Returning to the running example of signal sources 180 being spots of modulated light, the vector <b>m</b><i><sub>i</sub></i> holds four values - the coordinates of both spots 180: <b>m</b><i><sub>i</sub></i> = (m<sub><i>i</i>,<i>x</i>1</sub>, <i>m</i><sub><i>i,y</i>1</sub>, <i>m</i><sub><i>i</i>,<i>x</i>2</sub>, m<sub><i>i</i>,<i>y</i>2</sub>)<i><sup>T</sup></i>.
0080The spacing of cells in the regular grid defines the granularity and precision with which the wave-signal distribution in the environment 110 is modeled. A finer spacing leads to more cells, yielding better precision but requiring more memory. A coarser spacing results in fewer cells, requiring less memory but at the possible cost of precision. The exact parameter for the cell size depends on the environment, mobile device, and the application. For the purpose of covering an environment 110 with reasonable precision (e.g., for systematic floor cleaning), the cell size could be 0.5 m to 2 meters for a system using spots of frequency modulated light as signal sources 180 in an environment with a ceiling height of 2.5 to 5 meters.
0081For an arbitrary sensor position with orientation <i>θ</i><sub>0</sub>, the expected signal values are computed by bilinear interpolation from the nodes of a cell (e.g., the four nodes) containing the sensor position. Such a cell is illustrated in <figref idref="f0011">Figure 11</figref>. The four nodes may be determined from the sensor position at time t and node positions <b>b</b><i><sub>i</sub></i>. "Current cell" refers to the cell in which the sensor is positioned at the current time step <i>t.</i> Let <b>x</b><i><sub>t</sub></i> = <i>(x, y, θ</i>) be the sensor pose and <b>b</b><sub><i>i</i>0</sub>...<b>b</b><sub><i>i</i>3</sub> the cell nodes enclosing the sensor 170 as shown in <figref idref="f0011">Figure 11</figref>.
0082The expected signal values at (x, y) with orientation <i>θ</i><sub>0</sub> are then computed as Eq. 16, where <b>m</b><sub><i>i</i>0</sub>, <b>m</b><sub><i>i</i>1</sub>, <b>m</b><sub><i>i</i>2</sub> and <b>m</b><sub><i>i</i>3</sub> are the signal values at the four cell nodes and <i>w</i><sub>0</sub>, <i>w</i><sub>1</sub>, <i>w</i><sub>2</sub> and <i>w</i><sub>3</sub> are the weights of the bilinear interpolation computed as Eq. 17. <maths id="math0019" num="Eq. 16"><math display="block"><msub><mi>h</mi><mn>0</mn></msub><mfenced><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><msub><mi mathvariant="bold">m</mi><mn>1</mn></msub><mo>…</mo><msub><mi mathvariant="bold">m</mi><mi>N</mi></msub></mfenced><mo>=</mo><msub><mi>w</mi><mn>0</mn></msub><msub><mi mathvariant="bold">m</mi><mrow><mi>i</mi><mn>0</mn></mrow></msub><mo>+</mo><msub><mi>w</mi><mn>1</mn></msub><msub><mi mathvariant="bold">m</mi><mrow><mi>i</mi><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>w</mi><mn>2</mn></msub><msub><mi mathvariant="bold">m</mi><mrow><mi>i</mi><mn>2</mn></mrow></msub><mo>+</mo><msub><mi>w</mi><mn>3</mn></msub><msub><mi mathvariant="bold">m</mi><mrow><mi>i</mi><mn>3</mn></mrow></msub></math><img file="EP2776216B1_D0019.tif" /></maths><maths id="math0020" num="Eq. 17"><math display="block"><mtable columnalign="left"><mtr><mtd><msub><mi>w</mi><mn>0</mn></msub><mo>=</mo><mfrac><mrow><mfenced><msub><mi>b</mi><mrow><mi>i</mi><mn>1</mn><mo>,</mo><mi>x</mi></mrow></msub><mo>−</mo><mi>x</mi></mfenced><mfenced><msub><mi>b</mi><mrow><mi>i</mi><mn>2</mn><mo>,</mo><mi>y</mi></mrow></msub><mo>−</mo><mi>y</mi></mfenced></mrow><mrow><mfenced><msub><mi>b</mi><mrow><mi>i</mi><mn>1</mn><mo>,</mo><mi>x</mi></mrow></msub><mo>−</mo><msub><mi>b</mi><mrow><mi>i</mi><mn>0</mn><mo>,</mo><mi>x</mi></mrow></msub></mfenced><mfenced><msub><mi>b</mi><mrow><mi>i</mi><mn>2</mn><mo>,</mo><mi>y</mi></mrow></msub><mo>−</mo><msub><mi>b</mi><mrow><mi>i</mi><mn>0</mn><mo>,</mo><mi>y</mi></mrow></msub></mfenced></mrow></mfrac></mtd></mtr><mtr><mtd><msub><mi>w</mi><mn>1</mn></msub><mo>=</mo><mfrac><mrow><mfenced><mi>x</mi><mo>−</mo><msub><mi>b</mi><mrow><mi>i</mi><mn>0</mn><mo>,</mo><mi>x</mi></mrow></msub></mfenced><mfenced><msub><mi>b</mi><mrow><mi>i</mi><mn>2</mn><mo>,</mo><mi>y</mi></mrow></msub><mo>−</mo><mi>y</mi></mfenced></mrow><mrow><mfenced><msub><mi>b</mi><mrow><mi>i</mi><mn>1</mn><mo>,</mo><mi>x</mi></mrow></msub><mo>−</mo><msub><mi>b</mi><mrow><mi>i</mi><mn>0</mn><mo>,</mo><mi>x</mi></mrow></msub></mfenced><mfenced><msub><mi>b</mi><mrow><mi>i</mi><mn>2</mn><mo>,</mo><mi>y</mi></mrow></msub><mo>−</mo><msub><mi>b</mi><mrow><mi>i</mi><mn>0</mn><mo>,</mo><mi>y</mi></mrow></msub></mfenced></mrow></mfrac></mtd></mtr><mtr><mtd><msub><mi>w</mi><mn>2</mn></msub><mo>=</mo><mfrac><mrow><mfenced><msub><mi>b</mi><mrow><mi>i</mi><mn>1</mn><mo>,</mo><mi>x</mi></mrow></msub><mo>−</mo><mi>x</mi></mfenced><mfenced><mi>y</mi><mo>−</mo><msub><mi>b</mi><mrow><mi>i</mi><mn>0</mn><mo>,</mo><mi>y</mi></mrow></msub></mfenced></mrow><mrow><mfenced><msub><mi>b</mi><mrow><mi>i</mi><mn>1</mn><mo>,</mo><mi>x</mi></mrow></msub><mo>−</mo><msub><mi>b</mi><mrow><mi>i</mi><mn>0</mn><mo>,</mo><mi>x</mi></mrow></msub></mfenced><mfenced><msub><mi>b</mi><mrow><mi>i</mi><mn>2</mn><mo>,</mo><mi>y</mi></mrow></msub><mo>−</mo><msub><mi>b</mi><mrow><mi>i</mi><mn>0</mn><mo>,</mo><mi>y</mi></mrow></msub></mfenced></mrow></mfrac></mtd></mtr><mtr><mtd><msub><mi>w</mi><mn>3</mn></msub><mo>=</mo><mfrac><mrow><mfenced><mi>x</mi><mo>−</mo><msub><mi>b</mi><mrow><mi>i</mi><mn>0</mn><mo>,</mo><mi>x</mi></mrow></msub></mfenced><mfenced><mi>y</mi><mo>−</mo><msub><mi>b</mi><mrow><mi>i</mi><mn>0</mn><mo>,</mo><mi>y</mi></mrow></msub></mfenced></mrow><mrow><mfenced><msub><mi>b</mi><mrow><mi>i</mi><mn>1</mn><mo>,</mo><mi>x</mi></mrow></msub><mo>−</mo><msub><mi>b</mi><mrow><mi>i</mi><mn>0</mn><mo>,</mo><mi>x</mi></mrow></msub></mfenced><mfenced><msub><mi>b</mi><mrow><mi>i</mi><mn>2</mn><mo>,</mo><mi>y</mi></mrow></msub><mo>−</mo><msub><mi>b</mi><mrow><mi>i</mi><mn>0</mn><mo>,</mo><mi>y</mi></mrow></msub></mfenced></mrow></mfrac><mo>.</mo></mtd></mtr></mtable></math><img file="EP2776216B1_D0020.tif" /></maths>
0083The final expected signal values are computed by taking into account sensor orientation <i>θ</i> and the parameters c describing the rotational variability of the sensor 170: <maths id="math0021" num="Eq. 18"><math display="block"><mi>h</mi><mfenced><msub><mi mathvariant="bold">x</mi><mi>t</mi></msub><mo>,</mo><mi mathvariant="bold">c</mi><mo>,</mo><msub><mi mathvariant="bold">m</mi><mn>1</mn></msub><mo>…</mo><msub><mi mathvariant="bold">m</mi><mi>N</mi></msub></mfenced><mo>=</mo><msub><mi>h</mi><mi>R</mi></msub><mfenced><msub><mi>h</mi><mn>0</mn></msub><mfenced><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><msub><mi mathvariant="bold">m</mi><mn>1</mn></msub><mo>…</mo><msub><mi mathvariant="bold">m</mi><mi>N</mi></msub></mfenced><mo>,</mo><mi>θ</mi><mo>,</mo><mi mathvariant="bold">c</mi></mfenced></math><img file="EP2776216B1_D0021.tif" /></maths>
0084Here <i>h<sub>R</sub></i> is a continuous function that transforms the interpolated signal values obtained through Eq. 16 by the sensor orientation and rotational variability. This is usually a rotation by orientation θ followed by a correction with the rotational variability c. In the running example, turning the sensor 170 in place causes the spot 181 coordinates to change according to the rotation angle <i>θ</i> but in the opposite direction. The rotational component <i>h<sub>R</sub></i> therefore becomes Eq. 19, where (<i>h</i><sub><i>x</i>1</sub><i>, h</i><sub><i>y</i>1</sub><i>, h</i><sub><i>x</i>2</sub><i>, h</i><sub><i>y</i>2</sub>) is the output vector of Eq. 16. It is also possible to formulate the equations for a variable number of spots 180 since the components in Eq. 16 to Eq. 19 are not correlated between spots 180. Similar equations can be readily obtained for other signal sources. <maths id="math0022" num="Eq. 19"><math display="block"><msub><mi>h</mi><mi>R</mi></msub><mfenced><msub><mi>h</mi><mrow><mi>x</mi><mn>1</mn></mrow></msub><msub><mi>h</mi><mrow><mi>y</mi><mn>1</mn></mrow></msub><msub><mi>h</mi><mrow><mi>x</mi><mn>2</mn></mrow></msub><msub><mi>h</mi><mrow><mi>y</mi><mn>2</mn></mrow></msub><mi>θ</mi><msub><mi>c</mi><mi>x</mi></msub><msub><mi>c</mi><mi>y</mi></msub></mfenced><mo>=</mo><mfenced><mtable><mtr><mtd><mrow><mi>cos</mi><mi>θ</mi></mrow></mtd><mtd><mrow><mi>sin</mi><mi>θ</mi></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mrow><mo>−</mo><mi>sin</mi><mi>θ</mi></mrow></mtd><mtd><mrow><mi>cos</mi><mi>θ</mi></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mrow><mi>cos</mi><mi>θ</mi></mrow></mtd><mtd><mrow><mi>sin</mi><mi>θ</mi></mrow></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mrow><mo>−</mo><mi>sin</mi><mi>θ</mi></mrow></mtd><mtd><mrow><mi>cos</mi><mi>θ</mi></mrow></mtd></mtr></mtable></mfenced><mfenced><mtable><mtr><mtd><msub><mi>h</mi><mrow><mi>x</mi><mn>1</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>h</mi><mrow><mi>y</mi><mn>1</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>h</mi><mrow><mi>x</mi><mn>2</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>h</mi><mrow><mi>y</mi><mn>2</mn></mrow></msub></mtd></mtr></mtable></mfenced><mo>+</mo><mfenced><mtable><mtr><mtd><msub><mi>c</mi><mi>x</mi></msub></mtd></mtr><mtr><mtd><msub><mi>c</mi><mi>y</mi></msub></mtd></mtr><mtr><mtd><msub><mi>c</mi><mi>x</mi></msub></mtd></mtr><mtr><mtd><msub><mi>c</mi><mi>y</mi></msub></mtd></mtr></mtable></mfenced></math><img file="EP2776216B1_D0022.tif" /></maths>
0085It is possible to apply more complex schemes for predicting the sensor signal that use more than only the four nodes of the current cell. A cell with fewer nodes could also be used. In another embodiment, the function in Eq. 16 is evaluated for the current and several neighboring cells and then a weighted mean of them is computed as the final result. The weights are taken as the mass of probability of the current position estimate that falls into each cell. The weight of a given cell is a function of the probability that the sensor or mobile device is within this cell. This probability can be derived from the current mobile device pose and associated uncertainty as it is computed by the localization filter.
0086The above understandings and equations enable the application of a SLAM algorithm for estimating device path, rotational variability, and/or the signal values at the node positions. Optionally, full SLAM and/or on-line SLAM may be used.
0087In full SLAM, the complete trajectory of the device 100, rotational variability of the sensor 170, and/or some or all map features are computed. For example, the state that is estimated is: <maths id="math0023" num="Eq. 20"><math display="block"><mi mathvariant="bold">Y</mi><mo>=</mo><mfenced><mtable><mtr><mtd><msub><mi mathvariant="bold">x</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><mo>⋮</mo></mtd></mtr><mtr><mtd><msub><mi mathvariant="bold">x</mi><mi>T</mi></msub></mtd></mtr><mtr><mtd><mi mathvariant="bold">c</mi></mtd></mtr><mtr><mtd><msub><mi mathvariant="bold">m</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><mo>⋮</mo></mtd></mtr><mtr><mtd><msub><mi mathvariant="bold">m</mi><mi>N</mi></msub></mtd></mtr></mtable></mfenced><mo>.</mo></math><img file="EP2776216B1_D0023.tif" /></maths>
0088One algorithm that computes an estimate of Y is GraphSLAM, which is used in some embodiments and is described in more detail below.
0089In contrast, on-line SLAM estimates the current pose and some or all map features at each time step <i>t</i> = 1... T. The state estimated at each time step t is: <maths id="math0024" num="Eq. 21"><math display="block"><msub><mi mathvariant="bold">y</mi><mi>t</mi></msub><mo>=</mo><mfenced><mtable><mtr><mtd><msub><mi mathvariant="bold">x</mi><mi>t</mi></msub></mtd></mtr><mtr><mtd><mi mathvariant="bold">c</mi></mtd></mtr><mtr><mtd><msub><mi mathvariant="bold">m</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><mo>⋮</mo></mtd></mtr><mtr><mtd><msub><mi mathvariant="bold">m</mi><mi>N</mi></msub></mtd></mtr></mtable></mfenced><mo>.</mo></math><img file="EP2776216B1_D0024.tif" /></maths>
0090There are several algorithms that estimate <b>y</b><i><sub>t</sub></i> over time. Examples using EKF-SLAM, EIF-SLAM and ESEIF-SLAM are described below. Embodiments may use any of the described full SLAM or on-line SLAM algorithms, as well as other algorithms. Some embodiments can be configured to use a particular SLAM algorithm depending on, for example, a user's preference, the computational resources available, and other operational constraints.
0091GraphSLAM is a non-linear optimization method for estimating the state vector in Eq. 20 by finding the values in Y that best explain the sensor and motion data from sensors 170 and 190. GraphSLAM estimates Y as the solution to a non-linear least squares problem in finding the minimum of the following objective function where the quantities are defined as described before: <maths id="math0025" num="Eq. 22"><math display="block"><mi>J</mi><mo>=</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>t</mi><mo>=</mo><mn>1</mn></mrow><mi>T</mi></munderover><mrow><msup><mfenced><msub><mi mathvariant="bold">x</mi><mi>t</mi></msub><mo>−</mo><mi>g</mi><mfenced><msub><mi mathvariant="bold">x</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub><msub><mi mathvariant="bold">u</mi><mi>t</mi></msub></mfenced></mfenced><mi>T</mi></msup><msubsup><mi mathvariant="bold">R</mi><mi>t</mi><mrow><mo>−</mo><mn>1</mn></mrow></msubsup><mfenced><msub><mi mathvariant="bold">x</mi><mi>t</mi></msub><mo>−</mo><mi>g</mi><mfenced><msub><mi mathvariant="bold">x</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub><msub><mi mathvariant="bold">u</mi><mi>t</mi></msub></mfenced></mfenced></mrow></mstyle><mo>+</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>t</mi><mo>=</mo><mn>1</mn></mrow><mi>T</mi></munderover><mrow><msup><mfenced><msub><mi mathvariant="bold">z</mi><mi>t</mi></msub><mo>−</mo><mi>h</mi><mfenced><msub><mi mathvariant="bold">y</mi><mi>t</mi></msub></mfenced></mfenced><mi>T</mi></msup><msubsup><mi mathvariant="bold">Q</mi><mi>t</mi><mrow><mo>−</mo><mn>1</mn></mrow></msubsup><mfenced><msub><mi mathvariant="bold">z</mi><mi>t</mi></msub><mo>−</mo><mi>h</mi><mfenced><msub><mi mathvariant="bold">y</mi><mi>t</mi></msub></mfenced></mfenced></mrow></mstyle></math><img file="EP2776216B1_D0025.tif" /></maths>
0092An example implementation of GraphSLAM is illustrated in <figref idref="f0012">Figure 12</figref>. One general approach is to first provide an initial estimate of the state vector Y at state 1210. This may be based on, for example, data from the dead reckoning sensors 190 or data from the signal sensors 170. Then the embodiment approximates motion model g(.) and sensor model h(.) by linear models using Taylor expansion at the current estimate of the state vector at state 1220. This results in a quadratic function of Eq. 22. The linear equation system that reduces or minimizes the quadratic function obtained in state 1220 is solved or optimized at state 1230. This provides an improved estimate of <b>Y.</b> The second and third states are repeated until the solution converges to a desired degree at state 1240. If sufficient convergence is not obtained, then optimization state 1230 is repeated. If it is obtained, then at state 1250 a path is output.
0093The linear equation system may optionally be solved during optimization state 1230 using Conjugate Gradient, since the system is usually sparse and positive definite.
0094For providing an initial estimate of the state vector in state 1210, the following method can be used. First, the initial device poses <b>x</b><sub>1</sub>... <b>x</b><i><sub>T</sub></i> are computed from <b>x</b><sub>0</sub> = (0, 0, 0)<i><sup>T</sup></i> by iteratively applying the motion model in Eq. 11 for each t = 1... T. Second, the initial rotational variability is <b>c</b> = <b>ĉ</b> where <b>ĉ</b> is a rough guess about the values of rotational variability that depend on the sensor 170. In the running example, some embodiments use <b>ĉ</b> = (0, 0)<i><sup>T</sup></i> because the rotational variability is usually small. The initial node values <b>m</b><i><sub>i</sub></i> are computed from Eq. 1 and Eq. 2. For example, the parameters in Eq. 1 are computed by applying RANSAC over a short initial sequence, as discussed above. The node values <b>m</b><i><sub>i</sub></i> are then obtained from the node position <b>b</b><sub>i</sub> through Eq. 2.
0095The short initial sequence typically contains a minimum or relatively low number of sensor samples (e.g., 2 to 50) while the mobile device 100 moves a certain distance. This distance is usually proportional to the chosen cell size such that enough samples are available that cover a reasonable fraction of the cell. For example, for a cell size of 1 meter, the distance threshold may be selected within the range of 0.5 m to 1 meter. More generally, some embodiments may be configured to travel a distance of 1/3 to 2/3 of the cell size. This distance may also depend on the size of the mobile device 100: typically, larger mobile devices should travel further during the initialization phase. Optionally, a given sample is spaced a minimum distance from an adjacent sample. This distance may be determined based on a dynamically configured initialization travel distance and sample count, for example. It may also be fixed a priori so that samples are taken after every half second of travel or after every 10 centimeters of travel, for example, although other time periods and distances may be used.
0096GraphSLAM may be implemented as a batch method since the motion and sensor data needs to be available when computing the non-linear optimization. Furthermore, the amount of computation is significant. These constraints may make it difficult to use GraphSLAM in certain embedded systems with limited computational resources, such as if the mobile device 100 is a conventional vacuum cleaner or other consumer product. GraphSLAM is nevertheless useful as a baseline algorithm for computing the best possible result given the sensor data and a chosen model. For example, it can be used during the development of products or selectively run when computational resources are available to check the performance of other methods. Further, there are certain embodiments of product mobile devices where there are sufficient computational and memory resources to utilize GraphSLAM.
0097One such method for state estimation used by some embodiments is an Extended Kalman Filter (EKF). The EKF is a non-linear variant of the Kalman Filter (KF). EKF-SLAM is an on-line SLAM method. The state vector contains the current pose of the device 100 but not older or future poses (or estimates thereof). Furthermore, the size of the state grows as the mobile device 100 moves in the environment 110. Initially the state contains only device pose, rotational variability and the node estimates of the 4 nodes of the initial cell. <maths id="math0026" num="Eq. 23"><math display="block"><msub><mi mathvariant="bold">y</mi><mn>0</mn></msub><mo>=</mo><mfenced><mtable><mtr><mtd><msub><mi mathvariant="bold">x</mi><mn>0</mn></msub></mtd></mtr><mtr><mtd><mi mathvariant="bold">c</mi></mtd></mtr><mtr><mtd><msub><mi mathvariant="bold">m</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><msub><mi mathvariant="bold">m</mi><mn>2</mn></msub></mtd></mtr><mtr><mtd><msub><mi mathvariant="bold">m</mi><mn>3</mn></msub></mtd></mtr><mtr><mtd><msub><mi mathvariant="bold">m</mi><mn>4</mn></msub></mtd></mtr></mtable></mfenced></math><img file="EP2776216B1_D0026.tif" /></maths>
0098As the mobile device 100 moves around and visits further cells, the system grows by augmenting the state vector with further nodes. After t time steps and visiting cells with a total of n nodes the state becomes: <maths id="math0027" num="Eq. 24"><math display="block"><msub><mi mathvariant="bold">y</mi><mi>t</mi></msub><mo>=</mo><mfenced><mtable><mtr><mtd><msub><mi mathvariant="bold">x</mi><mi>t</mi></msub></mtd></mtr><mtr><mtd><mi mathvariant="bold">c</mi></mtd></mtr><mtr><mtd><msub><mi mathvariant="bold">m</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><mo>⋮</mo></mtd></mtr><mtr><mtd><msub><mi mathvariant="bold">m</mi><mi>n</mi></msub></mtd></mtr></mtable></mfenced></math><img file="EP2776216B1_D0027.tif" /></maths>
0099The EKF computes an estimate of this state by maintaining mean and covariance modeling a Gaussian distribution over the state. <maths id="math0028" num="Eq. 25"><math display="block"><mi mathvariant="bold">y</mi><mo>∼</mo><mi>N</mi><mfenced><mi>μ</mi><mi mathvariant="normal">Σ</mi></mfenced></math><img file="EP2776216B1_D0028.tif" /></maths>
0100The initial mean is set to Eq. 26, where <b>ĉ</b> is a rough guess/estimate of the rotational variability of the sensor 170 and <b>m̂</b><sub>1</sub>... <b>m̂</b><sub>4</sub> are initial values of the four nodes obtained from sensor data of a short initial sequence as described before using Eq. 1 and Eq. 2. Again, in a sample embodiment using spots 180, the initial rotational variability can be set to <b>ĉ</b>= (0, 0)<i><sup>T</sup></i>. <maths id="math0029" num="Eq. 26"><math display="block"><msub><mi>μ</mi><mn>0</mn></msub><mo>=</mo><mfenced><mtable><mtr><mtd><msub><mi mathvariant="normal">x</mi><mn>0</mn></msub></mtd></mtr><mtr><mtd><mover accent="true"><mi mathvariant="normal">c</mi><mo>^</mo></mover></mtd></mtr><mtr><mtd><msub><mover accent="true"><mi mathvariant="normal">m</mi><mo>^</mo></mover><mn>1</mn></msub></mtd></mtr><mtr><mtd><msub><mover accent="true"><mi mathvariant="normal">m</mi><mo>^</mo></mover><mn>2</mn></msub></mtd></mtr><mtr><mtd><msub><mover accent="true"><mi mathvariant="normal">m</mi><mo>^</mo></mover><mn>3</mn></msub></mtd></mtr><mtr><mtd><msub><mover accent="true"><mi mathvariant="normal">m</mi><mo>^</mo></mover><mn>4</mn></msub></mtd></mtr></mtable></mfenced></math><img file="EP2776216B1_D0029.tif" /></maths>
0101The initial covariance is a diagonal matrix where the vehicle uncertainty is set to 0 and the uncertainties of rotational variability and the four initial nodes are infinite. For implementation on a computer, ∞ can be replaced by a large number. <maths id="math0030" num="Eq. 27"><math display="block"><msub><mi mathvariant="normal">Σ</mi><mn>0</mn></msub><mo>=</mo><mo>=</mo><mfenced><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mo>⋯</mo></mtd><mtd><mo>⋯</mo></mtd><mtd><mo>⋯</mo></mtd><mtd><mo>⋯</mo></mtd><mtd><mo>⋯</mo></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mo>⋮</mo></mtd><mtd><mn>0</mn></mtd><mtd><mo>⋯</mo></mtd><mtd><mo>⋯</mo></mtd><mtd><mo>⋯</mo></mtd><mtd><mo>⋯</mo></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mo>⋮</mo></mtd><mtd><mo>⋮</mo></mtd><mtd><mn>0</mn></mtd><mtd><mo>⋯</mo></mtd><mtd><mo>⋯</mo></mtd><mtd><mo>⋯</mo></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mo>⋮</mo></mtd><mtd><mo>⋮</mo></mtd><mtd><mo>⋮</mo></mtd><mtd><mi>∞</mi></mtd><mtd><mn>0</mn></mtd><mtd><mo>⋯</mo></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mo>⋮</mo></mtd><mtd><mo>⋮</mo></mtd><mtd><mo>⋮</mo></mtd><mtd><mn>0</mn></mtd><mtd><mo>⋱</mo></mtd><mtd><mo>⋱</mo></mtd><mtd><mo>⋮</mo></mtd></mtr><mtr><mtd><mo>⋮</mo></mtd><mtd><mo>⋮</mo></mtd><mtd><mo>⋮</mo></mtd><mtd><mo>⋮</mo></mtd><mtd><mo>⋱</mo></mtd><mtd><mo>⋱</mo></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mo>⋯</mo></mtd><mtd><mn>0</mn></mtd><mtd><mi>∞</mi></mtd></mtr></mtable></mfenced></math><img file="EP2776216B1_D0030.tif" /></maths>
0102On object motion u<i><sub>t</sub></i> with covariance <b>R</b><i><sub>t</sub></i>, EKF-SLAM updates the state as Eq. 28 and Eq. 29, where <i>ƒ</i> extends the motion model <i>g</i> over all state variables and <b>F</b><sub>y</sub> is its Jacobian with respect to state per Eq. 30 to Eq. 31. <maths id="math0031" num="Eq. 28"><math display="block"><msub><mover accent="true"><mi>μ</mi><mo>‾</mo></mover><mi>t</mi></msub><mo>=</mo><mi>ƒ</mi><mfenced><msub><mi>μ</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub><msub><mi mathvariant="bold">u</mi><mi>t</mi></msub></mfenced></math><img file="EP2776216B1_D0031.tif" /></maths><maths id="math0032" num="Eq. 29"><math display="block"><msub><mover accent="true"><mi mathvariant="normal">Σ</mi><mo>‾</mo></mover><mi>t</mi></msub><mo>=</mo><msub><mi mathvariant="bold">F</mi><mi>y</mi></msub><mstyle displaystyle="true"><msub><mo>∑</mo><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub><mrow><msubsup><mi mathvariant="bold">F</mi><mi>y</mi><mi>T</mi></msubsup><mo>+</mo><msub><mi mathvariant="bold">R</mi><mi>t</mi></msub></mrow></mstyle></math><img file="EP2776216B1_D0032.tif" /></maths><maths id="math0033" num="Eq. 30"><math display="block"><mi>ƒ</mi><mfenced><msub><mi mathvariant="bold">y</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub><msub><mi mathvariant="bold">u</mi><mi>t</mi></msub></mfenced><mo>=</mo><mfenced><mtable><mtr><mtd><mrow><mi>g</mi><mfenced><msub><mi mathvariant="bold">x</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub><msub><mi mathvariant="bold">u</mi><mi>t</mi></msub></mfenced></mrow></mtd></mtr><mtr><mtd><mi mathvariant="bold">c</mi></mtd></mtr><mtr><mtd><msub><mi mathvariant="bold">m</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><mo>⋮</mo></mtd></mtr><mtr><mtd><msub><mi mathvariant="bold">m</mi><mi>N</mi></msub></mtd></mtr></mtable></mfenced></math><img file="EP2776216B1_D0033.tif" /></maths><maths id="math0034" num="Eq. 31"><math display="block"><msub><mi mathvariant="bold">F</mi><mi>y</mi></msub><mo>=</mo><mfrac><mrow><mi mathvariant="normal">∂</mi><mi>ƒ</mi></mrow><mrow><mi mathvariant="normal">∂</mi><mi mathvariant="bold">y</mi></mrow></mfrac><mfenced><msub><mi>μ</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub><msub><mi mathvariant="bold">u</mi><mi>t</mi></msub></mfenced></math><img file="EP2776216B1_D0034.tif" /></maths>
0103When a new sensor observation z<i><sub>t</sub></i> with covariance <b>Q</b><i><sub>t</sub></i> is taken, the system determines the current cell, i.e. the cell in which the mean estimate of current device pose <b>x̂</b><i><sub>t</sub></i> falls, and then updates the mean and covariance of the state.
0104In general the current cell at time t can be: <ol id="ol0001" compact="compact"><li>1. A cell where all four nodes are already part of the state vector.</li><li>2. A cell where at least one node but not all four nodes are part of the state vector.</li><li>3. A cell where none of the four nodes are in the state vector.</li></ol>
0105In the first case no changes are required to the state vector and the system can continue updating mean and covariance as described further below.
0106In the second and third cases, nodes not yet present in the state vector need to be added by augmenting the state with the new nodes. In general, adding a node to the state vector containing n nodes is achieved by Eq. 32 and Eq. 33, where <b>m̂</b><sub><i>n</i>+1</sub> and <b>M</b><sub>n+1</sub> are the mean and covariance of the new node. This mean and covariance can be computed from nodes already <b>contained</b> in the state vector by linear extrapolation per Eq. 34 and Eq. 35, where <b>A</b><sub>i</sub>, <i>i</i> = 1<i>...n</i> are matrices weighting the contribution of each node in the extrapolation, <b>M</b> is the covariance over all nodes, and S is additional noise for inflating the new covariance to allow the new node to vary for accommodating the non-linear structure of the wave signal. In some embodiments and in certain scenarios, the vector field changes slowly over space (i.e., the signal is relatively constant). Thus, in such embodiments, change between adjacent nodes is limited and extrapolation might degenerate into a linear model. Some embodiments use a smaller S in introduced in such circumstances, and some embodiments use introduced a larger S if the vector field is known or predicted to change more rapidly over space. <maths id="math0035" num="Eq. 32"><math display="block"><msub><mover accent="true"><mi>μ</mi><mo>‾</mo></mover><mi>t</mi></msub><mo>←</mo><mfenced><mtable><mtr><mtd><msub><mover accent="true"><mi>μ</mi><mo>‾</mo></mover><mi>t</mi></msub></mtd></mtr><mtr><mtd><msub><mover accent="true"><mi>m</mi><mo>^</mo></mover><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub></mtd></mtr></mtable></mfenced></math><img file="EP2776216B1_D0035.tif" /></maths><maths id="math0036" num="Eq. 33"><math display="block"><msub><mover accent="true"><mo>∑</mo><mo>‾</mo></mover><mi>t</mi></msub><mo>←</mo><mfenced><mtable><mtr><mtd><msub><mover accent="true"><mo>∑</mo><mo>‾</mo></mover><mi>t</mi></msub></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><msub><mi mathvariant="bold">M</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub></mtd></mtr></mtable></mfenced></math><img file="EP2776216B1_D0036.tif" /></maths><maths id="math0037" num="Eq. 34"><math display="block"><msub><mover accent="true"><mi>m</mi><mo>^</mo></mover><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><mrow><msub><mi mathvariant="bold">A</mi><mi>i</mi></msub><msub><mover accent="true"><mi>m</mi><mo>^</mo></mover><mi>i</mi></msub></mrow></mstyle></math><img file="EP2776216B1_D0037.tif" /></maths><maths id="math0038" num="Eq. 35"><math display="block"><msub><mi mathvariant="bold">M</mi><mi>n</mi></msub><mo>=</mo><mfenced><mtable><mtr><mtd><msub><mi mathvariant="bold">A</mi><mn>1</mn></msub></mtd><mtd><mo>…</mo></mtd><mtd><msub><mi mathvariant="bold">A</mi><mi>n</mi></msub></mtd></mtr></mtable></mfenced><mi mathvariant="bold">M</mi><mfenced><mtable><mtr><mtd><msub><mi mathvariant="bold">A</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><mo>⋮</mo></mtd></mtr><mtr><mtd><msub><mi mathvariant="bold">A</mi><mi>n</mi></msub></mtd></mtr></mtable></mfenced><mo>+</mo><mi mathvariant="bold">S</mi></math><img file="EP2776216B1_D0038.tif" /></maths>
0107The initialization of a new node is graphically illustrated in <figref idref="f0013">Figures 13</figref> and <figref idref="f0014">14</figref>. In an embodiment, a new node 1330 is initialized by taking into account the 8-neighborhood directions around the new node 1330, as illustrated in <figref idref="f0013">Figure 13</figref>. As shown in <figref idref="f0014">Figure 14</figref>, for each of the eight directions, the two neighbors on the straight line from the new node 1330 are used to extrapolate the mean and covariance of the new node. For any such pair the new node can be computed as shown in <figref idref="f0014">Figure 14</figref>. The mean and covariance are computed from node <i>j<sub>1</sub></i> 1340 and <i>j<sub>2</sub></i> 1350 only. Both nodes contain the mean estimates of both sensor spots. The corresponding contribution matrices are: <maths id="math0039" num="Eq. 36"><math display="block"><mtable columnalign="left"><mtr><mtd><msub><mi mathvariant="normal">A</mi><mrow><mi>j</mi><mn>1</mn></mrow></msub><mo>=</mo><mo>−</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mfenced><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced></mtd></mtr><mtr><mtd><msub><mi mathvariant="normal">A</mi><mrow><mi>j</mi><mn>2</mn></mrow></msub><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mfenced><mtable><mtr><mtd><mn>3</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>3</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>3</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>3</mn></mtd></mtr></mtable></mfenced></mtd></mtr></mtable></math><img file="EP2776216B1_D0039.tif" /></maths>
0108The extrapolation is such that the mid point between the spots 180 is used for extrapolation. The orientation of the line between the two new spot estimates is taken over from the closer one. This has the effect that changes in orientation are not propagated when initializing new nodes.
0109Some embodiments optionally only consider cases where a new node can be initialized from a pair of the 8 directions. In case there are several possible candidates, an embodiment may chose the one with the smallest resulting covariance <b>M</b><i><sub>n</sub></i>. For comparing covariances, the matrix determinant, the trace of the matrix, its Frobenius norm, or other norms can be used.
0110If there are no neighbors for initialization, some embodiments discard the sensor observation. Such a situation may occur, for example, when the mobile device 100 travels over a full cell without any sensor 170 observations and then arrives in a cell where all four cells are not yet part of the state vector (scenario 3, above). In this scenario, the utility of the new observation for localization may be minimal. Nonetheless, some embodiments may still initialize a new node by linear combinations of other nodes in the state vector using Eq. 34 and Eq. 35. Some embodiments may optionally only use the motion updates (e.g., the odometry from the dead reckoning sensors 190) of the mobile device 100 and wait until the device 100 returns to an existing cell or to a cell that can be initialized. Another approach is to start over and re-initialize the system from the current pose.
0111Once the state vector contains elements for all nodes of the current cell, the mean and covariance are updated with the measurement <i>z<sub>t</sub></i> and its covariance <b>Q</b><i><sub>t</sub></i> by application of the EKF equations per Eq. 37 to Eq. 40 where <i>h</i>(<b>y</b><i><sub>t</sub></i>) is the sensor model defined in Eq. 18, <b>H</b><i><sub>y</sub></i> the Jacobian of the sensor model and <b>K</b> the Kalman gain. <maths id="math0040" num="Eq. 37"><math display="block"><msub><mi>μ</mi><mi>t</mi></msub><mo>=</mo><msub><mover accent="true"><mi>μ</mi><mo>‾</mo></mover><mi>t</mi></msub><mo>+</mo><mi mathvariant="bold">K</mi><mfenced><msub><mi mathvariant="bold">z</mi><mi>t</mi></msub><mo>−</mo><mi>h</mi><mfenced><msub><mover accent="true"><mi>μ</mi><mo>‾</mo></mover><mi>t</mi></msub></mfenced></mfenced></math><img file="EP2776216B1_D0040.tif" /></maths><maths id="math0041" num="Eq. 38"><math display="block"><msub><mi mathvariant="normal">Σ</mi><mi>t</mi></msub><mo>=</mo><mfenced><mi>I</mi><mo>−</mo><msub><mi>KH</mi><mi>y</mi></msub></mfenced><msub><mover accent="true"><mo>∑</mo><mo>‾</mo></mover><mi>t</mi></msub></math><img file="EP2776216B1_D0041.tif" /></maths><maths id="math0042" num="Eq. 39"><math display="block"><msub><mi mathvariant="bold">H</mi><mi>y</mi></msub><mo>=</mo><mfrac><mo>∂</mo><mrow><mo>∂</mo><mi mathvariant="bold">y</mi></mrow></mfrac><mi>h</mi><mfenced><msub><mover accent="true"><mi>μ</mi><mo>‾</mo></mover><mi>t</mi></msub></mfenced></math><img file="EP2776216B1_D0042.tif" /></maths><maths id="math0043" num="Eq. 40"><math display="block"><mi mathvariant="bold">K</mi><mo>=</mo><msub><mover accent="true"><mo>∑</mo><mo>‾</mo></mover><mi>t</mi></msub><msubsup><mi mathvariant="bold">H</mi><mi>y</mi><mi>T</mi></msubsup><msup><mfenced><msub><mi mathvariant="bold">H</mi><mi>y</mi></msub><msub><mover accent="true"><mo>∑</mo><mo>‾</mo></mover><mi>t</mi></msub><msubsup><mi mathvariant="bold">H</mi><mi>y</mi><mi>T</mi></msubsup><mo>+</mo><msub><mi mathvariant="bold">Q</mi><mi>t</mi></msub></mfenced><mrow><mo>−</mo><mn>1</mn></mrow></msup></math><img file="EP2776216B1_D0043.tif" /></maths>
0112A flow chart of the EKF-SLAM method for object localization is shown in <figref idref="f0015">Figure 15</figref>. At state 1510, the initial parameters are set per Eq. 26 and Eq. 27. At the next time interval, if there is a motion update such as from the dead reckoning sensors 190 then it is applied at state 1530 per Eq. 28 and Eq. 29. If there is a value from the signal sensor 170, and if a new cell is needed, it is initialized at state 1540 per Eq. 32 to Eq. 36. After it is initialized, or if no new cell was needed, then a sensor update is performed at state 1550 per Eq. 37 and Eq. 38. After any necessary updates, a new pose is output at state 1560 and the process continues with the next time period.
0113In general, EKF-SLAM has the advantage that it is an on-line method, integrating motion/odometry and signal sensor measurements as they appear. The most computationally expensive operation is the update of the covariance matrix on sensor update in Eq. 38, state 1550. This involves the update of large numbers (e.g., all) of the matrix elements, an operation that takes time quadratic in the number of nodes in the state.
0114In general, the covariance Σ<i><sub>t</sub></i> is fully correlated. That is, there are few, if any, elements that are zero. This typically requires holding the full matrix in a data memory, which may limit the applicability of the method for embedded systems or other environments if there are overly limited memory resources.
0115An additional step in the EKF as well as in other filters is outlier rejection. In the case where measurements are received that seem implausible, the filter rejects these measurements. This may be accomplished by not updating the filter on such measurements, which may be the result of hardware errors, signal interference, or irregular timing problems, for example.
0116There are several options for detecting such outliers. For example, the sensor measurement itself can be examined for valid data. By way of illustration, a threshold on the absolute magnitude of the signal strength reported by a sensor if the range of allowable magnitudes for the signal being detected is known. If the measurement falls below or above this threshold it is rejected.
0117Another way to detect outliers is by comparing the received measurement z<sub>t</sub> with the expected one <i>h</i>(<i><o ostyle="single">µ</o><sub>t</sub></i>)<i>.</i> If the difference (e.g., as reported by means of the Mahanalobis distance, which is based on correlations between variables via which different patterns can be identified and analyzed) is too large, the measurement is rejected.
0118Another approach used by some embodiments for state estimation is an Extended Information Filter (EIF). The EIF is similar to the Extended Kalman Filter in that it models a Gaussian distribution over the state space and processes motion and signal sensor data on-line. Its parameterization, often called a dual representation, differs from that used by EKF. The parameterization consists of an information vector η<i><sub>t</sub></i> and an information matrix Λ<i><sub>t</sub></i> that are related to the mean µ<i><sub>t</sub></i> and covariance Σ<i><sub>t</sub></i> of the EKF in the following way: <maths id="math0044" num="Eq. 41"><math display="block"><mtable columnalign="left"><mtr><mtd><msub><mi>η</mi><mi>t</mi></msub><mo>=</mo><mstyle displaystyle="true"><msubsup><mo>∑</mo><mi>t</mi><mrow><mo>−</mo><mn>1</mn></mrow></msubsup><msub><mi>μ</mi><mi>t</mi></msub></mstyle></mtd></mtr><mtr><mtd><msub><mi mathvariant="normal">Λ</mi><mi>t</mi></msub><mo>=</mo><msubsup><mo>∑</mo><mi>t</mi><mrow><mo>−</mo><mn>1</mn></mrow></msubsup></mtd></mtr></mtable></math><img file="EP2776216B1_D0044.tif" /></maths>
0119The EIF-SLAM algorithm processes data from the motion sensors 190 and signal sensors 170 in the same way as EKF-SLAM described above. The computation of information vector and information matrix on object motion and sensor measurement can be derived from Eq. 26 to Eq. 40 by inserting Eq. 41 and simplifying the resulting equations.
0120In general a direct application of the EIF-SLAM algorithm does not provide a greater advantage than EKF-SLAM. Under some approximations, however, it is possible to keep the information matrix sparse, i.e. many elements are zero, allowing for a more compact storage and more efficient updates in terms of time and computational resources.
0121EIF-SLAM has the property that when inserting a signal sensor 170 measurement, only those elements in the state the measurement depends on need to be updated in the information matrix. For Vector Field SLAM this means that only elements related with the device 100's object pose and rotational variability and with the four nodes of the current cell are updated. All other elements in the information matrix stay unchanged. Therefore, the update on signal sensor 170 information turns only few elements from zero into non-zero and generally preserves the sparsity of the information matrix.
0122However, the update on device motion (e.g., when new data from the motion sensors 190 is received) causes a full update of the whole information matrix in the general case. This causes the information matrix to become non-zero in most if not all elements, which may destroy any sparsity that was present before the motion update.
0123Some embodiments may use strategies for approximating the update of the information matrix on device motion that preserve the sparsity of the information matrix. Two such methods are the Sparse Extended Information Filter (SEIF) and the Exactly Sparse Extended Information Filter (ESEIF).
0124Yet another approach available to some embodiments for state estimation is ESEIF. The principle of the ESEIF algorithm is maintaining a set of "active features". In the original context, "features" refer to landmarks. In the case of Vector Field SLAM, the features are the nodes. The active features are a subset of all features. Typically those features that are currently observed by the mobile device 100 are the active ones. Other features are called "passive".
0125Only the active features contain cross-information between the pose of the device 100 and the feature (where the cross-information between device pose and feature is non-zero for active features, whereas for passive features this cross-information is zero). A feature can change its state from passive to active at any time without the need of special operations. The cross-information between device pose and feature starts as zero and becomes non-zero when updating the system on device motion.
0126Changing an active feature to a passive one requires computationally non-trivial operations that approximate the actual information matrix by a sparsification. ESEIF-SLAM conceptually integrates out the device pose and then re-localizes the device 100 using observations from only those features (nodes) that should stay or become active. By integrating out the device pose, the state becomes free of the pose. Any uncertainty in the device pose is moved into the feature estimates through the cross-information between device pose and feature. When re-localizing the device 100, only the features used in the signal sensor 170 observation then establish non-zero cross information. This way the sparseness of the information matrix is preserved.
0127The following describes an implementation of the ESEIF algorithm in the context of Vector Field SLAM. <figref idref="f0016 f0017 f0018 f0019 f0020 f0021 f0022">Figures 16 - 22</figref> show information matrices supporting this description. Initially the system starts with 4 nodes, as in Eq. 23. The corresponding information matrix is shown in <figref idref="f0016">Figure 16</figref>. Only the diagonal blocks in the information matrix contain information and are non-zero, as indicated by black solid squares. All other entries are zero (shown as white). The diagonal blocks refer to the device pose <b>x</b><i><sub>t</sub></i>, the rotational variability c and the initial 4 nodes <b>m</b><sub>1</sub> ... <b>m</b><sub>4</sub>.
0128In an example embodiment, as long as the object stays within this initial cell, the system updates the complete information matrix using all 4 nodes as active features. Eventually the matrix becomes fully dense (most if not all elements become non-zero), as illustrated in <figref idref="f0017">Figure 17</figref>.
0129When the mobile device 100 moves out of the current cell and enters a different cell, the procedure of integrating out the device pose, initializing new nodes, and re-localizing the device takes place. First, the uncertainty of the device pose is integrated out. This moves information from the object pose into the rotational variability and the 4 nodes through their cross information. The result is an information matrix as shown in <figref idref="f0018">Figure 18</figref>, which usually contains stronger information between nodes than before and lacks a device pose.
0130Next, new nodes are initialized and added to the state. For example, two new nodes <b>m</b><sub>5</sub> and <b>m</b><sub>6</sub> may be added as shown in <figref idref="f0019">Figure 19</figref>. This indicates that the device 100 moved into a neighboring cell sharing nodes <b>m</b><sub>3</sub> and <b>m</b><sub>4</sub> with the initial one. The processing necessary for the addition of these nodes is described below. Note that the description also applies for other situations where 1, 3, or 4 new nodes need to be added, or, in embodiments that use cells with greater than four nodes, more than four new nodes need to be added.
0131The initial values for the information vector and matrix are obtained similarly to Eq. 32 to Eq. 36, but in the information form as set out in Eq. 41. The new information matrix then becomes the one as shown in <figref idref="f0019">Figure 19</figref>. Note that there is no cross information between the new nodes and other entries in the state.
0132The pose of the device 100 is then reintroduced. In the original ESEIF algorithm, an object is localized through observations of active features. In this application of Vector Field SLAM algorithm this is performed in two steps. First, the state is augmented with the new device pose as shown in <figref idref="f0019">Figure 19</figref>.
0133The entries for the new device pose in information vector and matrix are computed using Eq. 41 and the following mean and covariance per Eq. 42 and Eq. 43, where <b>R</b><sub>0</sub> is a parameter that increases the uncertainty of the new device pose. Thus, the new device pose stays unchanged but becomes less certain. At this time there are no active nodes since all cross information between device pose and nodes are zero. Any four nodes can be chosen as the next active set of features. Since the device 100 is in the cell defined by nodes <b>m</b><sub>3</sub> ... <b>m</b><sub>6</sub>, those nodes are chosen as the next set of active features. <maths id="math0045" num="Eq.42"><math display="block"><msub><mi>μ</mi><mi>t</mi></msub><mo>=</mo><msub><mi>μ</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub></math><img file="EP2776216B1_D0045.tif" /></maths><maths id="math0046" num="Eq. 43"><math display="block"><msub><mo>∑</mo><mi>t</mi></msub><mo>=</mo><msub><mo>∑</mo><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub><mo>+</mo><msub><mi mathvariant="bold">R</mi><mn>0</mn></msub></math><img file="EP2776216B1_D0046.tif" /></maths>
0134On signal sensor measurement <b>z</b><i><sub>t</sub></i>, the uncertainty of the device pose is reduced and elements related to rotational variability and the four active nodes <b>m</b><sub>3</sub> ... <b>m</b><sub>6</sub> are updated. This creates new cross-information between device pose, rotational variability, and active nodes as shown in <figref idref="f0021">Figure 21</figref>. Note that there is no cross information between nodes <b>m</b><sub>1</sub>, <b>m</b><sub>2</sub> and nodes <b>m</b><sub>6,</sub><b>m</b><sub>6</sub>. This shows how the information matrix stays sparse.
0135As the device 100 moves within the current cell, in this example embodiment optionally only the device pose, rotational variability, and active cells <b>m</b><sub>3</sub> ... <b>m</b><sub>6</sub> are updated, as was noted during the discussion of the initial situation. When the device 100 moves into another cell, the state is extended and the information vector and matrix are augmented with new nodes as described above. If the new cell has been visited before, no new nodes need to be added to the state. In either case, the same procedure of integrating out device pose followed by re-localization takes place.
0136<figref idref="f0022">Figure 22</figref> shows the information matrix after a longer run of the system configured as described. The state contains a total of 29 nodes. The device pose (<i>x, y, θ</i>)<i><sup>T</sup></i> consists of three variables, rotational variability (<i>c<sub>x</sub></i>, <i>c<sub>y</sub></i>)<i><sup>T</sup></i> consists of two variables, and each node (<i>m</i><sub><i>i,x</i>1</sub>, m<sub><i>i</i>,<i>y</i>1</sub>, <i>m</i><sub><i>i,x</i>2</sub><i>, m</i><sub><i>i,y</i>2</sub>)<i><sup>T</sup></i> consists of four variables. This leads to a total of 3 + 2 + 4<sup>∗</sup>29 = 121 variables. Non-zero information is indicated by solid blocks whereas white areas are zero information. The device pose contains cross information to the currently active nodes only (around rows 80 and 110). On the other hand, rotational variability contains cross information to all nodes. The nodes themselves have cross-information to spatially neighboring cells, which are at most eight neighbors per node. Overall the matrix is significantly sparse. From the 121 x 121 = 14641 entries in the information matrix, only 3521 or approximately 24% are non-zero. Furthermore since the matrix is symmetric, only the upper or lower half needs to be stored. This allows for compact storage and efficient computation within the ESEIF-SLAM algorithm - an efficient use of computational resources.
0137The mathematical equations for motion update (e.g., from the dead reckoning motion sensors 190), signal sensor update (e.g., from the sensors 170), and sparsification can be formulated directly in the information space, i.e. only using η and A for storing the state between motion and sensor updates. In addition an estimate of the mean µ is needed for computing the Jacobians of motion and sensor model.
0138A flow chart of an example implementation of the ESEIF-SLAM algorithm for object localization is shown in <figref idref="f0023">Figure 23</figref>. It is similar to the EKF-SLAM algorithm, with an initialization state 2300, a motion update state 2310 if there is new motion (odometry) data, a signal update state 2340 if there is new signal sensor data, preceded by a new-node initialization state 2320 if new nodes are added, but also with an additional sparsification state 2330 that integrates out device pose and re-localizes the device 100 when changing to another cell. Also, there is another state 2350 for recovering the current mean µ<i><sub>t</sub></i> from the information space by solving an equation system. After the solving state 2350, a new device pose is produced at state 2360 and the process repeats. This flow chart, like those illustrating the other algorithms, is illustrative. One of ordinary skill will make use of available optimizations when implementing an algorithm, including these algorithms.
0139The state vector as defined in Eq. 20 and Eq. 21 only contains one field for rotational variability. This is under the assumption that rotational variability does not change with location and thus can be shared among all nodes. There are, however, situations where this is not the case, e.g. when the error <i>β<sub>ε</sub></i> in Eq. 5 is significant and the approximations in Eq. 7 to Eq. 9 introduce a larger error, or when the sensor 170 is tilted due to uneven floor. There are different ways to deal with changing rotational variability.
0140In one embodiment each node contains its own estimate of rotational variability. The state vector of full SLAM in Eq. 20 containing the full object path changes into Eq. 44, with similar changes for the state of on-line SLAM in Eq. 21. <maths id="math0047" num="Eq. 44"><math display="block"><mi mathvariant="bold">y</mi><mo>=</mo><mfenced><mtable><mtr><mtd><msub><mi mathvariant="bold">x</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><mo>⋮</mo></mtd></mtr><mtr><mtd><msub><mi mathvariant="bold">x</mi><mi>T</mi></msub></mtd></mtr><mtr><mtd><msub><mi mathvariant="bold">m</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><msub><mi mathvariant="bold">c</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><mo>⋮</mo></mtd></mtr><mtr><mtd><msub><mi mathvariant="bold">m</mi><mi>N</mi></msub></mtd></mtr><mtr><mtd><msub><mi mathvariant="bold">c</mi><mi>N</mi></msub></mtd></mtr></mtable></mfenced></math><img file="EP2776216B1_D0047.tif" /></maths>
0141The rotational variability is computed similar to the expected node values by using bilinear interpolation per Eq. 45, where <b>c</b><sub><i>i</i>0</sub>, <b>c</b><sub><i>i</i>1</sub>, <b>c</b><sub><i>i</i>2</sub> and <b>c</b><sub><i>i</i>3</sub> are the rotational variability estimates at the four cell nodes according to <figref idref="f0011">Figure 11</figref> and wo, <i>w</i><sub>1</sub>, <i>w</i><sub>2</sub> and <i>w</i><sub>3</sub> are the weights from Eq. 17. Using the obtained value for c the predicted measurement is computed as before using Eq. 18. <maths id="math0048" num="Eq. 45"><math display="block"><mi mathvariant="bold">c</mi><mo>=</mo><msub><mi>w</mi><mn>0</mn></msub><msub><mi mathvariant="bold">c</mi><mrow><mi>i</mi><mn>0</mn></mrow></msub><mo>+</mo><msub><mi>w</mi><mn>1</mn></msub><msub><mi mathvariant="bold">c</mi><mrow><mi>i</mi><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>w</mi><mn>2</mn></msub><msub><mi mathvariant="bold">c</mi><mrow><mi>i</mi><mn>2</mn></mrow></msub><mo>+</mo><msub><mi>w</mi><mn>3</mn></msub><msub><mi mathvariant="bold">c</mi><mrow><mi>i</mi><mn>3</mn></mrow></msub></math><img file="EP2776216B1_D0048.tif" /></maths>
0142Initial estimates of rotational variability are 0 with a co-variance of total uncertainty. When initializing new nodes, the same techniques as described for initial mean and covariance of the node signal values apply for rotational variability.
0143The cost of storing rotational variability with each node is an increase in the number of state variables and therefore higher memory and run-time consumption. This can limit the application of this solution when computational resources are constrained.
0144In another embodiment, only one instance of rotational variability is kept, as originally defined in Eq. 20 and Eq. 21, but it is allowed to change when the mobile device 100 moves. For EKF-SLAM this means that in the motion model in Eq. 28 and Eq. 30, a component <b>V</b><sub>t</sub> is added to the sub-matrix of the rotational variability in the state covariance. <b>V</b><sub>t</sub> is an additive co-variance matrix modeling how much rotational variability is allowed to change when moving. It is usually a diagonal matrix of constant values.
0145In another embodiment, <b>V</b><sub>t</sub> = 0 as long as the device 100 stays within a cell and <b>V</b><sub>t</sub> is set to a diagonal matrix with constant non-zero values on the diagonal only when the device 100 changes between cells. This has the advantage that while the device 100 stays within a cell, rotational variability is assumed to be constant and is only allowed to change when moving into another cell. In some situations this may offer a better approximation at the cost of additional computation time, but requires no significant additional computational space.
0146In another embodiment, <b>V</b><sub>t</sub> is used to allow a change in rotational variability when moving between cells in the ESEIF-SLAM system. In the sparsification state, the rotational variability is integrated out and re-localized as the device pose is. This is done because adding <b>V</b><sub>t</sub> in the information space would otherwise fully populate the information matrix, destroying or reducing its sparseness. The states for sparsification with rotational variability included are analogous to the previously described method. An additional advantage of this approach is the removal of cross-information between rotational variability and passive nodes. This further reduces memory requirements and saves computations, at least partially counteracting the additional computation necessary to perform the calculations.
0147These methods and systems may also be used for detecting and estimating "drift" on, for example, carpet. When a mobile device 100 moves on a carpeted surface, the carpet exhibits a force onto the mobile device 100 tending to slide or shift the mobile device 100 in a certain direction. This effect is caused by the directional grain, material, or other properties of the carpet. Other surfaces, such as lawns or artificial turf, may also exhibit similar properties.
0148The amount of this drift can be estimated by the localization filter in different ways. In one embodiment, the filter state in Eq. 24 is augmented by two additional variables <i>drift</i><sub>x</sub> and <i>drift</i><sub>y</sub> that represent the amount of carpet drift in the x and y direction of the global coordinate frame. The motion model in Eq. 11 then takes into account these new parameters and the filter estimates their values at the same time it estimates the other state variables.
0149In another embodiment, the mobile device 100 may be configured to move a certain distance forward followed by the same distance backward. From the difference in the position output of the localization system at the beginning and end of this sequence, the amount of carpet drift can be estimated because the carpet drift may be proportional to this position difference. Typically, such a distance would be small enough that it can be traversed rapidly but large enough that an appreciable difference can be detected and the results not obfuscated by noise. Some embodiments may use distances in the range of 10 cm to 2 meters. Some embodiments may use smaller distances. Some embodiments may use larger distances.
0150The systems and methods described above were evaluated by moving an indoor localization sensor 170, configured to detect infrared patterns 180 projected from a beacon 160, along a rail. Ground truth information - the actual pose of the sensor 170 - was directly available from position and orientation sensors on the rail motor. Every 50 cm, sensed signal strength and other measurements were recorded with the sensor 170 in 8 different directions (every 45°), and approximately 50 readings were taken for each of those directions. Once the sensor 170 reached the end of the rail, it was moved 50 cm parallel to the previous rail line and another round of measurements was taken. This was repeated until a total of eight parallel tracks were completed. The previously discussed <figref idref="f0009">Figure 9</figref> shows the experimental setup with the ground truth positions of measurements. There is a wall 135 close to the rail at the top location. There are also walls on the left 120 and right 130 of the experimental space, but those walls are further from the sensor 170 than the upper wall 135 (at least when the sensor 170 is traversing the final rail). These walls contribute to multi-path signals and cause a significant disturbance of the sensor signal.
0151The previously discussed <figref idref="f0010">Figure 10</figref> shows the position of the sensor 170 directly determined by a linear sensor model in this environment. The compression on the left, right and top end is significant: a system using this linear model would loose significant accuracy in pose estimation.
0152Using the recorded data, a path for a virtual mobile device 100 through the grid was generated. Starting in the lower left corner the object moves along the rows and changes between rows on the left and right side. This results in a theoretically straightforward motion: along a row, a 90° turn at the end of the row, a brief movement to reach the next row, and then another 90° turn before traversing that next row. In practice, when zero-mean Gaussian noise is added to the motion information (simulating real-world error after extended use of dead-reckoning sensors), the odometry path is obtained as shown in <figref idref="f0024">Figure 24</figref>. After attempting to move up and down the rail grid approximately ten times, the error in orientation is up to 90°: the mobile device is actually moving vertically when its own reckoning system indicates it is moving horizontally.
0153The simulated relative pose data and the resulting odometry path are plausible examples of internal motion estimates. Mobile devices such as autonomous vacuum cleaners or other consumer products can show a similar degradation of pose estimation when using the integration of wheel encoder counts as the only method for pose estimation for example.
0154For testing the Vector Field SLAM system, one of the approximately 50 sensor measurements from the ground truth pose was randomly chosen when reaching a grid position. This measurement was then provided to the SLAM method for object localization. The cell size for Vector Field SLAM was set to 1 x 1 meters. <figref idref="f0025">Figure 25</figref> shows the resulting object path. Although the figures speak for themselves, the conclusion is that a mobile device 100 equipped with a localization and mapping system as disclosed herein, can following a navigational plan with a dramatically higher degree of accuracy than one relying on dead reckoning alone. This result was computed using an implementation of EKF-SLAM. Similar results were obtained using GraphSLAM and ESEIF-SLAM implementations.
0155In another series of experiments, the accuracy of the individual Vector Field SLAM implementations was compared to ground truth. In general, all three methods provide higher accuracy than other methods that only use linear sensor models. The GraphSLAM method usually provided slightly better accuracy than EKF-SLAM and ESEIF-SLAM. The latter two usually provided similar accuracy. The absolute position error was determined to depend on several factors such as ceiling height and the size of environments. In the test environment, the overall mean position error was about 6 cm. In general, the sources of error may vary depending on the signal sources 180 used. For example, ceiling height may not be a significant contributor to error if the background signal used is generated by magnetic coils suspended over the operating environment.
0156Vector Field SLAM also provides information about the learned sensor model or map - the signal strength through the environment. <figref idref="f0026">Figures 26</figref> and <figref idref="f0027">27</figref> show the learned coordinates for a signal source, in this example an infrared pattern 801 (the plots for a second infrared pattern or spot 802 are similar and omitted). Error bars indicate the 2 sigma levels of the mean values at each node position. One can see how the sensor signal is bent towards the rear wall 135. This shape is accounted for by the piece-wise approximation of the sensor signal.
0157A typical embodiment will run asynchronously in that a new time step is considered to occur whenever new data is available from signal sensor 170. This may be as often as six or seven times a second. In some embodiments, new sensor data may be ignored if the embodiment is still integrating previously available data and generating new pose information. In some embodiments the localization processer may request data from the signal sensor 170 or otherwise indicate that it is available to process that data. Some embodiments may run synchronously, with new data provided at fixed and regular time intervals.
0158The systems and methods disclosed herein can be implemented in hardware, software, firmware, or a combination thereof. Software can include compute readable instructions stored in memory (e.g., non-transitory memory, such as solid state memory (e.g., ROM, EEPROM, FLASH, RAM), optical memory (e.g., a CD, DVD, Bluray disc, etc.), magnetic memory (e.g., a hard disc drive), etc., configured to implement the algorithms on a general purpose computer, special purpose processors, or combinations thereof.
0159Disclosed is a technique to extend Vector Field SLAM of to work in large environments in which multiple beacons are installed. As an example, <figref idref="f0028">Figure 28</figref> shows a typical home environment. Four navigation cubes each projecting two patterns onto the ceiling, each one of them referred to as Northstar beacons 2811, 2812, 2813, 2814, allow the robot to navigate through virtually the entire home. The Northstar spots are projected onto the ceiling and are indicated by star and square icons. Obstacles identified by the robot are drawn in black. Units are in meters.
0160The complexity of Vector Field SLAM with respect to area size and number of signals will be discussed. In order to keep memory and run-time requirements relatively low, a decoupling of localization maps is used. An approximation is presented that allows the robot to travel between Northstar beacon-covered areas each associated with its own signal map.
0161A dead reckoning technique can be used to estimate motion and/or positioning. In one embodiment, the robot estimates relative motion by using both wheelodometry and a gyroscope so that it is able to move out of areas covered by beacons for extended periods of time. In one embodiment, the gyroscope can correspond to a MEMS gyroscope. In one embodiment, only a gyroscope with yaw is used.
0162Furthermore, as large environments increase the risk of the robot getting stuck somewhere, and for letting the user pause or kidnap the robot (e.g. for maintenance), the system should be able to resume treatment, such as cleaning, after these events. Treatment can include, but is not limited to, cleaning, wiping, sweeping, vacuuming, painting, spraying, planting, or the like. A tracking approach is formulated that allows the robot to reposition itself in a previously mapped area when operation is resumed. The robot is localized by searching the vector field for positions that provide a signal vector similar to a measurement taken by the robot. As the vector field does not need to be bijective, the measurement may fit to multiple places. Each such position is considered as a hypothesis, and is successively tracked over some distance to confirm its correctness.
0163We evaluate extensions to Vector Field SLAM in large home environments with sizes ranging from 35 to 125 m<sup>2</sup> and with number of beacons from one to four. However, additional beacons can be used. As the experiments demonstrate, an embodiment of is capable of keeping a robot localized in these environments while computational and storage requirements are similar to those required when using only a single beacon.
0164The next section summarizes a method of Vector Field SLAM as described in and in [12, 13]. A subsequent section describes extensions for allowing the method to work in large environments. Experimental results are later presented.
Vector Field SLAM
0165In Vector Field SLAM the spatial variation of continuous signals are learnt and simultaneously used for localizing the robot. Examples of continuous signals include the received signal strengths of WiFi base stations or the signals measured from active beacons. The particular physical characteristics of the signals do not matter as long as the continuous signals can be uniquely identified, are relatively stationary over time and change, preferably continuously, over space. In one embodiment, the coordinates of two spots projected onto the ceiling are used as the continuous signals. It will be understood that these continuous signals can be bursty or pulsed, such as provided by flashing infrared LEDs. The signal field is represented as a regular grid affixed node positions <b>b</b><i><sub>i</sub></i> = (<i>b<sub>i,x</sub>,b<sub>i,y</sub></i>)<i><sup>T</sup>, i</i> =1... <i>N</i>, where each node <maths id="math0049"><math display="inline"><msub><mi mathvariant="bold">m</mi><mi>i</mi></msub><mo>∈</mo><msup><mi>ℜ</mi><mi>M</mi></msup></math><img file="EP2776216B1_D0049.tif" /></maths> holds the expected signal measurements of the robot when placed at <b>b</b><i><sub>i</sub></i> and pointing in a fixed orientation <i>θ</i><sub>0.</sub> Without loss of generality, let <i>θ</i><sub>0</sub> = 0 for an initial condition. Vector field and robot pose are then estimated through the application of simultaneous localization and mapping (SLAM).
0166The robot moves through a time series of poses <i>x</i><sub>0</sub> ... <i>x<sub>T</sub>, x<sub>t</sub></i> ∈ <i>SE</i>(2). Without loss of generality, <i>X</i><sub>0</sub> = (0, 0, 0)<i><sup>T</sup></i> for an initial condition. At each time step <i>t =</i> 1... <i>T</i> the robot receives a motion input <i>u<sub>t</sub></i> with covariance <i><b>R</b><sub>t</sub></i> and a measurement <i>z<sub>t</sub></i> of the continuous signals with covariance <b>Q</b><i><sub>t</sub></i>. Disclosed techniques consider that the measurements are also affected by calibration parameters c of the sensor. These parameters can reflect for example a rotational sensitivity in an antenna measuring WiFi signal strengths. In one example with an active beacon system, calibration c encodes a coordinate offset caused by a small error in the ideal horizontal plane of the sensor.
0167A motion model defined by a function g describes the motion of the robot since the previous time step: <maths id="math0050" num="Eq. 46"><math display="block"><msub><mi mathvariant="bold">x</mi><mi>t</mi></msub><mo>=</mo><mi>g</mi><mfenced><msub><mi mathvariant="bold">x</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub><msub><mi mathvariant="bold">u</mi><mi>t</mi></msub></mfenced><mo>+</mo><msub><mi mathvariant="bold">e</mi><mi>u</mi></msub></math><img file="EP2776216B1_D0050.tif" /></maths> where <i>e<sub>u</sub></i> is a zero mean error with covariance <b>R</b><i><sub>t</sub></i>.
0168Furthermore, the sensor model defined by function h predicts an observation given current robot pose, sensor calibration and vector field: <maths id="math0051" num="Eq. 47"><math display="block"><msub><mi mathvariant="bold">z</mi><mi>t</mi></msub><mo>=</mo><mi>h</mi><mfenced><msub><mi mathvariant="bold">x</mi><mi>t</mi></msub><mo>,</mo><mi mathvariant="bold">c</mi><mo>,</mo><msub><mi mathvariant="bold">m</mi><mi>l</mi></msub><mo>…</mo><msub><mi mathvariant="bold">m</mi><mi>N</mi></msub></mfenced><mo>+</mo><msub><mi mathvariant="bold">e</mi><mi>z</mi></msub></math><img file="EP2776216B1_D0051.tif" /></maths> where <b>e</b><i><sub>z</sub></i> is a zero mean error with covariance <b>Q</b><i><sub>t</sub></i>.
0169One particular sensor model is decomposed into a rotational and a translational part as expressed in Eq. 48. <maths id="math0052" num="Eq. 48"><math display="block"><mi>h</mi><mfenced><msub><mi mathvariant="normal">x</mi><mi>t</mi></msub><mo>,</mo><mi>c</mi><mo>,</mo><msub><mi mathvariant="normal">m</mi><mn>1</mn></msub><mo>…</mo><msub><mi mathvariant="normal">m</mi><mi>N</mi></msub></mfenced><mo>=</mo><msub><mi>h</mi><mi>R</mi></msub><mfenced><msub><mi>h</mi><mn>0</mn></msub><mfenced><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><msub><mi mathvariant="normal">m</mi><mn>1</mn></msub><mo>…</mo><msub><mi mathvariant="normal">m</mi><mi>N</mi></msub></mfenced><mo>,</mo><mi>θ</mi><mo>,</mo><mi mathvariant="normal">c</mi></mfenced></math><img file="EP2776216B1_D0052.tif" /></maths>
0170In Eq. 48, <b>x</b><sub>t</sub> = (<i>x, y, θ</i>) is the robot pose at time <i>t, h<sub>R</sub></i> is a sensordependent, continuous function that rotates the expected signal values according to robot orientation <i>θ</i> and applies a correction based on the sensor calibration c, and <i>h<sub>0</sub></i> is a bilinear interpolation of the expected signal values from the four nodes of the cell containing the robot (see <figref idref="f0029">Figure 29</figref>) as expressed in Eq. 49. <maths id="math0053" num="Eq. 49"><math display="block"><msub><mi>h</mi><mn>0</mn></msub><mfenced><mi>x</mi><mo>,</mo><mspace width="1ex" /><mi>y</mi><mo>,</mo><mspace width="1ex" /><msub><mi mathvariant="normal">m</mi><mn>1</mn></msub><mspace width="1ex" /><mo>…</mo><mspace width="1ex" /><msub><mi mathvariant="normal">m</mi><mi>N</mi></msub></mfenced><mo>=</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>J</mi><mo>=</mo><mn>0</mn></mrow><mn>3</mn></munderover><mrow><msub><mi>w</mi><mi>j</mi></msub><msub><mi mathvariant="normal">m</mi><msub><mi>i</mi><mi>j</mi></msub></msub></mrow></mstyle></math><img file="EP2776216B1_D0053.tif" /></maths> with <maths id="math0054" num="Eq. 50"><math display="block"><msub><mi>w</mi><mn>0</mn></msub><mo>=</mo><mfrac><mrow><mfenced><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>1</mn></msub><mo>,</mo><mi>x</mi></mrow></msub><mo>−</mo><mi>x</mi></mfenced><mfenced><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>2</mn></msub><mo>,</mo><mi>y</mi></mrow></msub><mo>−</mo><mi>y</mi></mfenced></mrow><mrow><mfenced><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>1</mn></msub><mo>,</mo><mi>x</mi></mrow></msub><mo>−</mo><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>,</mo><mi>x</mi></mrow></msub></mfenced><mfenced><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>2</mn></msub><mo>,</mo><mi>y</mi></mrow></msub><mo>−</mo><mi>y</mi></mfenced></mrow></mfrac></math><img file="EP2776216B1_D0054.tif" /></maths><maths id="math0055" num="Eq. 51"><math display="block"><msub><mi>w</mi><mn>1</mn></msub><mo>=</mo><mfrac><mrow><mfenced><mi>x</mi><mo>−</mo><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>,</mo><mi>x</mi></mrow></msub></mfenced><mfenced><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>2</mn></msub><mo>,</mo><mi>y</mi></mrow></msub><mo>−</mo><mi>y</mi></mfenced></mrow><mrow><mfenced><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>1</mn></msub><mo>,</mo><mi>x</mi></mrow></msub><mo>−</mo><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>,</mo><mi>x</mi></mrow></msub></mfenced><mfenced><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>2</mn></msub><mo>,</mo><mi>y</mi></mrow></msub><mo>−</mo><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>,</mo></mrow></msub><mi>y</mi></mfenced></mrow></mfrac></math><img file="EP2776216B1_D0055.tif" /></maths><maths id="math0056" num="Eq. 52"><math display="block"><msub><mi>w</mi><mn>2</mn></msub><mo>=</mo><mfrac><mrow><mfenced><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>1</mn></msub><mo>,</mo><mi>x</mi></mrow></msub><mo>−</mo><mi>x</mi></mfenced><mfenced><mi>y</mi><mo>−</mo><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>,</mo><mi>y</mi></mrow></msub></mfenced></mrow><mrow><mfenced><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>1</mn></msub><mo>,</mo><mi>x</mi></mrow></msub><mo>−</mo><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>,</mo><mi>x</mi></mrow></msub></mfenced><mfenced><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>2</mn></msub><mo>,</mo><mi>y</mi></mrow></msub><mo>−</mo><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>,</mo><mi>y</mi></mrow></msub></mfenced></mrow></mfrac></math><img file="EP2776216B1_D0056.tif" /></maths><maths id="math0057" num="Eq. 53"><math display="block"><msub><mi>w</mi><mn>3</mn></msub><mo>=</mo><mfrac><mrow><mfenced><mi>x</mi><mo>−</mo><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>,</mo><mi>x</mi></mrow></msub></mfenced><mfenced><mi>y</mi><mo>−</mo><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>,</mo><mi>y</mi></mrow></msub></mfenced></mrow><mrow><mfenced><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>1</mn></msub><mo>,</mo><mi>x</mi></mrow></msub><mo>−</mo><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>,</mo><mi>x</mi></mrow></msub></mfenced><mfenced><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>2</mn></msub><mo>,</mo><mi>y</mi></mrow></msub><mo>−</mo><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>,</mo><mi>y</mi></mrow></msub></mfenced></mrow></mfrac></math><img file="EP2776216B1_D0057.tif" /></maths>
0171<figref idref="f0029">Figure 29</figref> illustrates bilinear interpolation from cell nodes. A 1-dimensional vector field, that is, signal field, is illustrated. For dimensions of 2 and higher, the bilinear interpolation is analogous according to Eq. 49.
0172By choosing a standard motion model [1] and a suitable initialization, the robot trajectory, the sensor calibration and the vector field can be estimated. <patcit id="pcit0005" dnum="US940937" dnum-type="L"><text>U.S. Patent Application No. 12/940,937</text></patcit> presented different implementations of the foregoing model including off-line non-linear optimization through GraphSLAM, an extended Kalman filter (EKF-SLAM) [12] and an exactly sparse extended information filter (ESEIF-SLAM) [13]. All methods show the ability to keep a robot localized in an environment of the size of a living room in which a single Northstar beacon has been placed.
0173For running the method on an embedded platform, the ESEIF-SLAM variant is particularly interesting. The method is constant time, and space grows linear in the size of the area explored. This allows it to run on a low-end ARM7 processor clocked at 44 MHz with only 64 KByte of RAM.
Extensions to Large Environments
0174In order to extend Vector Field SLAM to large environments, several additions can be integrated into the Vector Field SLAM algorithm.
Space and Run-Time Complexity of ESEIF-SLAM
0175A closer look at the space and run-time complexities will now be discussed. <figref idref="f0030">Figure 30</figref> shows a sample grid consisting of 8 cells that models a vector field over an environment. Information links exist between nodes as they appear in an ESEIF-SLAM implementation.
0176As long as the robot stays within a cell, one embodiment of the ESEIF-SLAM approach updates robot pose, sensor calibration and the four cell nodes by integrating motion and sensor information. This results in information links between all involved variables, i.e. entries in the information matrix that correspond to robot pose, calibration, the four cell nodes, and the cross information between all of them are, in general, non-zero. In other words, the information matrix of a vector field of a single cell is fully dense.
0177When moving into a neighboring cell, the ESEIF approach performs a <i>sparsification</i> step [14]. First, the process marginalizes over robot pose and sensor calibration. This removes them from the state vector and leaves the information matrix with only the node's information and their cross entries. Next, the process relocates robot and sensor calibration using a sensor measurement in the new cell, for example, as shown in [13].
0178The effect of this approach is that each node shares information with at most eight neighboring ones as the links in <figref idref="f0030">Figure 30</figref> indicate. The nodes can be classified by the number of other nodes they link to. Only inner ones (nodes 6, 7 and 10) have eight connections. Nodes at the border have either 7 (node 11), 5 (nodes 2, 3, 5, 8, 9 and 14) or only 3 links (nodes 1, 4, 12, 13 and 15). In practice, the average connectivity per node is about 6. Of course this depends on the layout of the environment, for example, in an open room, the factor is larger as there are relatively more inner nodes.
0179The space requirements for <i>N</i> nodes with signal dimension <i>M</i> can now be estimated. In the following, the robot and calibration variables are ignored temporarily as they merely add a constant term. The ESEIF stores an information vector (size <i>N</i> M), an estimate of the mean (also size <i>N M)</i> and the sparse information matrix. The latter holds <i>N</i> information matrices of all nodes which, due to symmetry, each use a size of <maths id="math0058"><math display="inline"><mfrac><mn>1</mn><mn>2</mn></mfrac><mi>M</mi><mfenced><mi>M</mi><mo>+</mo><mn>1</mn></mfenced></math><img file="EP2776216B1_D0058.tif" /></maths>. The cross information can be stored in <maths id="math0059"><math display="inline"><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>⋅</mo><mn>6</mn><msup><mi>M</mi><mn>2</mn></msup></math><img file="EP2776216B1_D0059.tif" /></maths> where the factor <maths id="math0060"><math display="inline"><mfrac><mn>1</mn><mn>2</mn></mfrac></math><img file="EP2776216B1_D0060.tif" /></maths> accounts for the fact that each link is shared between two nodes. In total the space requirements for Vector Field SLAM using the ESEIF are <maths id="math0061" num="Eq. 54"><math display="block"><msub><mi mathvariant="italic">Space</mi><mi mathvariant="italic">ESEIF</mi></msub><mo>≈</mo><mi>N</mi><mfenced><mn>3</mn><mfrac><mn>1</mn><mn>2</mn></mfrac><msup><mi>M</mi><mn>2</mn></msup><mo>+</mo><mn>2</mn><mfrac><mn>1</mn><mn>2</mn></mfrac><mi>M</mi></mfenced><mo>+</mo><mi mathvariant="italic">const</mi><mo>.</mo></math><img file="EP2776216B1_D0061.tif" /></maths>
0180As for run-time, ESEIF-SLAM is constant time, i.e. does not depend on <i>N</i> [13]. The most expensive operation is the recovery of a part of the estimated mean. In our formulation, we update robot pose, sensor calibration and the four cell nodes. This involves solving a linear equation system in these variables with a symmetric and positive definite system matrix. Cholesky decomposition is used, which takes time cubic in the number of variables. If constant terms and factors are ignored, the time complexity therefore is as expressed in Eq. 55 <maths id="math0062" num="Eq. 55"><math display="block"><msub><mi mathvariant="italic">Time</mi><mi mathvariant="italic">ESEIF</mi></msub><mo>=</mo><mi>O</mi><mfenced><msup><mi>M</mi><mn>3</mn></msup></mfenced><mo>.</mo></math><img file="EP2776216B1_D0062.tif" /></maths>
Multiple Beacons Covering Large Environment
0181In order to cover a larger area, more beacons can be installed in the environment. In one situation, the signals of all beacons might be visible at some location. If this were modeled without loss of information, then the signal dimension M needs to be expanded to hold signal values of all beacons. However, increasing M has a drastic effect on the space and run-time of our ESEIF formulation. When doubling the number of signals, the space increases by a factor of four (Eq. 54) and run-time by a factor of 8 (Eq. 55).
0182However, most home environments have walls and rooms separating the space into areas where at most one beacon is visible. In case the areas of beacons overlap, in one embodiment, information from all but one beacon is ignored, e.g. using the beacon that provides the highest signal certainty. In an alternative embodiment, information less than all available beacons is used, such as, for example, the two beacons with the highest signal certainty.
0183In one embodiment, a logic for switching from one beacon to another is described as follows. For each beacon, the signal certainty is measured, e.g. the <i>signal strength,</i> that indicates how useful the beacon is for localization. Initially, the beacon showing the best such certainty is selected and used as the <i>current beacon.</i> From then on the certainties of all available beacons are compared and after a beacon different from the current one shows a larger value (for example, a signal strength that is twice as strong) the process can switch to that beacon and make it the current one.
0184A natural choice of representing the environment is by using multiple localization maps, one for each area around a beacon. Whenever the robot switches the current beacon using the logic described above, a new localization map is started, or, if the robot has already visited the area before, it re-localizes in the corresponding localization map. The individual maps are allowed to overlap due to the hysteresis when switching the active beacon to another one. An example atlas of maps is shown in <figref idref="f0031">Figure 31</figref>.
0185In a proper representation, the maps 3102, 3104, 3106 are linked by uncertain rigid-body transformations, i.e., they can rotate and translate slightly with respect to each other [15]. As long as the uncertainties associated with these transformations are small, each map can be anchored at a fixed global pose and the induced error moved into the procedure when re-localizing the robot in a localization map.
0186In one embodiment, the relative pose uncertainty computed from odometry from when the robot left a map is maintained until the robot re-enters it. In practice, this uncertainty can be limited to a certain maximum value. The uncertainty is then added to the pose uncertainty of the robot in our relocation step of the ESEIF [13]. This, of course, can introduce larger changes in the robot pose and should work well as long as the error when closing loops stays relatively small.
0187One advantage of processing in this manner is that the signal dimension <i>M</i> stays the same as for a single beacon. Only the number <i>N</i> of nodes is larger for storing the additional maps.
0188One embodiment includes performing SLAM in a first area associated with a first map; performing SLAM in a second area associated with a second map; and performing position estimation in a third area outside of and between the first area and the second area, wherein in the third area, position estimation is performed with dead reckoning. Dead reckoning can be performed using odometry and a gyroscope.
0189Optionally, a timer can be reset upon entry of the robot into the third area, the time spent in the third area can be tracked with the timer, and the robot can be controlled to return to at least one of the first area or the second area after a predetermined elapsed time in the third area.
0190In one embodiment, a controller further resets a timer upon entry of the robot into the third area from the first area or the second area; remembers which one of the first area or the second area the robot was in prior to entry to the third area; tracks time spent in the third area with the timer; and returns to the one of the first area or the second area from which the robot was in prior to entry to the third area after elapsing of a predetermined time in the third area unless the robot enters an area in which SLAM can be performed at least with positioning information based on observations of a set of one or more continuous signals.
0191In one embodiment, the controller further estimates a position uncertainty of the robot while operating in the third area; and if the position uncertainty is larger than a predetermined threshold, returns the robot to at least one of the first area or the second area. In one embodiment, the controller further estimates a position uncertainty of the robot while operating in the third area; remembers which one of the first area or the second area the robot was in prior to entry to the third area; and if the position uncertainty is larger than a predetermined threshold, returns the robot to the one of the first area or the second area from which the robot was in prior to entry to the third area.
0192In one embodiment, the controller is performs SLAM at least with positioning information based on observations of a first set of one or more continuous signals, and when in the second area, the controller performs SLAM at least with positioning information based on observations of a second set of one or more continuous signals. In one embodiment, the first set of one or more continuous signals and the second set of one or more continuous signals comprise reflections of spots of infrared light. In one embodiment, the controller distinguishes among the different reflections of spots of infrared light based on frequency.
0193One embodiment includes a robot and a controller of the robot. The controller associates observations of a first set of one or more continuous signals with a first map; associates observations of a second set of one or more continuous signals with a second map, wherein the second map is maintained independently the first map; and switches between performing simultaneous localization and mapping (SLAM) with the first map or performing SLAM with the second map based at least partly on an observed signal strength of the first set or the second set.
0194In one embodiment, the controller observes a plurality of sets of one or more continuous signals including the first set and the second set, wherein each of the plurality of observed sets is associated with a separate map; determines that a largest observed signal strength of the plurality of observed sets is larger in magnitude than a signal strength of a set currently being used for performing SLAM; and switches to performing SLAM with the set with the largest observed signal strength. In one embodiment, the controller observes a plurality of sets of one or more continuous signals including the first set and the second set, wherein each of the plurality of observed sets is associated with a separate map; determines that a largest observed signal strength of the plurality of observed sets is at least a predetermined factor larger in magnitude than a signal strength of a set currently being used for performing SLAM; and switches to performing SLAM with the set with the largest observed signal strength. For example, the predetermined factor can be a factor of 2. Other values will be readily determined by one of ordinary skill in the art. In one embodiment, the first set of one or more continuous signals and the second set of one or more continuous signals include reflections of spots of infrared light. The controller can distinguish among the different reflections of spots of infrared light based on frequency.
Gyroscope for Improving Orientation Estimates
0195Any navigation system improves when integrating accurate information about the relative motion of the robot. In particular when the absolute error in orientation can be kept low, on-line SLAM filters like EKF-SLAM and ESEIF-SLAM are less likely to become inconsistent [17].
0196Through some basic experiments, we found that rotation or yaw computed from only wheels quickly becomes unreliable within a few meters, in particular when the wheel base is small and the floor surface slippery. By integrating a gyroscope having yaw in the estimation of relative motion, rotation errors can be kept within a few degrees for several minutes of travel.
0197This allows the robot to navigate in areas not covered by any beacon, like at the outer perimeter or in the zone in between two distant beacons. Although information from both sensors could be combined in a probabilistic way, we found that using distance computed by wheels and rotation measured by gyroscope provides satisfactory results.
0198The inputs of motor commands, wheel encoders and gyro measurements are analyzed for detecting movement errors. Ideal velocity values of both wheels are computed by a linear combination using system matrices with parameters depending on the detected error. One embodiment is different in that wheel velocities are not computed but rather, the change in distance and rotation of the robot pose is directly provided. One embodiment is also simpler in that there is no need to adjust system parameters for combining encoders and gyro data depending on the movement error.
0199<figref idref="f0032">Figure 32</figref> illustrates a flowchart for computing motion of a robot from data measured by odometry and a gyroscope (yaw). The disclosed method of integrating wheel encoders and gyroscope can be described mathematically. Let the sensor input at time <i>t</i> consist of the distances <i>d<sub>l</sub></i> and <i>d<sub>r</sub></i> measured by the left and right encoder, respectively, and the change in orientation α obtained from the gyroscope. A motion input <i>u<sub>t</sub></i> as is then computed as expressed in Eq. 56 <maths id="math0063" num="Eq. 56"><math display="block"><msub><mi mathvariant="normal">u</mi><mi>t</mi></msub><mo>=</mo><msup><mfenced><mi>d</mi><mi>α</mi></mfenced><mi>T</mi></msup></math><img file="EP2776216B1_D0063.tif" /></maths>
0200In Eq. 56, the <maths id="math0064"><math display="inline"><mi>d</mi><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mfenced><msub><mi>d</mi><mi>l</mi></msub><mo>+</mo><msub><mi>d</mi><mi>r</mi></msub></mfenced></math><img file="EP2776216B1_D0064.tif" /></maths> represents the average distance travelled of both wheels.
0201The robot pose <i>x<sub>t</sub></i> is then computed from the motion model in Eq. 46. See <figref idref="f0032">Figure 32</figref> for a flowchart of updating the robot pose from the motion input.
0202A typical motion model is one in which the robot is traveling on a straight line of distance d in the forward direction followed by an in-place rotation about α as expressed in Eq. 57. <maths id="math0065" num="Eq. 57"><math display="block"><msub><mi>g</mi><mn>1</mn></msub><mfenced><msub><mi mathvariant="normal">x</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub><msub><mi mathvariant="normal">u</mi><mi>t</mi></msub></mfenced><mo>=</mo><mfenced><mtable><mtr><mtd><msub><mi>x</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>y</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>θ</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub></mtd></mtr></mtable></mfenced><mo>+</mo><mfenced><mtable><mtr><mtd><mrow><mi>d</mi><mspace width="1ex" /><mi>cos</mi><mspace width="1ex" /><msub><mi>θ</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub></mrow></mtd></mtr><mtr><mtd><mrow><mi>d</mi><mspace width="1ex" /><mi>sin</mi><mspace width="1ex" /><msub><mi>θ</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub></mrow></mtd></mtr><mtr><mtd><mi>α</mi></mtd></mtr></mtable></mfenced><mo>.</mo></math><img file="EP2776216B1_D0065.tif" /></maths>
0203See <figref idref="f0033">Figure 33</figref> for a graphical illustration of a robot moving on a straight line followed by an in-place rotation.
0204A different model assumes the robot is moving along an arc. For α ≠ 0 the new robot pose can be computed as expressed in Eq. 58. <maths id="math0066" num="Eq. 58"><math display="block"><msub><mi>g</mi><mn>2</mn></msub><mfenced><msub><mi mathvariant="normal">x</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub><msub><mi mathvariant="normal">u</mi><mi>t</mi></msub></mfenced><mo>=</mo><mfenced><mtable><mtr><mtd><msub><mi>x</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>y</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>θ</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub></mtd></mtr></mtable></mfenced><mo>+</mo><mfenced><mtable><mtr><mtd><mrow><mi>cos</mi><msub><mi>θ</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub></mrow></mtd><mtd><mrow><mo>−</mo><mi>sin</mi><msub><mi>θ</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mrow><mi>sin</mi><msub><mi>θ</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub></mrow></mtd><mtd><mrow><mi>cos</mi><msub><mi>θ</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><mfenced><mtable><mtr><mtd><mrow><mi>d</mi><mfrac><mi mathvariant="italic">sinα</mi><mi>α</mi></mfrac></mrow></mtd></mtr><mtr><mtd><mrow><mi>d</mi><mfrac><mrow><mn>1</mn><mo>−</mo><mi>cos</mi><mi>α</mi></mrow><mi>α</mi></mfrac></mrow></mtd></mtr><mtr><mtd><mi>α</mi></mtd></mtr></mtable></mfenced></math><img file="EP2776216B1_D0066.tif" /></maths>
0205See <figref idref="f0034">Figure 34</figref> for a graphical illustration of a robot moving along an arc. In the limit α = 0 the computation is identical to the motion on a straight line.
Re-Localization for Resuming Navigation
0206In large environments, there is an increased risk of the robot becoming stuck in tight areas or in situations with many obstacles. Furthermore, for a cleaning robot it is desirable for the user to have an option for pausing and resuming the robot, e.g. for emptying the dust bin or changing the cleaning pad. Once resumed, the robot should quickly find its position in the area already explored and continue with its navigation.
0207For finding its position and orientation, the robot needs to solve a <i>global localization problem,</i> also known as the <i>kidnapped robot problem.</i> It can be stated as follows: "Using at least one sensor measurement zt 3502 find possible candidates of position and orientation where the measurement could have been taken." In general, the number of possible poses can be zero, one, or many. <figref idref="f0035">Figures 35A, 35B</figref> and <figref idref="f0036">36</figref> show flowcharts of possible systems for such a re-localization of the robot. <figref idref="f0035">Figures 35A and 35B</figref> illustrate different views of the same process for robot re-localization in which only one pose hypothesis is allowed. <figref idref="f0036">Figure 36</figref> illustrates a process for robot re-localization in which multiple pose hypotheses are allowed. The processes begin with a measurement zt 3502. The process attempts to find 3504 a pose hypothesis. Further details of process to find 3504 a pose hypothesis will be described later in connection with <figref idref="f0037">Figures 37</figref> and <figref idref="f0038">38</figref>.
0208In case no pose or multiple poses have been found 3506, the procedure of <figref idref="f0035">Figure 35A or 35B</figref> can be repeated using a new measurement zt. Usually, the robot should move before taking a new measurement as it is likely that the same or a similar measurement is obtained when stationary.
0209In case exactly one pose 3508 was determined, the robot has been re-localized and, in principle, could continue with its navigation. It is, however, beneficial to verify the found pose before deciding that the robot is fully re-localized. For this verification step the found pose candidate is tracked 3510 using further measurements and motion estimates. Such a tracking 3510 can be carried out, e.g. by using an extended Kalman filter (EKF). After the pose has been tracked over a sufficient long distance or for a sufficient long time, the robot is considered as being fully re-localized.
0210The situation becomes more challenging when multiple possible poses match to the received measurement <i>z<sub>t</sub></i>. One possible approach is to treat this case similar to the case when no pose hypothesis has been found, i.e. to wait for a new measurement and repeat the procedure (see <figref idref="f0035">Figures 35A and 35B</figref>). In case the environment and sensor readings are highly distinctive, i.e., there are only few ambiguous situations, this method can be very successful.
0211A different embodiment includes choosing one <i>best</i> pose 3602 among all found candidates as illustrated in <figref idref="f0036">Figure 36</figref>. In the context of Vector Field SLAM, the map includes the signal values at pre-defined locations (nodes). The association of measurements to nodes is implicit by choosing a grid cell in which the observation could have been taken (recall that signals carry a unique ID for identifying to which signal source a measurement belongs to). Depending on the distribution of the signals over the environment there can be multiple locations and cells in which a measurement could have been received. Choosing a best candidate pose under these conditions is less obvious.
0212In yet another embodiment (not shown as a flowchart) the multiple hypotheses could be tracked individually using a multi-hypothesis tracking (MHT) system. An example of such an approach is the multi-hypothesis localization and tracking approach by Arras et al. [20]. Eventually the number of hypotheses decreases as individual tracks are either confirmed and kept, or rejected and removed.
0213In one embodiment, the tracking of a pose is started after exactly one pose candidate has been found. Otherwise, the method retries using the scheme described above and shown in <figref idref="f0035">Figures 35A and 35B</figref>.
0214Before searching for pose candidates, a measurement <i>z<sub>t</sub></i> has to pass a <i>significance test</i> that evaluates how well the measurement is suited for the re-localization task. Basically, the measurement should contain rich enough information for giving a hint about where it could have been taken. The particular criteria employed depends on the sensor. It can be, for example, a minimum signal strength received in all measured signals. A measurement that fails the test is discarded and the system waits for the next one.
0215In order to obtain a pose hypothesis in the vector field, a cell <i>i</i> and a robot pose X<sub>t</sub> = <i>(x, y, θ</i>)<i><sup>T</sup></i> contained in the cell are searched for that match to the current measurement <i>z<sub>t</sub></i>. Substituting Eq. 48 and Eq. 49 into Eq. 47, Eq. 59 is obtained. <maths id="math0067" num="Eq. 59"><math display="block"><msub><mi mathvariant="normal">z</mi><mi>t</mi></msub><mo>=</mo><msub><mi>h</mi><mi>R</mi></msub><mfenced><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>j</mi><mo>=</mo><mn>0</mn></mrow><mn>3</mn></munderover><mrow><msub><mi>w</mi><mi>j</mi></msub><msub><mi mathvariant="normal">m</mi><msub><mi mathvariant="bold" mathsize="normal">i</mi><mi>j</mi></msub></msub><mo>,</mo><mi>θ</mi><mo>,</mo><mi mathvariant="normal">c</mi></mrow></mstyle></mfenced><mo>+</mo><msub><mi>e</mi><mi>z</mi></msub></math><img file="EP2776216B1_D0067.tif" /></maths>
0216In Eq. 59, w<sub>j</sub> depends on the selected cell <i>i</i> and robot position (x, <i>y</i>)<i><sup>T</sup></i> , and m<i><sub>i<sub2>j</sub2></sub></i> are the signal values at the four cell nodes according to <figref idref="f0029">Figure 29</figref>.
0217The problem can be formulated as a constrained optimization problem. Let <i>v</i>(<i>i, x, y, θ</i>) be the difference between measurement and expected signal values: <maths id="math0068" num="Eq. 60"><math display="block"><mi>ν</mi><mfenced><mi>i</mi><mi>x</mi><mi>y</mi><mi>θ</mi></mfenced><mo>=</mo><msub><mi mathvariant="bold">z</mi><mi>t</mi></msub><mo>−</mo><msub><mi>h</mi><mi>R</mi></msub><mfenced><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>j</mi><mo>=</mo><mn>0</mn></mrow><mn>3</mn></munderover><mrow><msub><mi>w</mi><mi>j</mi></msub><msub><mi mathvariant="bold">m</mi><msub><mi mathvariant="bold-italic">i</mi><mi>j</mi></msub></msub><mo>,</mo><mi>θ</mi><mo>,</mo><mi mathvariant="bold">c</mi></mrow></mstyle></mfenced><mo>.</mo></math><img file="EP2776216B1_D0068.tif" /></maths>
0218The optimal vector (<i>i, x, y, θ</i>) that minimizes the Mahalanobis distance is sought as expressed in Eq. 61. <maths id="math0069" num="Eq. 61"><math display="block"><mfenced><mi>i</mi><mi>x</mi><mi>y</mi><mi>θ</mi></mfenced><mo>=</mo><munder><mrow><mi>argmin</mi><mi>ν</mi></mrow><mfenced><mi>i</mi><mi>x</mi><mi>y</mi><mi>θ</mi></mfenced></munder><msup><mfenced><mi>i</mi><mi>x</mi><mi>y</mi><mi>θ</mi></mfenced><mi>T</mi></msup><msubsup><mi mathvariant="bold">Q</mi><mi>t</mi><mrow><mo>−</mo><mn>1</mn></mrow></msubsup><mi>ν</mi><mfenced><mi>i</mi><mi>x</mi><mi>y</mi><mi>θ</mi></mfenced></math><img file="EP2776216B1_D0069.tif" /></maths>
0219An additional constraint is that position <i>(x, y)<sup>T</sup></i> falls into cell <i>i</i> as expressed in Eq. 62. <maths id="math0070" num="Eq. 62"><math display="block"><msub><mi>b</mi><msub><mi>i</mi><mrow><mn>0</mn><mo>,</mo><mi>x</mi></mrow></msub></msub><mo>≤</mo><mi>x</mi><mo><</mo><msub><mi>b</mi><msub><mi>i</mi><mrow><mn>1</mn><mo>,</mo><mi>x</mi></mrow></msub></msub><mo>,</mo><mspace width="1ex" /><msub><mi>b</mi><msub><mi>i</mi><mrow><mn>0</mn><mo>,</mo><mi>y</mi></mrow></msub></msub><mo>≤</mo><mi>y</mi><mo><</mo><msub><mi>b</mi><msub><mi>i</mi><mrow><mn>2</mn><mo>,</mo><mi>y</mi></mrow></msub></msub><mo>.</mo></math><img file="EP2776216B1_D0070.tif" /></maths>
0220Note that the covariances of the nodes are ignored. It is assumed that nodes in the map have converged reasonably enough such that their weight can be ignored relative to the measurement covariance Q<sub>t</sub>. In case there are nodes in the map with weak information, they should be discarded for the purpose of re-localization. An extension to our preferred embodiment would be to include the node covariances in the Mahalanobis distance (Eq. 61).
0221It is also possible to ignore the measurement covariance Q<sub>t</sub>, e.g. if it is unknown or for simplicity. The Mahalanobis distance (Eq. 61) then changes to an unweighted least-squares problem: <maths id="math0071" num="Eq. 63"><math display="block"><mfenced><mi>i</mi><mi>x</mi><mi>y</mi><mi>θ</mi></mfenced><mo>=</mo><munder><mi>argmin</mi><mfenced><mi>i</mi><mi>x</mi><mi>y</mi><mi>θ</mi></mfenced></munder><mrow><mo>‖</mo><mrow><mi>ν</mi><mfenced><mi>i</mi><mi>x</mi><mi>y</mi><mi>θ</mi></mfenced></mrow><mo>‖</mo></mrow></math><img file="EP2776216B1_D0071.tif" /></maths>
0222An approximation to (Eq. 61), that often works well in practice, is to first search for a cell candidate <i>i</i>, locate a position (<i>x, y</i>)<i><sup>T</sup></i> inside the found cell, and finally compute the orientation θ.
0223For finding cell candidates, we search the map of nodes <i>m<sub>k</sub>, k</i> = 1...<i>N</i> for the node that best matches to the observation z<sub>t</sub>. Recall that each <i>m<sub>k</sub></i> holds the expected signal values at position <b>b</b><sub>k</sub> with a fixed orientation <i>θ</i><sub>0</sub> = 0. Since it is unknown at which orientation <i>θ</i> the measurement <i><b>z</b><sub>t</sub></i> has been taken, the signal values are transformed into an orientation independent space before comparing node and measurement.
0224Let / be a function that maps a vector of signal values <maths id="math0072"><math display="inline"><mi mathvariant="normal">z</mi><mo>∈</mo><msup><mi>ℜ</mi><mi>M</mi></msup></math><img file="EP2776216B1_D0072.tif" /></maths> to a vector in the orientation independent space <maths id="math0073"><math display="inline"><msup><mi>ℜ</mi><mi>L</mi></msup></math><img file="EP2776216B1_D0073.tif" /></maths>: <maths id="math0074" num="Eq. 64"><math display="block"><mi>l</mi><mo>:</mo><msup><mi>ℜ</mi><mi>M</mi></msup><mo>→</mo><msup><mi>ℜ</mi><mi>L</mi></msup></math><img file="EP2776216B1_D0074.tif" /></maths>
0225The function / depends on the employed signals and sensors. In the (trivial) case where signal values do not depend on sensor orientation, / is the identity and <i>L</i> = <i>M.</i> In the case where signal values change with the orientation of the sensor, the function / typically maps signal vectors to a sub space, thus <i>L</i> < <i>M.</i> We will provide two explicit examples in our implementation using active beacons in Section 5.
0226The transformation / is applied to the nodes <i>m<sub>k</sub>, k</i> = 1...<i>N</i> of the vector field and to the current observation <i><b>z</b><sub>t</sub></i> corrected by the sensor calibration <b>c</b>. The difference <i>v<sub>l</sub></i>(<i>k</i>) between a node <i>k</i> and the measurement is then defined as expressed in Eq. 65. <maths id="math0075" num="Eq. 65"><math display="block"><msub><mi>ν</mi><mi>l</mi></msub><mfenced><mi>k</mi></mfenced><mo>=</mo><mi>l</mi><mfenced><msubsup><mi>h</mi><mi>c</mi><mrow><mo>−</mo><mn>1</mn></mrow></msubsup><mfenced><msub><mi mathvariant="normal">z</mi><mi>t</mi></msub><mi mathvariant="normal">c</mi></mfenced></mfenced><mo>−</mo><mi>l</mi><mfenced><msub><mi mathvariant="normal">m</mi><mi>k</mi></msub></mfenced></math><img file="EP2776216B1_D0075.tif" /></maths>
0227In Eq. 65, <maths id="math0076"><math display="inline"><msubsup><mi>h</mi><mi>c</mi><mrow><mo>−</mo><mn>1</mn></mrow></msubsup></math><img file="EP2776216B1_D0076.tif" /></maths> corrects measurement <i><b>z</b><sub>t</sub></i> using calibration <b>c</b> (see Section 5). The calibration <b>c</b> is assumed to be known. Since the robot is re-localizing in a vector field that was learned before, calibration <b>c</b> can be obtained from the last system state of Vector Field SLAM. It is also possible to use a nominal value <b>ĉ</b> or to ignore calibration in case its effects are negligible.
0228The best node k is then found as expressed in Eq. 66. <maths id="math0077" num="Eq. 66"><math display="block"><mi>k</mi><mo>=</mo><munder><mrow><mi>arg</mi><mspace width="1ex" /><mi>min</mi></mrow><mi>k</mi></munder><mspace width="1ex" /><msub><mi>ν</mi><mi>l</mi></msub><msup><mfenced><mi>k</mi></mfenced><mi>T</mi></msup><msubsup><mi>LH</mi><mi>c</mi><mrow><mo>−</mo><mn>1</mn></mrow></msubsup><msubsup><mi mathvariant="normal">Q</mi><mi>t</mi><mrow><mo>−</mo><mn>1</mn></mrow></msubsup><msubsup><mi mathvariant="normal">H</mi><mi>c</mi><mrow><mo>−</mo><mn>1</mn><mo>,</mo><mi>T</mi></mrow></msubsup><msub><msup><mi mathvariant="normal">L</mi><mi>T</mi></msup><msub><mi>ν</mi><mi>l</mi></msub></msub><mfenced><mi>k</mi></mfenced></math><img file="EP2776216B1_D0077.tif" /></maths>
0229In Eq. 66, <b>L</b><i>and</i><maths id="math0078"><math display="inline"><msubsup><mi mathvariant="normal">H</mi><mi>c</mi><mrow><mo>−</mo><mn>1</mn></mrow></msubsup></math><img file="EP2776216B1_D0078.tif" /></maths> are the Jacobians of <i>l and</i><maths id="math0079"><math display="inline"><msubsup><mi>h</mi><mi>c</mi><mrow><mo>−</mo><mn>1</mn></mrow></msubsup></math><img file="EP2776216B1_D0079.tif" /></maths>: <maths id="math0080" num="Eq. 67"><math display="block"><mi mathvariant="normal">L</mi><mo>=</mo><mfrac><mrow><mo>∂</mo><mi>l</mi></mrow><mrow><mo>∂</mo><mi mathvariant="normal">z</mi></mrow></mfrac><mfenced><msubsup><mi>h</mi><mi>c</mi><mrow><mo>−</mo><mn>1</mn></mrow></msubsup><mfenced><msub><mi mathvariant="normal">z</mi><mi>t</mi></msub><mi mathvariant="normal">c</mi></mfenced></mfenced></math><img file="EP2776216B1_D0080.tif" /></maths><maths id="math0081" num="Eq. 68"><math display="block"><msubsup><mi mathvariant="normal">H</mi><mi>c</mi><mrow><mo>−</mo><mn>1</mn></mrow></msubsup><mo>=</mo><mfrac><mrow><mo>∂</mo><msubsup><mi>h</mi><mi>c</mi><mrow><mo>−</mo><mn>1</mn></mrow></msubsup></mrow><mrow><mo>∂</mo><mi mathvariant="normal">z</mi></mrow></mfrac><mfenced><msub><mi mathvariant="normal">z</mi><mi>t</mi></msub><mi mathvariant="normal">c</mi></mfenced><mo>.</mo></math><img file="EP2776216B1_D0081.tif" /></maths>
0230As for the original optimization problem (Eq. 61), if the measurement covariance <b>Q</b><i><sub>t</sub></i> is ignored, the problem simplifies to an unweighted least-squares formulation: <maths id="math0082" num="Eq. 69"><math display="block"><mi>k</mi><mo>=</mo><munder><mrow><mi>arg</mi><mspace width="1ex" /><mi>min</mi></mrow><mi>k</mi></munder><mrow><mo>‖</mo><mrow><msub><mi>ν</mi><mi>l</mi></msub><mfenced><mi>k</mi></mfenced></mrow><mo>‖</mo></mrow><mo>.</mo></math><img file="EP2776216B1_D0082.tif" /></maths>
0231The best node can be found by simply trying all nodes k = 1... <i>N</i> .
0232After the best node k has been determined, the cells connected to it are evaluated. There can be up to four cells that have node k as one of its corners. Let these four cells be referred to as <i>i<sup>k,j</sup>, j</i> = 1 ... 4. For example for <i>k</i> = 6 in <figref idref="f0030">Figure 30</figref> there are four cells <i>i</i><sup>6,1</sup>, <i>i</i><sup>6,2</sup>, <i>i</i><sup>6,3</sup> and <i>i</i><sup>6,4</sup> with node indices (6, 7, 10, 11), (5, 6, 9, 10), (2, 3, 6, 7) and (1, 2, 5, 6) that contain node 6.
0233Given a cell <i>i</i> we can define the difference <i>v<sub>i</sub></i>(<i>x, y</i>) of the signal values at location (<i>x</i>, <i>y</i>)<i><sup>T</sup></i> to the measurement as expressed in Eq. 70. <maths id="math0083" num="Eq. 70"><math display="block"><msub><mi>ν</mi><mi>i</mi></msub><mfenced><mi>x</mi><mi>y</mi></mfenced><mo>=</mo><mi>l</mi><mfenced><msubsup><mi>h</mi><mi>c</mi><mrow><mo>−</mo><mn>1</mn></mrow></msubsup><mfenced><msub><mi mathvariant="normal">z</mi><mi>t</mi></msub><mi mathvariant="normal">c</mi></mfenced></mfenced><mo>−</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>j</mi><mo>=</mo><mn>0</mn></mrow><mn>3</mn></munderover><mrow><msub><mi>w</mi><mi>j</mi></msub><mi>l</mi><mfenced><msub><mi mathvariant="normal">m</mi><msub><mi>i</mi><mi>j</mi></msub></msub></mfenced></mrow></mstyle></math><img file="EP2776216B1_D0083.tif" /></maths>
0234In Eq. 70, w<sub>j</sub> is defined as in Eq. 50 to Eq. 53. By expanding and rewriting terms, difference function <i>v<sub>i</sub></i> can be written as: <maths id="math0084" num="Eq. 71"><math display="block"><msub><mi>ν</mi><mi>i</mi></msub><mfenced><mi>x</mi><mo>,</mo><mspace width="1ex" /><mi>y</mi></mfenced><mo>=</mo><mi mathvariant="normal">A</mi><mi mathvariant="italic">xy</mi><mo>+</mo><mi mathvariant="normal">B</mi><mi>x</mi><mo>+</mo><mi mathvariant="normal">C</mi><mi>y</mi><mo>+</mo><mi mathvariant="normal">D</mi></math><img file="EP2776216B1_D0084.tif" /></maths> where <maths id="math0085" num="Eq. 72"><math display="block"><mi mathvariant="normal">A</mi><mo>=</mo><mfrac><mrow><mo>−</mo><mi>l</mi><mfenced><msub><mi mathvariant="normal">m</mi><msub><mi>i</mi><mn>0</mn></msub></msub></mfenced><mo>+</mo><mi>l</mi><mfenced><msub><mi mathvariant="normal">m</mi><msub><mi>i</mi><mn>1</mn></msub></msub></mfenced><mo>+</mo><mi>l</mi><mfenced><msub><mi mathvariant="normal">m</mi><msub><mi>i</mi><mn>2</mn></msub></msub></mfenced><mo>−</mo><mi>l</mi><mfenced><msub><mi mathvariant="normal">m</mi><msub><mi>i</mi><mn>3</mn></msub></msub></mfenced></mrow><mrow><mfenced><msub><mi>b</mi><msub><mi>i</mi><mrow><mn>1</mn><mo>,</mo><mi>x</mi></mrow></msub></msub><mo>−</mo><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>,</mo><mi>x</mi></mrow></msub></mfenced><mfenced><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>2</mn></msub><mo>,</mo><mi>y</mi></mrow></msub><mo>−</mo><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>,</mo><mi>y</mi></mrow></msub></mfenced></mrow></mfrac></math><img file="EP2776216B1_D0085.tif" /></maths><maths id="math0086" num="Eq. 73"><math display="block"><mi mathvariant="normal">B</mi><mo>=</mo><mfrac><mrow><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>2</mn></msub><mo>,</mo><mi>y</mi></mrow></msub><mfenced><mi>l</mi><mfenced><msub><mi mathvariant="bold">m</mi><msub><mi>i</mi><mn>0</mn></msub></msub></mfenced><mo>−</mo><mi>l</mi><mfenced><msub><mi mathvariant="bold">m</mi><msub><mi>i</mi><mn>1</mn></msub></msub></mfenced></mfenced><mo>−</mo><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>,</mo><mi>y</mi></mrow></msub><mfenced><mi>l</mi><mfenced><msub><mi mathvariant="bold">m</mi><msub><mi>i</mi><mn>2</mn></msub></msub></mfenced><mo>−</mo><mi>l</mi><mfenced><msub><mi mathvariant="bold">m</mi><msub><mi>i</mi><mn>3</mn></msub></msub></mfenced></mfenced></mrow><mrow><mfenced><msub><mi>b</mi><msub><mi>i</mi><mrow><mn>1</mn><mo>,</mo><mi>x</mi></mrow></msub></msub><mo>−</mo><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>,</mo><mi>x</mi></mrow></msub></mfenced><mfenced><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>2</mn></msub><mo>,</mo><mi>y</mi></mrow></msub><mo>−</mo><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>,</mo><mi>y</mi></mrow></msub></mfenced></mrow></mfrac></math><img file="EP2776216B1_D0086.tif" /></maths><maths id="math0087" num="Eq. 74"><math display="block"><mi mathvariant="normal">C</mi><mo>=</mo><mfrac><mrow><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>1</mn></msub><mo>,</mo><mi>x</mi></mrow></msub><mfenced><mi>l</mi><mfenced><msub><mi mathvariant="normal">m</mi><msub><mi>i</mi><mn>0</mn></msub></msub></mfenced><mo>−</mo><mi>l</mi><mfenced><msub><mi mathvariant="normal">m</mi><msub><mi>i</mi><mn>2</mn></msub></msub></mfenced></mfenced><mo>−</mo><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>,</mo><mi>x</mi></mrow></msub><mfenced><mi>l</mi><mfenced><msub><mi mathvariant="normal">m</mi><msub><mi>i</mi><mn>1</mn></msub></msub></mfenced><mo>−</mo><mi>l</mi><mfenced><msub><mi mathvariant="normal">m</mi><msub><mi>i</mi><mn>3</mn></msub></msub></mfenced></mfenced></mrow><mrow><mfenced><msub><mi>b</mi><msub><mi>i</mi><mrow><mn>1</mn><mo>,</mo><mi>x</mi></mrow></msub></msub><mo>−</mo><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>,</mo><mi>x</mi></mrow></msub></mfenced><mfenced><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>2</mn></msub><mo>,</mo><mi>y</mi></mrow></msub><mo>−</mo><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>,</mo><mi>y</mi></mrow></msub></mfenced></mrow></mfrac></math><img file="EP2776216B1_D0087.tif" /></maths><maths id="math0088" num="Eq. 75"><math display="block"><mi mathvariant="normal">D</mi><mo>=</mo><mi>l</mi><mfenced><msubsup><mi>h</mi><mi>c</mi><mrow><mo>−</mo><mn>1</mn></mrow></msubsup><mfenced><msub><mi>z</mi><mi>t</mi></msub><mo>,</mo><mspace width="1ex" /><mi>c</mi></mfenced></mfenced><mo>−</mo><mfrac><mrow><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>1</mn></msub><mo>,</mo><mi>x</mi></mrow></msub><mfenced><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>2</mn></msub><mo>,</mo><mi>y</mi></mrow></msub><mi>l</mi><mfenced><msub><mi mathvariant="normal">m</mi><msub><mi>i</mi><mn>0</mn></msub></msub></mfenced><mo>−</mo><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>,</mo><mi>y</mi></mrow></msub><mi>l</mi><mfenced><msub><mi mathvariant="normal">m</mi><msub><mi>i</mi><mn>2</mn></msub></msub></mfenced></mfenced><mo>−</mo><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>,</mo><mi>x</mi></mrow></msub><mfenced><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>2</mn></msub><mo>,</mo><mi>y</mi></mrow></msub><mi>l</mi><mfenced><msub><mi mathvariant="normal">m</mi><msub><mi>i</mi><mn>1</mn></msub></msub></mfenced><mo>−</mo><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>,</mo><mi>y</mi></mrow></msub><mi>l</mi><mfenced><msub><mi mathvariant="normal">m</mi><msub><mi>i</mi><mn>3</mn></msub></msub></mfenced></mfenced></mrow><mrow><mfenced><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>1</mn></msub><mo>,</mo><mi>x</mi></mrow></msub><mo>−</mo><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>,</mo><mi>x</mi></mrow></msub></mfenced><mfenced><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>2</mn></msub><mo>,</mo><mi>y</mi></mrow></msub><mo>−</mo><msub><mi>b</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>,</mo><mi>y</mi></mrow></msub></mfenced></mrow></mfrac></math><img file="EP2776216B1_D0088.tif" /></maths>
0235A position (<i>x<sub>i</sub>, y<sub>i</sub></i>)<i><sup>T</sup></i> can be obtained by minimizing the Mahalanobis distance as expressed in Eq. 76. <maths id="math0089" num="Eq. 76"><math display="block"><mfenced><msub><mi>x</mi><mi>i</mi></msub><mo>,</mo><mspace width="1ex" /><msub><mi>y</mi><mi>i</mi></msub></mfenced><mo>=</mo><munder><mrow><mi>arg</mi><mspace width="1ex" /><mi>min</mi></mrow><mfenced><mi>x</mi><mo>,</mo><mspace width="1ex" /><mi>y</mi></mfenced></munder><mspace width="1ex" /><msub><mi>ν</mi><mi>i</mi></msub><msup><mfenced><mi>x</mi><mo>,</mo><mspace width="1ex" /><mi>y</mi></mfenced><mi>T</mi></msup><mspace width="1ex" /><msubsup><mi mathvariant="bold">LH</mi><mi>c</mi><mrow><mo>−</mo><mn>1</mn></mrow></msubsup><msubsup><mi mathvariant="bold">Q</mi><mi>t</mi><mrow><mo>−</mo><mn>1</mn></mrow></msubsup><msubsup><mi mathvariant="bold">H</mi><mi>c</mi><mrow><mo>−</mo><mn>1</mn><mo>,</mo><mi>T</mi></mrow></msubsup><msup><mi mathvariant="bold">L</mi><mi>T</mi></msup><msub><mi>ν</mi><mi>i</mi></msub><mfenced><mi>x</mi><mo>,</mo><mspace width="1ex" /><mi>y</mi></mfenced><mspace width="1ex" /></math><img file="EP2776216B1_D0089.tif" /></maths>
0236Alternatively, a position (<i>x<sub>i,</sub> y<sub>i</sub></i>)<i><sup>T</sup></i> can be obtained without using measurement covariance Q<sub>t</sub> as expressed in Eq. 77. <maths id="math0090" num="Eq. 77"><math display="block"><mfenced><msub><mi>x</mi><mi>i</mi></msub><mo>,</mo><mspace width="1ex" /><msub><mi>y</mi><mi>i</mi></msub></mfenced><mo>=</mo><munder><mrow><mi>arg</mi><mspace width="1ex" /><mi>min</mi></mrow><mfenced><mi>x</mi><mo>,</mo><mspace width="1ex" /><mi>y</mi></mfenced></munder><mspace width="1ex" /><mrow><mo>‖</mo><mrow><msub><mi>ν</mi><mi>i</mi></msub><mfenced><mi>x</mi><mo>,</mo><mspace width="1ex" /><mi>y</mi></mfenced></mrow><mo>‖</mo></mrow><mo>.</mo></math><img file="EP2776216B1_D0090.tif" /></maths>
0237Position (<i>x<sub>i</sub>, y<sub>i</sub></i>)<i><sup>T</sup></i> can be found by non-linear optimization, e.g. using the Levenberg-Marquardt algorithm. In the following we focus on a particular case of the function / where the orientation independent space <maths id="math0091"><math display="inline"><msup><mi>ℜ</mi><mi>L</mi></msup></math><img file="EP2776216B1_D0091.tif" /></maths> has dimension <i>L</i> = 2. The minimum of Eq. 76 and Eq. 77can then be found by setting <maths id="math0092" num="Eq. 78"><math display="block"><msub><mi>ν</mi><mi>i</mi></msub><mfenced><msub><mi>x</mi><mi>i</mi></msub><mo>,</mo><mspace width="1ex" /><msub><mi>y</mi><mi>i</mi></msub></mfenced><mo>=</mo><mn>0</mn><mo>.</mo></math><img file="EP2776216B1_D0092.tif" /></maths>
0238Except for degenerated cases, there are two unique solutions which are obtained using the quadratic formula. Let these solutions be (<i>x</i><sub><i>i</i>,1</sub>, <i>y</i><sub><i>i</i>,1</sub>) and (<i>x<sub>i,2</sub></i>, <i>y</i><sub><i>i</i>,2</sub>).
0239For each cell <i>i</i> ∈ {<i>i<sup>k,j</sup></i> | <i>j</i> = 1...4} we obtain such a pair of positions. A test that a unique solution has been found can be performed by verifying Eq. 62 with each found position. In case there is one and only one position satisfying Eq. 62 it can be concluded that cell and robot position has been found. Otherwise, the measurement is rejected and the process is repeated with the next measurement according to <figref idref="f0035">Figure 35A or 35B</figref>.
0240Having found cell and robot position, the last missing information is the orientation θ. We can find θ by solving the original optimization problem defined in Eq. 61 and Eq. 63 where <i>i</i>, <i>x</i> and <i>y</i> are given by the algorithms above. The particular solution depends on the rotational component <i>h<sub>R</sub></i>. We will provide an example in Section 5.
0241It should be noted that one embodiment might not find the global minimum defined in Eq. 61 and Eq. 63 since for example the best node found in Eq. 66 and Eq. 69 can be a local extremum. Furthermore, since in one embodiment, only the cells at the best node are evaluated, there is no guarantee that a found pose is unique and that there are no other pose candidates in the vector field matching to measurement z<sub>t</sub>. It is therefore preferable to confirm the found pose by tracking it for some time.
0242Using the found pose x<i><sub>t</sub></i> = (<i>x, y, θ</i>)<i><sup>T</sup></i> we start a localization filter based on an EKF that tracks the robot pose from the found location. On robot motion <b>u</b><i><sub>t</sub></i>, the robot pose is updated using the motion model of Eq. 46 but ignoring uncertainties: <maths id="math0093" num="Eq. 79"><math display="block"><msub><mover accent="true"><mi>x</mi><mo>‾</mo></mover><mi>t</mi></msub><mo>=</mo><mi>g</mi><mfenced><msub><mi mathvariant="normal">x</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub><mo>,</mo><mspace width="1ex" /><msub><mi mathvariant="bold">u</mi><mi>t</mi></msub></mfenced></math><img file="EP2776216B1_D0093.tif" /></maths>
0243When receiving a measurement z<sub>t</sub>, we setup a constant pose covariance <o ostyle="single">∑</o><i><sub>xx</sub></i> as a diagonal matrix. The elements of <o ostyle="single">∑</o><i><sub>xx</sub></i> depend on the robot and sensor but are not critical. A typical choice is <o ostyle="single">∑</o><i><sub>xx</sub></i> = diag(0.1<sup>2</sup>m<sup>2</sup>, 0.1<sup>2</sup>m<sup>2</sup>, 0.1<sup>2</sup>rad<sup>2</sup>). The Mahalanobis distance of the measurement innovation is then computed as expressed in Eq. 80. <maths id="math0094" num="Eq. 80"><math display="block"><msup><mover accent="true"><mi>D</mi><mo>‾</mo></mover><mn>2</mn></msup><mfenced><msub><mi mathvariant="bold">z</mi><mi>t</mi></msub></mfenced><mo>=</mo><msup><mfenced><msub><mi mathvariant="bold">z</mi><mi>t</mi></msub><mo>−</mo><mi>h</mi><mfenced><msub><mover accent="true"><mi>y</mi><mo>‾</mo></mover><mi>t</mi></msub></mfenced></mfenced><mi>T</mi></msup><mstyle displaystyle="true"><msubsup><mo>∑</mo><mi>ν</mi><mrow><mo>−</mo><mn>1</mn></mrow></msubsup><mfenced><msub><mi mathvariant="bold">z</mi><mi>t</mi></msub><mo>−</mo><mi>h</mi><mfenced><msub><mover accent="true"><mi>y</mi><mo>‾</mo></mover><mi>t</mi></msub></mfenced></mfenced></mstyle></math><img file="EP2776216B1_D0094.tif" /></maths>
0244In Eq. 80, <maths id="math0095"><math display="inline"><msub><mo>∑</mo><mi>ν</mi></msub><mo>=</mo><msub><mi mathvariant="normal">H</mi><mi>χ</mi></msub><msub><mover accent="true"><mi mathvariant="normal">Σ</mi><mo>‾</mo></mover><mi mathvariant="italic">χχ</mi></msub><msubsup><mi mathvariant="normal">H</mi><mi>χ</mi><mi>T</mi></msubsup><mo>+</mo><msub><mi mathvariant="normal">Q</mi><mi>t</mi></msub></math><img file="EP2776216B1_D0095.tif" /></maths> is the innovation covariance, <o ostyle="single">y</o><i><sub>t</sub></i> = (<o ostyle="single">x</o><sub>t</sub>, <b>c</b>, <b>m<sub>1</sub></b><i>...</i><b>m</b><i><sub>N</sub>), h</i> is defined as in Eq. 48 and <b>H</b><i><sub>χ</sub></i> is its Jacobian with respect to robot pose: <maths id="math0096" num="Eq. 81"><math display="block"><mi mathvariant="bold">H</mi><mi>χ</mi><mo>=</mo><mfrac><mrow><mo>∂</mo><mi>h</mi></mrow><mrow><mo>∂</mo><mi>x</mi></mrow></mfrac><mfenced><msub><mover accent="true"><mi mathvariant="normal">y</mi><mo>‾</mo></mover><mi>t</mi></msub></mfenced><mo>.</mo></math><img file="EP2776216B1_D0096.tif" /></maths>
0245If the Mahalanobis distance falls above a threshold, i.e. <i><o ostyle="single">D</o></i>(<i><b>z</b><sub>t</sub></i>) > D<sub>max</sub>, then the measurement <i><b>z</b><sub>t</sub></i> is rejected. A typical threshold is <i>D</i><sub>max</sub> = 3. Otherwise the measurement <i><b>z</b><sub>t</sub></i> is accepted, and the robot pose is updated using the EKF equation: <maths id="math0097" num="Eq. 82"><math display="block"><msub><mi mathvariant="normal">x</mi><mi>t</mi></msub><mo>=</mo><msub><mover accent="true"><mi mathvariant="normal">x</mi><mo>‾</mo></mover><mi>t</mi></msub><mo>+</mo><msub><mover accent="true"><mi mathvariant="normal">Σ</mi><mo>‾</mo></mover><mi mathvariant="italic">χχ</mi></msub><msubsup><mi mathvariant="normal">H</mi><mi>χ</mi><mi>T</mi></msubsup><mstyle displaystyle="true"><msubsup><mo>∑</mo><mi>ν</mi><mrow><mo>−</mo><mn>1</mn></mrow></msubsup><mrow><mfenced><msub><mi mathvariant="normal">z</mi><mi>t</mi></msub><mo>−</mo><mi>h</mi><mfenced><msub><mover accent="true"><mi mathvariant="normal">y</mi><mo>‾</mo></mover><mi>t</mi></msub></mfenced></mfenced><mo>.</mo></mrow></mstyle></math><img file="EP2776216B1_D0097.tif" /></maths>
0246Rejected measurements are outliers either caused by excessive measurement noise or because they do not fit to the vector field around robot pose <o ostyle="single">x</o><sub>t</sub>. By counting the number of outliers <i>C</i><sub>outlier</sub> it can be verified that the pose hypothesis is correct. If the count reaches a maximum number <i>C</i><sub>max</sub> then the tracking filter failed and we restart re-ocalization using the next measurement according to <figref idref="f0035">Figure 35A or 35B</figref>.
0247On the other hand, if <i>C</i><sub>outlier</sub> < <i>C</i><sub>max</sub> after traveling a certain minimum distance and integrating a certain minimum number of measurements, it can be concluded that the tracking filter succeeded. The process can then switch back to Vector Field SLAM by using the relocation procedure of the ESEIF with the found robot pose and a large pose covariance.
0248Note that the tracking filter ignores to covariances associated with the nodes in the map. We try to compensate for this somewhat by always using the same constant pose covariance <o ostyle="single">∑</o><i><sub>χχ</sub></i> when integrating measurements. Although this approach is not mathematically accurate, it is only used over a short distance of robot travel and only to verify our pose hypothesis. Thus, the consistency of this filter is not a primary concern. A property of the filter is that we only need to maintain the robot pose x<sub>t</sub>. This can be advantageous if we were to track several different pose hypotheses.
0249<figref idref="f0037">Figure 37</figref> is a flowchart illustrating a process for finding a pose hypothesis. In a state 3702, the process selects the cell in which the measurement <i>z<sub>t</sub></i> fits the best. For example, the measurement <i>z<sub>t</sub></i> can be compared to the mean of the four nodes of each of the cells. In a state 3704, the process computes the position within the cell found in the state 3702 where the measurement <i>z<sub>t</sub></i> fits best. For example, the quadratic formula of Eq. 78 can be used.
0250<figref idref="f0038">Figure 38</figref> is a flowchart illustrating an alternative process for finding a pose hypothesis. In a state 3802, the process selects the node where the measurement <i>z<sub>t</sub></i> fits best, via , for example, Eq. 66 and Eq. 69. In a state 3804, the process successively selects one of the four cells connected to the node. In a state 3806, the process computes the position inside the selected cell where the measurement fits best, for example, by using the quadratic formula of Eq. 78. The decision block 3810 checks if there are more cells to investigate. In the state 3812, the process obtains the orientation for the found position.
0251In case there is more than one position found, the following can be performed: (a) the best position is selected, (b) the measurement can be rejected, and (c) all the found pose hypotheses can be outputted.
Implementation with Active Beacons
0252We have experimented with Vector Field SLAM and the foregoing extensions for large environments on a system using Northstar, a low-cost optical sensing system for indoor localization [21]. A beacon projects a pair of unique infrared patterns on the ceiling (see <figref idref="f0001">Figure 1</figref>). The beacon can be placed relatively freely in the room and adjusted such that it points towards the ceiling. The projected patterns carry a different frequency encoded in the signal to ease the data association on the robot. Different Northstar beacons also provide different frequencies. An optical sensor on the robot detects these patterns and measures the direction to both spots on the ceiling. The sensor then reports the coordinates of both direction vectors projected onto the sensor plane, thus the signal dimension is <i>M</i> = 4 and <maths id="math0098" num="Eq. 83"><math display="block"><msub><mi mathvariant="bold">z</mi><mi>t</mi></msub><mo>=</mo><msup><mfenced><msub><mi>z</mi><msub><mi>χ</mi><mn>1</mn></msub></msub><msub><mi>z</mi><msub><mi>y</mi><mn>1</mn></msub></msub><msub><mi>z</mi><msub><mi>χ</mi><mn>2</mn></msub></msub><msub><mi>z</mi><msub><mi>y</mi><mn>2</mn></msub></msub></mfenced><mi>T</mi></msup><mo>.</mo></math><img file="EP2776216B1_D0098.tif" /></maths>
0253The covariance <b>Q</b><sub>t</sub> can be derived from <i><b>z</b><sub>t</sub></i> along with two additional sensor outputs measuring the signal strength. The signal strengths are also used in the significance test in the re-localization procedure. In order to pass the test, the process requires that both spots are measured with a large enough intensity.
0254Under relatively good circumstances, the reported spot coordinates change linearly with the robot position. However, infrared light reaches the sensor not only by direct line-of-sight but also through multiple paths by reflecting off walls and other objects, so the spot coordinates change in a non-linear way as the robot approaches an obstructed area.
0255Due to tolerances in manufacturing and the mounting of the sensor on the robot, the sensor plane may not be perfectly horizontal. The result of such small angular errors is well-approximated by a coordinate offset for both spots. When rotating the sensor in place, this offset becomes apparent as rotational variability. Thus, the calibration parameters are: <maths id="math0099" num="Eq. 84"><math display="block"><mi mathvariant="bold">c</mi><mo>=</mo><msup><mfenced><msub><mi>c</mi><mi>x</mi></msub><msub><mi>c</mi><mi>y</mi></msub></mfenced><mi>T</mi></msup><mo>.</mo></math><img file="EP2776216B1_D0099.tif" /></maths>
0256In the ideal case, the offset vanishes, thus the nominal calibration is ĉ = (0, 0)<sup>T</sup>.
0257The function <maths id="math0100"><math display="inline"><msubsup><mi>h</mi><mi>c</mi><mrow><mo>−</mo><mn>1</mn></mrow></msubsup></math><img file="EP2776216B1_D0100.tif" /></maths> for correcting measurements with respect to calibration is as expressed in Eq. 85. <maths id="math0101" num="Eq. 85"><math display="block"><msubsup><mi>h</mi><mi>c</mi><mrow><mo>−</mo><mn>1</mn></mrow></msubsup><mfenced><msub><mi mathvariant="normal">z</mi><mi>t</mi></msub><mi mathvariant="bold">c</mi></mfenced><mo>=</mo><mfenced><mtable><mtr><mtd><msub><mi>z</mi><mrow><mi>x</mi><mn>1</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>z</mi><mrow><mi>y</mi><mn>1</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>z</mi><mrow><mi>x</mi><mn>2</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>z</mi><mrow><mi>y</mi><mn>2</mn></mrow></msub></mtd></mtr></mtable></mfenced><mo>−</mo><mfenced><mtable><mtr><mtd><msub><mi>c</mi><mi>x</mi></msub></mtd></mtr><mtr><mtd><msub><mi>c</mi><mi>y</mi></msub></mtd></mtr><mtr><mtd><msub><mi>c</mi><mi>x</mi></msub></mtd></mtr><mtr><mtd><msub><mi>c</mi><mi>y</mi></msub></mtd></mtr></mtable></mfenced></math><img file="EP2776216B1_D0101.tif" /></maths>
0258The Jacobian of function <maths id="math0102"><math display="inline"><msubsup><mi>h</mi><mi>c</mi><mrow><mo>−</mo><mn>1</mn></mrow></msubsup></math><img file="EP2776216B1_D0102.tif" /></maths> is the identity matrix <maths id="math0103"><math display="inline"><msubsup><mi mathvariant="bold">H</mi><mi>c</mi><mrow><mo>−</mo><mn>1</mn></mrow></msubsup><mo>=</mo><msub><mi mathvariant="bold-italic">I</mi><mrow><mn>4</mn><mo>×</mo><mn>4</mn></mrow></msub></math><img file="EP2776216B1_D0103.tif" /></maths>.
0259When turning the sensor, the spot coordinates change according to the rotation angle <i>θ</i> but in the opposite direction. The rotational component <i>h<sub>R</sub></i> of our model then becomes as expressed in Eq. 86. <maths id="math0104" num="Eq. 86"><math display="block"><msub><mi>h</mi><mi>R</mi></msub><mfenced><msub><mi>h</mi><msub><mi>x</mi><mn>1</mn></msub></msub><msub><mi>h</mi><msub><mi>y</mi><mn>1</mn></msub></msub><msub><mi>h</mi><msub><mi>x</mi><mn>2</mn></msub></msub><msub><mi>h</mi><msub><mi>y</mi><mn>2</mn></msub></msub><mi>θ</mi><msub><mi>c</mi><mi>x</mi></msub><msub><mi>c</mi><mi>y</mi></msub></mfenced><mo>=</mo><mfenced><mtable><mtr><mtd><mrow><mi>cos</mi><mi>θ</mi></mrow></mtd><mtd><mrow><mi>sin</mi><mi>θ</mi></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mrow><mo>−</mo><mi>sin</mi><mi>θ</mi></mrow></mtd><mtd><mrow><mi>cos</mi><mi>θ</mi></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mrow><mi>cos</mi><mi>θ</mi></mrow></mtd><mtd><mrow><mi>sin</mi><mi>θ</mi></mrow></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mrow><mo>−</mo><mi>sin</mi><mi>θ</mi></mrow></mtd><mtd><mrow><mi>cos</mi><mi>θ</mi></mrow></mtd></mtr></mtable></mfenced><mfenced><mtable><mtr><mtd><msub><mi>h</mi><mrow><mi>x</mi><mn>1</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>h</mi><mrow><mi>y</mi><mn>1</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>h</mi><mrow><mi>x</mi><mn>2</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>h</mi><mrow><mi>y</mi><mn>2</mn></mrow></msub></mtd></mtr></mtable></mfenced><mo>+</mo><mfenced><mtable><mtr><mtd><msub><mi>c</mi><mi>x</mi></msub></mtd></mtr><mtr><mtd><msub><mi>c</mi><mi>y</mi></msub></mtd></mtr><mtr><mtd><msub><mi>c</mi><mi>x</mi></msub></mtd></mtr><mtr><mtd><msub><mi>c</mi><mi>y</mi></msub></mtd></mtr></mtable></mfenced></math><img file="EP2776216B1_D0104.tif" /></maths>
0260In Eq. 86, (<i>h</i><sub><i>x</i><sub2>1</sub2></sub>, <i>h<sub>y<sub2>1</sub2></sub>, h<sub>x<sub2>2</sub2></sub>, h</i><sub><i>y</i><sub2>2</sub2></sub>)<i><sup>T</sup></i> is the output vector of Eq. 49.
0261For mapping signal values into the orientation independent space <maths id="math0105"><math display="inline"><msup><mi>ℜ</mi><mi>L</mi></msup></math><img file="EP2776216B1_D0105.tif" /></maths>, we experimented with two different variants <i>l</i><sub>1</sub> and <i>l</i><sub>2</sub> defined as expressed in Eq. 87 and Eq. 88. <maths id="math0106" num="Eq. 87"><math display="block"><msub><mi>l</mi><mn>1</mn></msub><mfenced><msub><mi>m</mi><mrow><mi>x</mi><mn>1</mn></mrow></msub><msub><mi>m</mi><mrow><mi>y</mi><mn>1</mn></mrow></msub><msub><mi>m</mi><mrow><mi>x</mi><mn>2</mn></mrow></msub><msub><mi>m</mi><mrow><mi>y</mi><mn>2</mn></mrow></msub></mfenced><mo>=</mo><mfenced><mtable><mtr><mtd><msqrt><mrow><msubsup><mi>m</mi><mrow><mi>x</mi><mn>1</mn></mrow><mn>2</mn></msubsup><mo>+</mo><msubsup><mi>m</mi><mrow><mi>y</mi><mn>1</mn></mrow><mn>2</mn></msubsup></mrow></msqrt></mtd></mtr><mtr><mtd><msqrt><mrow><msubsup><mi>m</mi><mrow><mi>x</mi><mn>2</mn></mrow><mn>2</mn></msubsup><mo>+</mo><msubsup><mi>m</mi><mrow><mi>y</mi><mn>2</mn></mrow><mn>2</mn></msubsup></mrow></msqrt></mtd></mtr></mtable></mfenced></math><img file="EP2776216B1_D0106.tif" /></maths><maths id="math0107" num="Eq. 88"><math display="block"><msub><mi>l</mi><mn>1</mn></msub><mfenced><msub><mi>m</mi><mrow><mi>x</mi><mn>1</mn></mrow></msub><msub><mi>m</mi><mrow><mi>y</mi><mn>1</mn></mrow></msub><msub><mi>m</mi><mrow><mi>x</mi><mn>2</mn></mrow></msub><msub><mi>m</mi><mrow><mi>y</mi><mn>2</mn></mrow></msub></mfenced><mo>=</mo><mfenced><mtable><mtr><mtd><mrow><mi>cos</mi><mspace width="1ex" /><mi>γ</mi></mrow></mtd><mtd><mrow><mi>sin</mi><mspace width="1ex" /><mi>γ</mi></mrow></mtd></mtr><mtr><mtd><mrow><mo>−</mo><mi>sin</mi><mspace width="1ex" /><mi>γ</mi></mrow></mtd><mtd><mrow><mi>cos</mi><mspace width="1ex" /><mi>γ</mi></mrow></mtd></mtr></mtable></mfenced><mfenced><mtable><mtr><mtd><mfrac><mrow><msub><mi>m</mi><mrow><mi>x</mi><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>m</mi><mrow><mi>x</mi><mn>2</mn></mrow></msub></mrow><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mrow><msub><mi>m</mi><mrow><mi>y</mi><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>m</mi><mrow><mi>y</mi><mn>2</mn></mrow></msub></mrow><mn>2</mn></mfrac></mtd></mtr></mtable></mfenced></math><img file="EP2776216B1_D0107.tif" /></maths>
0262In Eq. 88, <i>γ</i> is as expressed in Eq. 89. <maths id="math0108" num="Eq. 89"><math display="block"><mi>γ</mi><mo>=</mo><msup><mi>tan</mi><mrow><mo>−</mo><mn>1</mn></mrow></msup><mfrac><mrow><msub><mi>m</mi><mrow><mi>y</mi><mn>1</mn></mrow></msub><mo>−</mo><msub><mi>m</mi><mrow><mi>y</mi><mn>2</mn></mrow></msub></mrow><mrow><msub><mi>m</mi><mrow><mi>x</mi><mn>1</mn></mrow></msub><mo>−</mo><msub><mi>m</mi><mrow><mi>x</mi><mn>2</mn></mrow></msub></mrow></mfrac></math><img file="EP2776216B1_D0108.tif" /></maths>
0263Function <i>l</i><sub>1</sub> computes the distance to both spots, which does not depend on sensor orientation. The intuition behind <i>l</i><sub>2</sub> is that the angle, between the measured spots does not depend on sensor orientation. The center between the spots rotated by -γ, is then independent of sensor orientation. Both functions map sensor values to <maths id="math0109"><math display="inline"><msup><mi>ℜ</mi><mn>2</mn></msup></math><img file="EP2776216B1_D0109.tif" /></maths>, i.e. <i>L</i> = 2 which allows us to employ Eq. 78 when finding the robot position that best matches to measurement Zt in a given cell.
Pickup Detection
0264When a robot is picked up by the user during normal operation of the robot, a system for detecting this pickup situation is useful. Such a robot can be, for example, an automatic floor cleaner or other floor treatment device, or a robotic toy. For example, a user may pick up an autonomous floor cleaner to resupply the cleaner with cleaning fluid, to change a cloth or wiper, to empty out a receptable, etc. It would be desirable to have the autonomous floor cleaner restart where it had left off (resume) rather than start all over again. Some existing pickup detecting systems use for example switch sensors located at the wheels. As long as the robot is on the ground, the switch sensors at each wheel are closed due to the weight of the robot. When the robot is lifted, the switches trigger and detect that the robot is in mid air.
0265While existing systems like the one described above are working solutions, they require a sensor at one or more wheels which increases the cost of the product. One embodiment instead does not use a specific sensor but reuses other sensors on the robot and a logic that detects the pickup situation.
0266One embodiment evaluates the signals of cliff sensors and a gyroscope for detecting a pickup. Cliff sensors are installed in most robotic products in order to detect the edges of areas where the robot could fall down. For example when moving closer and partly over the edge of a staircase leading downwards, these sensors trigger and provide the robot control software an input for changing the direction of travel in order not to drive or fall down the stairs. A gyroscope can be used for measuring the angular velocity in a robotic system. By integrating the data provided by the gyroscope over time, the orientation (yaw) of the robot can be determined. The accuracy of this estimate is often much better than those provided by other means, e.g. angular velocity determined by wheel odometers. It is therefore preferable to use a gyroscope as part of the localization system of the robot.
0267Given a robotic system equipped with one or more cliff sensor and one gyroscope, one example of logic for detecting a pickup situation works as follows. As long as any of the cliff sensors do not trigger, the robot is assumed to be on the surface or ground, that is, not picked-up. This logic uses the fact that in general it is not possible to pick up the robot without triggering all cliff sensors. In the event where all cliff sensors trigger, further evaluation of sensor data is necessary. The robot either moved partly over the edge of a cliff or it might have been picked up. In order to detect in which of the two situations the robot is in, a specific pickup-detection procedure in the robot software is executed.
0268The pickup-detection procedure first stops the robot and then evaluates the angular velocity measurements of the gyroscope. If these measurements indicate that the robot has a rotational velocity close to zero then no pickup is detected. The rationale behind this logic is that when picking up the robot, a user usually causes rotations and other disturbances that result in rotational velocities either far from zero or where the variance of the measured rotational velocity is large.
Results
0269For evaluating our extensions to Vector Field SLAM, we conducted a series of experiments with a developer version of our Mint Cleaner robot [22]. All computations are performed on an ARM7 processor clocked at 44 MHz with 64 Kbyte of RAM. We set the number of nodes to <i>N</i> = 96 which results in a memory size for the localization maps of about 26 kBytes. This is roughly the maximum size we could afford for localization under the tight memory constraints. The processing time for integrating a motion and a sensor measurement is about 50 ms. Localization updates are performed while other control routines are also running on the CPU.
0270We tested our extensions in three different home environments with one to four Northstar beacons. One of the maps obtained by the robot in one of the runs is shown in <figref idref="f0028">Figure 28</figref>. The robot navigated in these homes by following a cleaning strategy based on systematically covering sectors of the environment. As long as at least one beacon is visible to the robot, the strategy moves the robot onto a neighboring region until no space is left to clean. At the end the robot follows along the perimeter of detected obstacles for a thorough cleaning around walls and furniture.
0271As the robot moves through the environment it creates an occupancy grid map using the position information from localization. This is mapping with known poses [1]. Each visited cell is classified into one of the following categories: <ul id="ul0002" list-style="bullet" compact="compact"><li>obstacles the robot bumped into,</li><li>floor changes, detected by two cliff sensors in the front of the robot,</li><li>hazards, where the robot got stuck or had significant problems in driving, and</li><li>free space the robot was able to traverse without a collision.</li></ul><tables id="tabl0001" num="0001"><table frame="topbot"><title>Table 1: Statistics of occupancy and visibility in environments</title><tgroup cols="5" colsep="0"><colspec colnum="1" colname="col1" colwidth="29mm" /><colspec colnum="2" colname="col2" colwidth="17mm" /><colspec colnum="3" colname="col3" colwidth="17mm" /><colspec colnum="4" colname="col4" colwidth="17mm" /><colspec colnum="5" colname="col5" colwidth="17mm" /><thead valign="top"><row><entry /><entry>Mean</entry><entry>Std</entry><entry>Min</entry><entry>Max</entry></row></thead><tbody><row rowsep="0"><entry>Occupied (%)</entry><entry>21.13</entry><entry>4.25</entry><entry>16.56</entry><entry>28.78</entry></row><row rowsep="0"><entry>NS visible (%)</entry><entry>55.64</entry><entry>10.27</entry><entry>42.51</entry><entry>74.33</entry></row><row><entry>NS not visible (%)</entry><entry>23.21</entry><entry>9.71</entry><entry>6.63</entry><entry>37.83</entry></row></tbody></tgroup></table></tables>
0272We also encode the visibility to beacons in the free-space cells. <figref idref="f0028">Figure 28</figref> displays only the cells that were classified as obstacles.
0273We carried out a total of 25 runs in the three environments and we varied the number of beacons. Table 1 shows the statistics of the environments with respect to occupancy and visibility to beacons. On average about 21 % of an environment is occupied by obstacles, floor changes or hazards. From roughly 56 % of visited places at least one beacon was visible (2 brightest levels of blue). The cleaning program continued to navigate in areas not covered by Northstar in about 23 % of the total environment explored.
0274As we do not have ground truth information of the robot poses during the runs, we use the following two metrics for evaluating the performance of our navigation system: <ul id="ul0003" list-style="bullet"><li>Double walls: if the localization of the robot were perfect, the map obtained by the robot would show obstacles and walls exactly once at the correct places. While we do not know the exact positions of walls, we can still verify that each of them is mapped exactly once. Thus by measuring the percentage of walls mapped more than once, we obtain an indication of how well the robot was localized.</li><li>Maximum angular error: similarly as we usually know the global orientation of walls, we can measure the angle of the wall in the map showing the largest deviation from the nominal one.</li></ul><tables id="tabl0002" num="0002"><table frame="topbot"><title>Table 2: Localization statistics of runs</title><tgroup cols="5" colsep="0"><colspec colnum="1" colname="col1" colwidth="40mm" /><colspec colnum="2" colname="col2" colwidth="14mm" /><colspec colnum="3" colname="col3" colwidth="12mm" /><colspec colnum="4" colname="col4" colwidth="12mm" /><colspec colnum="5" colname="col5" colwidth="14mm" /><thead valign="top"><row><entry /><entry>Mean</entry><entry>Std</entry><entry>Min</entry><entry>Max</entry></row></thead><tbody><row rowsep="0"><entry>Double walls (%)</entry><entry>4.15</entry><entry>3.12</entry><entry>0</entry><entry>10.17</entry></row><row rowsep="0"><entry>Max angular error (deg)</entry><entry>9.48</entry><entry>5.23</entry><entry>1.91</entry><entry>23.19</entry></row><row><entry>Number of pause/resume</entry><entry>0.55</entry><entry>1.65</entry><entry>0</entry><entry>7</entry></row></tbody></tgroup></table></tables>
0275Table 2 shows our findings for the 25 runs. On average we obtain about 4 % of wrongly placed walls. In some cases there were none, while in others there can be as much as 10% of additional obstacles. The robot was paused and resumed during some runs as well, because either the user wanted to change the cleaning cloth or the robot got stuck (in some cases as many as 7 times. In either case, the robot was not necessarily started near the location where it was paused.
0276The angular error is, on average, about 9.5° with outliers going as large as 23°. While this seems significant, it does not always lead to a catastrophic failure. Often the map of the environment is bent along its main direction. The robot is still able to successfully navigate from one side of the environment to the other one by changing its orientation along the path according to the learned localization map. Only when trying to close a loop over a longer trajectory with a larger error in rotation, the method is likely to fail.
0277We also evaluated how much of the environment our cleaning algorithm will explore when varying the number of beacons in the environment for one of the testing environments. Recall that the cleaning strategy only moves on as long as any of the beacons stays visible. <figref idref="f0039">Figure 39</figref> shows the area covered as a function of the number of beacons used.
0278As expected, the more beacons there are, the larger the area the robot can explore. Note that when placing four beacons in the environment the robot hits the physical boundaries of the home. If the environment were larger then the robot is likely to move on and cover more space.
0279<figref idref="f0040">Figure 40A</figref> illustrates experimental results for position error in meters. <figref idref="f0040">Fig. 40A</figref> shows the mean position error of the localization approach on the three different map sizes and the two different functions <i>l</i><sub>1</sub> and l<sub>2</sub> for mapping signal values to the orientation-invariant space, while also varying the tracking distance used for a successful localization. The zero tracking distance has a special meaning where as soon as a measurement generated a unique pose estimate no further verification via the EKF was performed. A minimum number of measurements is not enforced since in the experiment, the data contains a continuous stream of about 6 to 7 readings per second and the robot was traveling at an average speed of about 0.25 meter per second. Thus, a required minimum tracking distance also enforces an adequate minimum number of readings.
0280Our results show that when using the <i>l</i><sub>1</sub> mapping function, the initial pose estimate without tracking can be quite off. As soon as we track the pose over a short distance, the accuracy improves. When using the l<sub>2</sub> function, the initial positions are much better. In general, the accuracy improves when tracking the pose over a longer distance, which is what we expected. The position error varies among the different map sizes which is also due to the different mean errors of the learned maps. For the l<sub>2</sub> orientation invariant mapping we achieve an accuracy between 10 and 35 cm depending on map size and required tracking distance.
0281We can also look at the position errors by computing the percentage of position errors falling above a maximum error. As threshold we use 1 meter, the cell size of the vector fields. If the position is off by more than the threshold, a resume of the robot mission can cause a sub-optimal behavior. <figref idref="f0041">Figure 40B</figref> illustrates experimental results for position errors in percentages of errors above 1 meter. Similar to the position errors, the percentages drop quickly when tracking the robot pose over a short distance. Independent of which mapping function is used, the rates converge to similar values after tracking over a longer distance. For the <i>l</i><sub>2</sub> function the rate is between 1 and 4 %.
0282Pose: A pose is a position and orientation in space. In three dimensions, pose can refer to a position (<i>x</i>, <i>y</i>, <i>z</i>) and an orientation (<i>α</i>, <i>β</i>, <i>θ</i>) with respect to the axes of the three-dimensional space. In two dimensions, pose can refer to a position <i>(x, y</i>) in a plane and an orientation <i>θ</i> relative to the normal to the plane.
0283<b>Optical sensor:</b> An optical sensor is a sensor that uses light to detect a condition and describe the condition quantitatively. In general, an optical sensor refers to a sensor that can measure one or more physical characteristics of a light source. Such physical characteristics can include the number of photons, the position of the light on the sensor, the color of the light, and the like.
0284<b>Position-sensitive detector:</b> A position-sensitive detector, also known as a position sensing detector or a PSD, is an optical sensor that can measure the centroid of an incident light source, typically in one or two dimensions. For example, a PSD can convert an incident light spot into relatively continuous position data.
0285<b>Imager:</b> An imager refers to an optical sensor that can measure light on an active area of the sensor and can measure optical signals along at least one axis or dimension. For example, a photo array can be defined as a one-dimensional imager, and a duo-lateral PSD can be defined as a two-dimensional imager.
0286<b>Camera:</b> A camera typically refers to a device including one or more imagers, one or more lenses, and associated support circuitry. Optionally, a camera can also include one or more optical filters and a housing or casing.
0287<b>PSD camera:</b> A PSD camera is a camera that uses a PSD.
0288<b>Projector:</b> A projector refers to an apparatus that projects light. A projector includes an emitter, a power source, and associated support circuitry. A projector can project one or more light spots on a surface.
0289<b>Spot:</b> A spot refers to a projection of light on a surface. A spot can correspond to an entire projection, or can correspond to only part of an entire projection.
0290<b>Optical position sensor:</b> An optical position sensor is a device that includes one or more cameras, a signal processing unit, a power supply, and support circuitry and can estimate its position, distance, angle, or pose relative to one or more spots.
0291Embodiments advantageously use active optical beacons in position estimation. Advantageously, disclosed techniques minimize or reduce the line-of-sight limitation of conventional active optical beacon-based localization by projecting the light sources onto a surface that is observable from a relatively large portion of the environment. It will be understood that the light sources can include sources of light that are not visible to the naked eye, such as, for example, infrared (IR) sources. For example, in an indoor environment, it can be advantageous to project the emitted light from the beacon onto the ceiling. In many indoor environments, the ceiling of a room is observable from most locations with the room.
0292As an illustration, one can consider an application of the method and apparatus for an autonomous mobile robot such as a robotic vacuum cleaner. A common approach to self-docking and self-charging is to place active infrared (IR) beacons on the charging station, which the robot can sense with photo detectors, and use the associated sensory information to find the docking station. This approach suffers from line-of-sight limitations. If the robot and the docking station do not have line-of-sight separation, the robot cannot find its position relative to the docking station.
0293In one embodiment, the IR emitter can advantageously be placed in such a way that it projects onto the ceiling above the docking station, and a robot can have a photo detector that generally faces the ceiling or is capable of observing the ceiling. The robot can advantageously observe the IR projection on the ceiling even in the absence of line-of-sight separation between the robot and the docking station. In relatively many situations, the robot has a line-of-sight view of the ceiling, which enables the robot to detect the IR projection and move to the docking station for self-charging.
0294The method and apparatus described herein include numerous variations that differ in the type and number of active beacons used, differ in the type and number of optical sensors used for detection of reflected light, and differ in the type of signal processing used to determine the pose of an object. Embodiments of the method and apparatus include systems for estimation of the distance of an object relative to another object, estimation of the bearing of an object relative to another object, estimation of the (x, y) position of an object in a two-dimensional plane, estimation of the (x, y, z) position of an object in three-dimensional space, estimation of the position and orientation of an object in two dimensions or in three dimensions, estimation of the linear or angular velocity of an object, and estimation of the linear or angular acceleration of an object.
0295Embodiments of the method and apparatus are related to estimation of the position and orientation of a device, such as a mobile robot, relative to a global or a local coordinate system. The apparatus includes one or more optical sensors, one or more optical emitters, and signal processing circuitry. The initial position and orientations of the sensors can be unknown, and the apparatus and methods can be used to measure or estimate the position and orientation of one or more of the sensors and the position of the emitter projections on a surface.
0296In one embodiment, an optical sensor measures the optical signals generated by the optical emitters that are within the sensor's field of view by measuring the light that is projected onto a surface. By contrast, in a conventional system, such optical devices for distance or position measurement disadvantageously require line-of-sight between the emitter and the sensor. Advantageously, embodiments described herein can detect optical signals projected onto a surface, such as a ceiling of an indoor environment. The optical emitters can be configured to project one or more spots of light onto a surface that is observable by a sensor from a relatively large portion of the environment. The sensor detects the spot and estimates the sensor's position relative to the spot. The sensor can measure quantities such as the position of the spot in the sensor's reference frame and the intensity of the signal generated by the spot, and can associate a unique identifier with each spot. Each such measurement or set of measurements defines a relationship between the position of the sensor and the position of the spot. Using multiple such relationships defined between one or more sensors and one or more spots, signal processing circuitry can estimate the pose of at least one of the sensors, and, optionally, the position of one or more spots.
0297Embodiments of the method and apparatus described herein can vary in the number and type of optical sensors used, can vary in the number and type of optical emitters used, can vary in the projection of the light onto the sensor via, optionally, one or more spots, and can vary in the methods used for estimation of the distance, heading, position, orientation, velocity, angular velocity, acceleration, and angular acceleration of the sensor or sensors. For example, a light spot can be generated by an IR sensor that emits IR light onto a surface, and a photo detector can be used to detect the light reflected from the surface. With one emitter and one sensor, the distance and relative heading to the projected light can be measured. With two emitters and one two-dimensional sensor, the position of the sensor in a plane and the rotation of the sensor around an axis normal to that plane can be measured.
0298Embodiments of the method and apparatus described herein can use a wide variety of optical sensors. Some embodiments use digital or analog imaging or video cameras, such as CMOS imagers, CCD imagers, and the like. Other embodiments use PSDs, such as one-dimensional PSDs, angular one-dimensional PSDs, two-dimensional PSDs, quad PSDs, duo-lateral PSDs, tetra-lateral PSDs, and the like. Other embodiments use photo detectors.
0299In one embodiment, the optical sensor is combined with a lens and one or more optical filters to form a camera. For example, a PSD sensor can be enclosed in a casing with an open side that fits the lens and optical filters to filter incoming light and reduce effects of ambient light.
0300Embodiments of the method and apparatus described herein can also use a wide variety of optical emitters, including visible light devices, invisible light devices, laser light devices, infrared light devices, polarized light devices, light-emitting diodes (LEDs), laser diodes, light bulbs, halogen lights, projectors, and the like.
0301One embodiment of the method and apparatus described herein uses one two-dimensional PSD camera and a plurality of infrared (IR) emitters. Each IR emitter projects a spot onto the ceiling in a room. Each emitter is modulated with a unique pattern or frequency. The PSD camera is mounted, on a robot, for example, and faces the ceiling in such a way that its field of view intersects at least a portion of the plane that defines the ceiling onto which the spots are projected. The PSD camera provides an indication of the projected position of each observable spot in the camera sensor coordinates. In the illustrated embodiment, the position of each observed spot is defined as its centroid.
0302A camera position of each observed spot can correspond to the projection of a spot's position onto the image plane of the camera as defined by a corresponding perspective transformation. The PSD camera can measure the camera position of each spot. Using the measured camera positions of the spot and information related to the distance between the spots, the position (x, y) of the PSD camera in one plane and the rotation (<i>θ</i>) of the PSD camera around an axis normal to that plane can be determined. The position and orientation of the camera defined by (x, y, <i>θ</i>) is known as the pose of the camera.
0303For example, the PSD camera can be coupled to a mobile device such as a robot, and the device's pose can advantageously be relatively accurately determined within a room with two or more spots. Pose estimation, also known as localization, is an important component in many applications, including automated vacuuming, automated floor cleaning, telepresence, security, and entertainment. Without accurate position estimates, it is relatively difficult or impossible for a conventional robot to execute a path or trajectory because the conventional robot's internal position estimate tends to drift, and the conventional robot is generally unable to measure or account for the drift. For systematic floor coverage in a robotic vacuum cleaner, for example, a conventional robot without the ability to localize generally cannot maintain knowledge of the areas it has cleaned and the areas it has not cleaned, and the robot is therefore relatively likely to clean the same areas repeatedly and inefficiently and is relatively unlikely to clean other areas with sufficient frequency. Accordingly, many conventional robotic vacuum cleaners execute a random trajectory. By contrast, a robotic vacuum cleaner according to an embodiment with the ability to localize in a relatively accurate manner can follow a relatively efficient planned path. A robotic vacuum cleaner according to an embodiment can clean a room in a relatively efficient manner because it can track its path and can execute a planned, traversable path. Similarly, a mobile robot with the ability to localize can navigate to a desirable location and maintain a history of paths that it has taken.
0304Another embodiment of the method and apparatus described herein uses one two-dimensional PSD camera and one IR emitter. The IR emitter projects a spot on the ceiling, and the PSD camera faces the ceiling such that its field of view intersects at least a portion of the plane that defines the ceiling onto which the spot is projected. The PSD camera can provide indications for a measurement of the distance from the camera to the spot and the heading from the camera to the spot relative to the tangent of the circle with radius defined by the distance measurement. The distance measurement defines a circle centered at the spot projected onto the plane of the camera. In one example, the illustrated embodiment can be used for an application in which it is desired to position a device relative to the spot. Advantageously, when the camera is underneath the spot on the ceiling, then the camera position is at the center of the PSD camera. For example, if the spot is projected over a charging station, a mobile device can approach the charging station and recharge autonomously. In a related embodiment that further comprises wheel encoders, a robotic vacuum cleaner can move along concentric circles or move along a spiral to implement a floor coverage strategy that is relatively efficient, compared to a random coverage strategy.
0305Examples of embodiments will now be described. <figref idref="f0042">Figure 41</figref> illustrates a block diagram of components of one embodiment of an apparatus. The apparatus includes a projector 4111 and an optical position sensor 4112. The projector 4111 emits a light pattern 4113 onto a surface 4116, which creates a projected light pattern 4119. In one embodiment, the light pattern 4113 is modulated. The reflection 4114 of the projected light pattern 4119 is projected onto the optical position sensor 4112.
0306The projector 4111 includes a light source 4102. By way of example, the light source 4102 can correspond to a device, such as a laser device, an infrared device, and the like, that can be modulated by a modulator 4101. Optionally, the light from the light source 4102 can pass through one or more lenses 4103 to project the light onto the surface 4116.
0307The optical position sensor 4112 includes a camera 4117 and a processing unit 4118. The camera 4117 can detect and measure the intensity and position of the light 4114 reflected from the surface 4116 and can generate corresponding signals that are processed by the signal processing unit 4118 to estimate the position of the optical position sensor 4112 relative to the projected light pattern 4119. It will be understood that the optical position sensor 4112 can include multiple cameras 4117 and/or multiple processing units 4118.
0308The camera 4117 includes an imager 4104. The imager 4104 can, for example, correspond to a CMOS imager, a CCD imager, an infrared imager, and the like. The camera can optionally include an optical filter 4105 and can optionally include a lens 4106. The lens 4106 can correspond to a normal lens or can correspond to a special lens, such as a wide-angle lens, a fish-eye lens, an omni-directional lens, and the like. Further, the lens 4106 can include reflective surfaces, such as planar, parabolic, or conical mirrors, which can be used to provide a relatively large field of view or multiple viewpoints. The lens 4106 collects the reflected light 4114 and projects it onto the imager 4104. The optical filter 4105 can constrain the wavelengths of light that pass from the lens 4106 to the imager 4104, which can advantageously be used to reduce the effect of ambient light, to narrow the range of light to match the wavelength of the light coming from the projector 4111, and/or to limit the amount of light projected onto the imager 4104, which can limit the effects of over-exposure or saturation. The filter 4105 can be placed in front of the lens 4106 or behind the lens 4106. It will be understood that the camera 4117 can include multiple imagers 4104, multiple optical filters 4105, and/or multiple lenses 4106.
0309The signal processing unit 4118 can include analog components and can include digital components for processing the signals generated by the camera 4117. The major components of the signal processing unit 4118 preferably include an amplifier 4107, a filter 4108, an analog-to-digital converter 4109, and a microprocessor 4110, such as a peripheral interface controller, also known as a PIC. It will be understood that the signal processing unit 4118 can include multiple filters 4108 and/or multiple microprocessors 4110.
0310Embodiments of the apparatus are not constrained to the specific implementations of the projector 4111 or the optical position sensor 4112 described herein. Other implementations, embodiments, and modifications of the apparatus that do not depart from the true spirit and scope of the apparatus will be readily apparent to one of ordinary skill in the art.
0311<figref idref="f0043">Figure 42</figref> illustrates an example of a use for the position estimation techniques. An environment includes a ceiling 4206, a floor 4207, and one or more walls 4208. In the illustrated environment, a projector 4203 is attached to a wall 4208. It will be understood that the projector 4203 can have an internal power source, can plug into a wall outlet or both. The projector 4203 projects a first spot 4204 and a second spot 4205 onto the ceiling 4206. An optical position sensor 4202 is attached to a robot 4201. The optical position sensor 202 can detect the spots 4204, 4205 on the ceiling 4206 and measure the position <i>(x, y</i>) of the robot 4201 on the floor plane and the orientation <i>θ</i> of the robot 4201 with respect to the normal to the floor plane. In one embodiment, the pose of the robot 4201 is measured relative to a global coordinate system.
0312<figref idref="f0044">Figure 43</figref> describes a geometrical model associated with one embodiment of the method and apparatus described earlier in connection with <figref idref="f0043">Figure 42</figref>. The ceiling 4206 lies at a height h above the floor 4207. A point <i>w</i><sub>1</sub> 4301 lies at the centroid of the first spot 4204, and a point w<sub>2</sub> 4302 lies at the centroid of the second spot 4205. In the illustrated embodiment, a global coordinate system with an <b><i>X</i></b> axis, a Y axis, and a Z axis is defined and is also referred to as the global reference frame.
0313In one embodiment, it is convenient to define the <i><b>Y</b></i> axis such that the <b><i>Y</i></b> axis is parallel to the vector originating at the point <i>w</i><sub>1</sub> 4301 and passing through the point <i>w</i><sub>2</sub> 4302. Additionally, it is convenient to define the <i><b>X</b></i> axis such that the <i><b>X</b></i> axis is perpendicular to the Y axis and lies in the plane defined by the floor. Further, it is convenient to define the Z axis such that the positive Z direction is specified by the cross product of the unit vector in the <i><b>X</b></i> direction with the unit vector in the <i><b>Y</b></i> direction; in standard vector calculus notation, this relationship is expressed as <b><i>Ẑ</i></b> = <b><i>X̂</i></b> × <b><i>Ŷ</i></b> . Thus, in the illustrated coordinate system, the Z axis is normal to the floor plane and is directed from the floor to the ceiling. In the global coordinate system, an origin <b>O</b> is defined as the point having coordinates (0, 0, 0). Also in the global coordinate system, the point <i>w</i><sub>1</sub> 4301 is defined as having coordinates (x<sub>1</sub>, <i>y<sub>1</sub>, h</i>), and the point w<sub>2</sub> 4302 is defined as having coordinates <i>(x<sub>2</sub>, y<sub>2</sub>, h).</i> Further, it is convenient to assume that the origin <b>O</b> is located directly below the point <i>w</i><sub>1</sub> 4301, so that <i>x</i><sub>1</sub> = 0 and <i>y</i><sub>1</sub> = 0. Additionally, the definition of the <i><b>X</b></i> axis implies that <i>x</i><sub>2</sub> = 0 as well. Thus, the point <i>w</i><sub>1</sub> 4301 has the coordinates (0, 0, <i>h</i>), and the point w<sub>2</sub> 4302 has the coordinates (0, <i>y<sub>2</sub>. h).</i> It will be understood that the aforementioned definitions can be made with no loss of generality.
0314A coordinate system relative to an imager is defined with a <b>u</b> axis, a <b>v</b> axis, and a z axis and can be referred to as the camera coordinate system or the camera reference frame. In the illustrated embodiment, the imager corresponds to a two-dimensional PSD sensor. In one embodiment, the height of the PSD sensor off the floor plane is relatively small compared to the ceiling height h, so the PSD sensor and the origin of the camera coordinate system use the coordinates (<i>x</i>, <i>y</i>, 0) and the orientation <i>θ</i> in the global coordinate system. The displacement from the origin of the global coordinate system to the origin of the camera coordinate system is denoted S; thus, <maths id="math0110"><math display="inline"><mrow><mo>‖</mo><mi>S</mi><mo>‖</mo></mrow><mo>=</mo><msqrt><mrow><msup><mi>x</mi><mn>2</mn></msup><mo>+</mo><msup><mi>y</mi><mn>2</mn></msup></mrow></msqrt></math><img file="EP2776216B1_D0110.tif" /></maths> , where ||<i>S</i>|| denotes the norm, or magnitude, of the vector S. The point <i>c</i><sub>1</sub> 4311 represents the projection of the point <i>w</i><sub>1</sub> 4301 onto the imager, and the point c<sub>2</sub> 4312 represents the projection of the point w<sub>2</sub> 4302 onto the imager. The point <i>c</i><sub>1</sub> 4311 has the coordinates (<i>u</i><sub>1</sub>, <i>v</i><sub>1</sub>, 0) in the camera reference frame, and the point c<sub>2</sub> 4312 has the coordinates (<i>u</i><sub>2</sub>, <i>v</i><sub>2</sub>, 0) in the camera reference frame. It will be understood that the aforementioned definitions can be made with no loss of generality.
0315In one embodiment, the spots 4204, 4205 can be identified using unique signals or unique signatures. For example, the emitters that produce the spots 4204, 4205 can be on-off modulated with different frequencies. The emitter that produces the first spot 4204 can be modulated with a first frequency <i>f</i><sub>1</sub>, and the emitter that produces the second spot 4205 can be modulated with a second frequency f<sub>2</sub>, wherein the first frequency and the second frequency are different; that is <i>f</i><sub>1</sub> ≠ <i>f</i><sub>2</sub>.
0316At this point, it should be noted that the ceiling height h and the separation <i>y</i><sub>2</sub> between the point <i>w</i><sub>1</sub> 4301 and the point w<sub>2</sub> 4302 can be determined in a variety of ways. For example, if the mobile robot 4201 using the optical position sensor is capable of producing wheel odometry estimates, then the robot 4201 can estimate h and <i>y</i><sub>2</sub> using measurements or observations of the points <i>w</i><sub>1</sub> 4301 and w<sub>2</sub> 4302 from multiple positions. Other appropriate techniques will be readily determined by one of ordinary skill in the art.
Exemplary Position Estimation Using the Method and Apparatus
0317With reference to the coordinate systems, distances, angles, and points described earlier in connection with <figref idref="f0044">Figure 43</figref>, the PSD camera can measure <i>c</i><sub>1</sub> and c<sub>2</sub>, which correspond to the projections of <i>w</i><sub>1</sub> and w<sub>2</sub> onto the PSD sensor. In one embodiment, a goal of the method is to determine S, the position of the PSD camera in the global reference frame.
0318In one embodiment, the PSD measures the coordinates of the centroid of the light projected onto the PSD by generating electrical current proportional to the position and intensity of the light centroid. The associated processing can be accomplished in a wide variety of ways, including analog circuitry, digital circuits, hardware, software, firmware, and combinations thereof. For example, a microcontroller, a microprocessor, a CPU, a general-purpose digital signal processor, dedicated hardware, and the like can be used.
0319To measure the centroids of multiple spots, a number of conditions are preferable. First, the sensor preferably does not become saturated with light, ambient or otherwise. In one embodiment, this is accomplished by using optical filters to reduce or minimize unwanted light sources that project onto the active area of the PSD sensor and by biasing the PSD to increase the light level at which it becomes saturated. Second, to measure the position of a particular light source reliably, it is preferable to isolate the light source from other light sources by reducing or eliminating the effect of other light sources, which can include ambient light and light generated by other spots. One approach is to isolate one light source is to modulate the light source with a unique pattern such that it is distinguished from other light sources. If the i-th emitter on-off modulates the projected light with a frequency <i>f<sub>i</sub></i>, the PSD sensor can extract the signal generated by filtering a signal using a band-pass filter with lower and upper frequencies of <i>f<sub>i</sub></i> - w and <i>f<sub>i</sub></i> + <i>w</i>, respectively, where 2w corresponds to the width of the corresponding band-pass filter. The signal processing unit of the PSD can use the filter to suppress signals with frequencies outside the frequency range defined by the band-pass filter. The filtering of the PSD signal can occur either before or after the PSD currents are converted into associated centroid positions. In one embodiment, where the first emitter is modulated at a frequency <i>f</i><sub>1</sub> and the second emitter is modulated at a frequency <i>f<sub>2</sub>,</i> and wherein <i>f</i><sub>1</sub> ≠ <i>f</i><sub>2</sub>, the signal processing unit filters the signal specified by <i>f</i><sub>1</sub> to measure <i>c</i><sub>1</sub>, the centroid of the first spot, and filters the signal specified by f<sub>2</sub> to measure c<sub>2</sub>, the centroid of the second spot.
Exemplary Method for Pose Estimation
0320In one embodiment, the apparatus includes <i>N</i> emitters, which project <i>N</i> light spots, and M cameras. The position of the i-th camera in the global reference frame is denoted herein by <i>S<sub>i</sub></i> = (<i>x<sub>i</sub></i>, <i>y<sub>i</sub></i>, <i>z<sub>i</sub></i>), and the rotational orientation of the i-th camera in the global reference frame is denoted herein by <i>R<sub>i</sub></i> = (<i>α<sub>i</sub></i>, <i>β<sub>i</sub></i>, <i>θ<sub>i</sub></i>). The position of the j-th light spot is denoted herein by w<sub>j</sub>, and the position of the projection of the j-th spot onto the i-th camera is denoted herein by <i>c</i><sub><i>i</i>,<i>j</i></sub>. Then, the following relationship relates <i>S<sub>i</sub></i>, <i>w<sub>j</sub></i>, and <i>c</i><sub><i>i</i>,<i>j</i></sub>. <maths id="math0111" num="Eq. 90"><math display="block"><msub><mi>c</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>=</mo><msub><mi mathvariant="bold-italic">P</mi><mi>i</mi></msub><msub><mi mathvariant="bold-italic">R</mi><mi>i</mi></msub><mfenced><msub><mi>w</mi><mi>j</mi></msub><mo>−</mo><msub><mi>S</mi><mi>i</mi></msub></mfenced></math><img file="EP2776216B1_D0111.tif" /></maths>
0321In Eq. 90, <i><b>R</b><sub>i</sub></i> represents the three-degree-of-freedom rotation transformation, which, in one embodiment, results from the composition of three mutually orthogonal one-degree-of-freedom rotation transformations, such as <i><b>R</b><sub>i</sub></i> = <i><b>R</b><sub>α</sub><b>R</b><sub>β</sub><b>R</b><sub>θ</sub>.</i> Also in Eq. 90, <i><b>P</b><sub>i</sub></i> represents the perspective transformation associated with the i-th camera. Thus, Eq. 90 defines three equations for six unknowns, in which the unknowns are <i>x<sub>i</sub></i>, <i>y<sub>i</sub></i>, <i>z<sub>i</sub></i>, <i>α<sub>i</sub></i>, <i>β<sub>i</sub></i>, and <i>θ<sub>i</sub></i>. In a system with <i>N</i> spots and <i>M</i> cameras, <i>N</i> × <i>M</i> such matrix equations can be formulated, but not all such equations are necessarily unique, independent, and non-degenerate. Thus, with two spots and one camera, values for <i>x</i>, <i>y</i>, and <i>θ</i> can be determined. To determine all six degrees of freedom, it is preferable to have a configuration of spots and cameras that generates at least six independent, non-degenerate equations analogous to Eq. 90.
<u>Exemplary System with Two Emitters and One Camera</u>
0322In one embodiment, the system includes two spots projected onto the ceiling and one optical position sensor with one PSD camera. The relationship between a spot w<sub>j</sub> and its projection <i>c<sub>j</sub></i> in the PSD camera reference frame is given by the following equation. <maths id="math0112" num="Eq. 91"><math display="block"><msub><mi>c</mi><mi>j</mi></msub><mo>=</mo><mi mathvariant="bold-italic">P</mi><msub><mi mathvariant="bold-italic">R</mi><mi>θ</mi></msub><mfenced><msub><mi>w</mi><mi>i</mi></msub><mo>−</mo><mi>S</mi></mfenced></math><img file="EP2776216B1_D0112.tif" /></maths>
0323In Eq. 91, S represents the position of the PSD camera in the global reference frame, and P represents the transformation from a point (<i>X</i>, <i>Y</i>, <i>Z</i>) in the global coordinate system to a point (<i>u</i>, <i>v</i>, <i>z</i>) in the PSD camera reference frame. Also, for the purposes of this example, the z axis of the camera coordinate system is aligned with the Z axis of the global coordinate system in the vertical direction. This implies that <i>R<sub>α</sub></i> and <i>R<sub>β</sub></i> correspond to identity matrices; accordingly, <i><b>R</b><sub>α</sub></i> and <i><b>R</b><sub>β</sub></i> have been omitted from Eq. 91. In the case of a pinhole camera model, P corresponds to the scalar value <i>λ</i> / (<i>λ</i> - <i>Z</i>), where <i>λ</i> represents the focal length of the camera. It will be understood that multiplication by a scalar value can also be achieved by multiplication by the corresponding multiple of the appropriately-dimensioned identity matrix. Also in Eq. 91, <b><i>R</i></b><sub>θ</sub> can be represented by the following unitary matrix. <maths id="math0113" num="Eq. 92"><math display="block"><msub><mi mathvariant="bold-italic">R</mi><mi>θ</mi></msub><mo>=</mo><mfenced><mtable><mtr><mtd><mrow><mi>cos</mi><mi>θ</mi></mrow></mtd><mtd><mrow><mi>sin</mi><mi>θ</mi></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mrow><mo>−</mo><mi>sin</mi><mi>θ</mi></mrow></mtd><mtd><mrow><mi>cos</mi><mi>θ</mi></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced></math><img file="EP2776216B1_D0113.tif" /></maths>
0324Eq. 91 can be re-written as follows. <maths id="math0114" num="Eq. 93"><math display="block"><msub><mi>w</mi><mi>j</mi></msub><mo>−</mo><mi>S</mi><mo>=</mo><msup><msub><mi mathvariant="bold-italic">R</mi><mi>θ</mi></msub><mrow><mo>−</mo><mn>1</mn></mrow></msup><msup><mi mathvariant="bold-italic">P</mi><mrow><mo>−</mo><mn>1</mn></mrow></msup><msub><mi>c</mi><mi>j</mi></msub></math><img file="EP2776216B1_D0114.tif" /></maths>
0325In Eq. 93, <b><i>P</i></b><sup>-1</sup> represents the inverse perspective transformation, and <i><b>R</b><sub>θ</sub></i><sup>-1</sup> represents the inverse rotation transformation. When the position of the i-th spot is associated with appropriate camera parameters, such as the camera focal length in a pinhole camera model, then Eq. 93 defines two non-degenerate equations in three unknowns <i>x</i>, <i>y</i>, and <i>θ</i> for each measurement <i>c<sub>j</sub>.</i> Thus, the three variables,, <i>x</i>, <i>y</i>, and <i>θ</i>, together determine the pose of the PSD camera.
0326Because two equations in three unknowns do not define a unique solution for the pose of the PSD camera, it is preferable to use more independent equations than unknowns. With two spots and one PSD camera, it is possible to generate four equations in three unknowns as follows. <maths id="math0115" num="Eq. 94"><math display="block"><msub><mi>w</mi><mn>1</mn></msub><mo>−</mo><mi>S</mi><mo>=</mo><msup><msub><mi mathvariant="bold-italic">R</mi><mi>θ</mi></msub><mrow><mo>−</mo><mn>1</mn></mrow></msup><msup><mi mathvariant="bold-italic">P</mi><mrow><mo>−</mo><mn>1</mn></mrow></msup><msub><mi>c</mi><mn>1</mn></msub></math><img file="EP2776216B1_D0115.tif" /></maths><maths id="math0116" num="Eq. 95"><math display="block"><msub><mi>w</mi><mn>2</mn></msub><mo>−</mo><mi>S</mi><mo>=</mo><msup><msub><mi mathvariant="bold-italic">R</mi><mi>θ</mi></msub><mrow><mo>−</mo><mn>1</mn></mrow></msup><msup><mi mathvariant="bold-italic">P</mi><mrow><mo>−</mo><mn>1</mn></mrow></msup><msub><mi>c</mi><mn>2</mn></msub></math><img file="EP2776216B1_D0116.tif" /></maths>
0327Eq. 94 relates the spot <i>w</i><sub>1</sub> with its associated PSD camera position <i>c</i><sub>1</sub>, and Eq. 95 relates the spot <i>w</i><sub>2</sub> with its associated PSD camera position c<sub>2</sub>. Subtracting Eq. 94 from Eq. 95 generates the following matrix equation expressed in Eq. 96. <maths id="math0117" num="Eq. 96"><math display="block"><msub><mi>w</mi><mn>2</mn></msub><mo>−</mo><msub><mi>w</mi><mn>1</mn></msub><mo>=</mo><msup><msub><mi mathvariant="bold-italic">R</mi><mi>θ</mi></msub><mrow><mo>−</mo><mn>1</mn></mrow></msup><msup><mi mathvariant="bold-italic">P</mi><mrow><mo>−</mo><mn>1</mn></mrow></msup><mfenced><msub><mi>c</mi><mn>2</mn></msub><mo>−</mo><msub><mi>c</mi><mn>1</mn></msub></mfenced></math><img file="EP2776216B1_D0117.tif" /></maths>
0328Eq. 96 can be expanded as follows. <maths id="math0118" num="Eq. 97"><math display="block"><mfenced><mtable><mtr><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mi mathvariant="italic">Δy</mi></mtd></mtr><mtr><mtd><mn>0</mn></mtd></mtr></mtable></mfenced><mo>=</mo><msup><msub><mi mathvariant="bold-italic">R</mi><mi>θ</mi></msub><mrow><mo>−</mo><mn>1</mn></mrow></msup><msup><mi mathvariant="bold-italic">P</mi><mrow><mo>−</mo><mn>1</mn></mrow></msup><mfenced><mtable><mtr><mtd><mi mathvariant="italic">Δu</mi></mtd></mtr><mtr><mtd><mi mathvariant="italic">Δv</mi></mtd></mtr><mtr><mtd><mn>0</mn></mtd></mtr></mtable></mfenced></math><img file="EP2776216B1_D0118.tif" /></maths>
0329The matrix equation given in Eq. 97 expresses two non-degenerate linear equations. In Eq. 97, Δy <i>= d = y<sub>2</sub></i> - <i>y</i><sub>1</sub>, Δ<i>u</i> = <i>u<sub>2</sub></i> - <i>u</i><sub>1</sub>, and Δ<i>v</i> = <i>v</i><sub>2</sub> - <i>v</i><sub>1</sub>. As discussed earlier in connection with <figref idref="f0044">Figure 43</figref>, d represents the distance that separates the two spots. Accordingly, the first of the two non-degenerate linear equation defined by Eq. 97 is given by the following. <maths id="math0119" num="Eq. 98"><math display="block"><mn>0</mn><mo>=</mo><msup><mi mathvariant="bold-italic">P</mi><mrow><mo>−</mo><mn>1</mn></mrow></msup><mfenced><mi mathvariant="italic">Δu</mi><mspace width="1ex" /><mi>cos</mi><mspace width="1ex" /><mi>θ</mi><mo>−</mo><mi mathvariant="italic">Δν</mi><mspace width="1ex" /><mi>sin</mi><mspace width="1ex" /><mi>θ</mi></mfenced></math><img file="EP2776216B1_D0119.tif" /></maths>
0330Solving for <i>θ</i> in Eq. 98 gives <i>θ</i> = tan<sup>-1</sup> (Δ<i>u</i> / Δ<i>v</i>), and substituting this result into Eq. 94 provides the following solution for S, the position of the PSD camera in the global reference frame. <maths id="math0120" num="Eq. 99"><math display="block"><msub><mrow><mrow><mi>S</mi><mo>=</mo><msub><mi>w</mi><mn>1</mn></msub><mo>−</mo><msup><msub><mi mathvariant="bold-italic">R</mi><mi>θ</mi></msub><mrow><mo>−</mo><mn>1</mn></mrow></msup><msup><mi mathvariant="bold-italic">P</mi><mrow><mo>−</mo><mn>1</mn></mrow></msup><msub><mi>c</mi><mn>1</mn></msub></mrow><mo>|</mo></mrow><mrow><mi>θ</mi><mo>=</mo><msup><mi>tan</mi><mrow><mo>−</mo><mn>1</mn></mrow></msup><mfenced><mi mathvariant="italic">Δu</mi><mo>/</mo><mi mathvariant="italic">Δν</mi></mfenced></mrow></msub></math><img file="EP2776216B1_D0120.tif" /></maths>
0331Accordingly, the pose (<i>x</i>, <i>y</i>, θ) of the PSD camera as a function of the measurements <i>c</i><sub>1</sub> and c<sub>2</sub> can be determined using Eq. 98 and Eq. 99.
An Example of Using One Emitter and One Camera
0332In one embodiment, the system includes one spot projected onto the ceiling and one optical position sensor with one PSD camera. Similar to the relationship discussed earlier in connection with Eq. 91, the relationship between the spot w and its projection c in the PSD camera reference frame is given by the following equation. <maths id="math0121" num="Eq. 100"><math display="block"><mi>c</mi><mo>=</mo><mi mathvariant="bold-italic">P</mi><msub><mi mathvariant="bold-italic">R</mi><mi>θ</mi></msub><mfenced><mi>w</mi><mo>−</mo><mi>S</mi></mfenced></math><img file="EP2776216B1_D0121.tif" /></maths>
0333Because the origin of the global coordinate system can be chosen, without loss of generality, such that the spot w is located directly above the origin, rearranging Eq. 100 provides the following solution for S. <maths id="math0122" num="Eq. 101"><math display="block"><mi>w</mi><mo>−</mo><mi>S</mi><mo>=</mo><msup><msub><mi mathvariant="bold-italic">R</mi><mi>θ</mi></msub><mrow><mo>−</mo><mn>1</mn></mrow></msup><msup><mi mathvariant="bold-italic">P</mi><mrow><mo>−</mo><mn>1</mn></mrow></msup><mi>c</mi></math><img file="EP2776216B1_D0122.tif" /></maths>
0334Eq. 101 can be rewritten in coordinate notation to give the following relationship. <maths id="math0123" num="Eq. 102"><math display="block"><mfenced><mtable><mtr><mtd><mrow><mo>−</mo><mi>x</mi></mrow></mtd></mtr><mtr><mtd><mrow><mo>−</mo><mi>y</mi></mrow></mtd></mtr><mtr><mtd><mi>z</mi></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced><mtable><mtr><mtd><mrow><mi>cos</mi><mi>θ</mi></mrow></mtd><mtd><mrow><mo>−</mo><mi>sin</mi><mi>θ</mi></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mrow><mi>sin</mi><mi>θ</mi></mrow></mtd><mtd><mrow><mi>cos</mi><mi>θ</mi></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><msup><mi mathvariant="bold-italic">P</mi><mrow><mo>−</mo><mn>1</mn></mrow></msup><mfenced><mtable><mtr><mtd><mi>u</mi></mtd></mtr><mtr><mtd><mi>ν</mi></mtd></mtr><mtr><mtd><mn>0</mn></mtd></mtr></mtable></mfenced></math><img file="EP2776216B1_D0123.tif" /></maths>
0335Thus, Eq. 102 specifies two non-degenerate linear equations. In the case that <b><i>P</i></b><sup>-1</sup> corresponds to a scalar or to a scalar multiple of an identity matrix, squaring and summing the two non-degenerate linear equations and simplifying the result yields the following. <maths id="math0124" num="Eq. 103"><math display="block"><msup><mi>x</mi><mn>2</mn></msup><mo>+</mo><msup><mi>y</mi><mn>2</mn></msup><mo>=</mo><msup><mfenced><msup><mi mathvariant="bold-italic">P</mi><mrow><mo>−</mo><mn>1</mn></mrow></msup></mfenced><mn>2</mn></msup><mfenced open="[" close="]"><msup><mfenced><mi>u</mi><mspace width="1ex" /><mi>cos</mi><mspace width="1ex" /><mi>θ</mi><mo>−</mo><mi>ν</mi><mspace width="1ex" /><mi>sin</mi><mspace width="1ex" /><mi>θ</mi></mfenced><mn>2</mn></msup><mo>+</mo><msup><mfenced><mi>u</mi><mspace width="1ex" /><mi>sin</mi><mspace width="1ex" /><mi>θ</mi><mo>+</mo><mi>ν</mi><mspace width="1ex" /><mi>cos</mi><mspace width="1ex" /><mi>θ</mi></mfenced><mn>2</mn></msup></mfenced><mo>=</mo><msup><mfenced><msup><mi mathvariant="bold-italic">P</mi><mrow><mo>−</mo><mn>1</mn></mrow></msup></mfenced><mn>2</mn></msup><mfenced><msup><mi>u</mi><mn>2</mn></msup><mo>+</mo><msup><mi>ν</mi><mn>2</mn></msup></mfenced></math><img file="EP2776216B1_D0124.tif" /></maths>
0336Because <i>x<sup>2</sup></i> + <i>y<sup>2</sup></i> is equal to ||<i>S</i>||<sup>2</sup> and <i>u<sup>2</sup></i> + <i>v<sup>2</sup></i> is equal ||<i>c</i>||<sup>2</sup>, Eq. 103 can be simplified to ||<u>S</u>||<sup>2</sup> = (<b><i>P</i></b><sup>-1</sup>)<sup>2</sup>||<i>c</i>||<sup>2</sup>, or ||<i>S</i>||= <b><i>P</i></b><sup>-1</sup>||<i>c</i>||.
0337Thus, the distance measurement ||<i>c</i>||, and the corresponding distance measurement ||<i>S</i>||, can define a circle in an x-y plane centered at the origin (0, 0) with radius ||<i>S</i>||. A tangent to the circle at the position of the sensor at the position of the sensor (that is, at <i>S</i>), is orthogonal to the vector s = <i>(x y</i>)<i><sup>T</sup></i>, where the superscripted "<i>T</i>" denotes the vector or matrix transposition operation. The tangent <i>ŝ</i> can therefore be expressed as <i>ŝ</i> = <i>(y -x)<sup>T</sup>.</i> The rotational orientation, <i>φ</i>, of the robot of the robot with respect to scan then be estimated using a measurement of c as given in the following relationship. <maths id="math0125" num="Eq. 104"><math display="block"><mi>φ</mi><mo>=</mo><msup><mi>tan</mi><mrow><mo>−</mo><mn>1</mn></mrow></msup><mfenced><mi>u</mi><mo>/</mo><mi>ν</mi></mfenced></math><img file="EP2776216B1_D0125.tif" /></maths>
0338Thus, in this embodiment, ||<i>S</i>|| and <i>φ</i> can be determined, which can advantageously support applications for robotics, person tracking, object tracking, and the like. In one example, the spot is projected onto the ceiling directly above a docking station, and the optical position sensor with one PSD camera is attached to a robot. Using the estimation of ||<i>S</i>||and <i>φ</i>, the robot can guide itself to turn toward the spot and approach the spot. In this manner, the robot can approach the docking station and recharge itself. In an alternative example, the projector can correspond to a handheld projector and can be used to point above a user-selected object or location of interest to guide to the robot to the object or location. This alternative example provides a powerful interface for robot interaction.
Examples of Other Embodiments of the Invention
0339One embodiment of the method and apparatus includes a camera, such as a CCD camera, a CMOS camera, and the like, and a projector that generates a pattern on a projection surface, such as a ceiling. It will be understood that this embodiment can include multiple cameras and/or multiple projectors. By way of example, the projector can correspond to a slide projector, and the pattern can be encoded in a slide. In one embodiment, at least one pattern has the shape of a circle, and in another embodiment, at least one pattern has the shape of a square. Each camera generates grayscale or color images. A signal processing unit processes the camera images, extracts the unique patterns, and estimates a position of the pattern in camera sensor coordinates. The position of the pattern can be defined as the centroid of the pattern. The position of the j-th pattern in the global reference frame can be denoted herein by w<sub>j</sub>, and the position of the j-th pattern in the reference frame of the i-th camera can be denoted herein by <i>c</i><sub><i>i</i>,<i>j</i></sub>. Then, the relationship between the j-th pattern and its projection onto the i-th camera is defined by Eq. 90. The signal processing unit captures the camera images and processes the images using one or more image analysis techniques to detect and extract the position of known patterns. The image analysis techniques can include, by way of example, line and corner detection (to detect a square pattern, for example), Hough transform (to detect a circle, for example), and the like. After the positions of the patterns in the camera reference frames are determined, the signal processing unit can estimate the positions of the cameras with respect to the global reference frame using the methods described previously. Optionally, one or more of the projectors can modulate on-off to reduce the effects of ambient light. The modulation frequencies can advantageously be used to associate a unique identifier with each pattern. In one embodiment, the identifier of a pattern is advantageously encoded within the pattern itself. As an example, the shape of the pattern can define a unique identifier, if distinct shapes are used for each pattern. For example, the system can distinguish between a square pattern and a circular pattern and associate different identifiers with each pattern.
0340In one embodiment, the modulation frequency of the projector can encode information, such as bit patterns to transmit a message that can be detected and extracted by the camera and the signal processing unit. The bit patterns can be modulated in the signal using any of a variety of common modulation techniques, such as pulse width modulation, space width modulation, and phase modulation.
0341In another embodiment, the bit patterns are modulated on top of the original "carrier" frequency of the spot. The projectors and optical position sensors can advantageously be used for optical wireless communication. In this embodiment, the projector projects the light pattern on a reflecting surface, and the optical sensor detects the signal by viewing the reflecting surface, which eliminates the need for line-of-sight between the emitter and the sensor. The signal modulated in the projected light can carry commands, such as commands for a robot, similar to the way in which light modulated by a remote control unit can carry commands to an appliance. In one example, the projection of the spot on the ceiling directly above a docking station enables the robot to find the docking station and perform self-charging. In addition, an interface with the docking station, such as a button on the docking station, can generate a command to the robot to return to the charging station.
0342Yet another embodiment of the method and apparatus includes a projector for one or more distinct regions of an environment, such as a projector for each distinct region. Advantageously, this embodiment expands the coverage of localization throughout relatively large areas or throughout multiple relatively confined areas, such as multiple rooms. The covered area associated with one projector can be constrained by the field of view of the camera, the distance from the projector to the reflection surface, and the presence of objects and walls that obstruct the camera's view of the spot. Increasing the number of light patterns can increase the coverage area. In one embodiment, for coverage across multiple rooms, one or more projectors are provided for each room in which coverage is desired, so that, for example, each room can have a dedicated projector. For example, each projector can project one or more spots that have an identifier that is unique within the room. It will be understood that the identifier associated with a spot can be based on the spot's modulation frequency, the spot's shape, the spot's color, or another appropriate characteristic that can be detected by the camera sensor.
0343In one implementation, the combination of the individual spot identifiers with a room can define a unique identifier for the room. By way of example, a first room can have two spots having associated unique identifiers "A" and "B," and a second room can have two spots having associated unique identifiers "A" and "C." The unique identifiers for each room can advantageously be used by a system, such as by a robot, to build a topological map of the rooms and the connectivity of the rooms. Without a unique identifier for each room or region, the system can disadvantageously generate ambiguous position information. As an illustration, without a unique identifier for each room, the position associated with an <i>(x, y</i>) coordinate of a first room can generally not be distinguished from the position associated with the <i>(x, y</i>) coordinate of a second room.
0344While certain embodiments may be illustrated or discussed as having certain example components, additional, fewer, or different components may be used. Further, with respect to the processes discussed herein, various states may be performed in a different order, not all states are required to be reached, and fewer, additional, or different states may be utilized.
0345Various embodiments have been described above. Although described with reference to these specific embodiments, the descriptions are intended to be illustrative and are not intended to be limiting. Various modifications and applications may occur to those skilled in the art.
0346The references below may be of assistance in understanding the described subject matter. Applicants do not concede that any of the following are prior art to the present application. <ol id="ol0002" compact="compact"><li>[1] <nplcit id="ncit0002" npl-type="b"><text>S. Thrun, W. Burgard, and D. Fox, Probabilistic Robotics. Cambridge, MA: MIT Press, 2005</text></nplcit>.</li><li>[2] <nplcit id="ncit0003" npl-type="s"><text>W. Burgard, A. Cremers, D. Fox, G. Lakemeyer, D. Hahnel, D. Schulz, W. Steiner, and S. Thrun, "The interactive museum tour-guide robot," in Proc. 15th National Conference on Artificial Intelligence (AAAI'98), 1998</text></nplcit>.</li><li>[3] <nplcit id="ncit0004" npl-type="s"><text>W. Jeong and K. Lee, "CV-SLAM: A new ceiling vision-based SLAM technique," in Int. Conference on Intelligent Robots and Systems (IROS), 2005</text></nplcit>.</li><li>[4] <nplcit id="ncit0005" npl-type="s"><text>K. Konolige, J. Augenbraun, N. Donaldson, C. Fiebig, and P. Shah, "A low-cost laser distance sensor," in Int. Conference on Robotics and Automation (ICRA), 2008</text></nplcit>.</li><li>[5]<nplcit id="ncit0006" npl-type="s"><text> K. Konolige, G. Grisetti, R. Kummerle, W. Burgard, B. Limketkai, and R. Vincent, "Sparse pose adjustment for 2D mapping," in Int. Conference on Intelligent Robots and Systems (IROS), 2010</text></nplcit>.</li><li>[6] <nplcit id="ncit0007" npl-type="b"><text>J. Borenstein, J. Everett, and L. Feng, Navigating Mobile Robots: Systems and Techniques. Wellesley, MA: A.K. Peters, Ltd., 1996</text></nplcit>.</li><li>[7]<nplcit id="ncit0008" npl-type="s"><text> Y. Cui and S. Ge, "Autonomous vehicle positioning with GPS in urban canyon environments," IEEE Transaction on Robotics and Automation, vol. 19, no. 1, 2003</text></nplcit>.</li><li>[8] <nplcit id="ncit0009" npl-type="s"><text>F. Gustafsson and F. Gunnarsson, "Mobile positioning using wireless networks," IEEE Signal Processing Magazine, pp. 41-53, Jul. 2005</text></nplcit>.</li><li>[9] <nplcit id="ncit0010" npl-type="s"><text>A. Varshavsky, E. de Lara, J. Hightower, A. LaMarca, and V. Otsason, "GSM indoor localization," Pervasive and Mobile Computing, vol. 3, 2007</text></nplcit>.</li><li>[10] <nplcit id="ncit0011" npl-type="s"><text>M. Ocaña, L. Bergasa, M. Sotelo, R. Flores, D. Llorca, and D. Schleicher, "Automatic training method applied to WiFi+ultrasound POMDP navigation system," Robotica, vol. 27, pp. 1049-1061, 2009</text></nplcit>.</li><li>[11] <nplcit id="ncit0012" npl-type="s"><text>B. Ferris, D. Fox, and N. Lawrence, "WiFi-SLAM using Gaussian process latent variable models," in Int. Joint Conference on Artificial Intelligence (IJCAI),2007</text></nplcit>.</li><li>[12] <nplcit id="ncit0013" npl-type="s"><text>J.-S. Gutmann, G. Brisson, E. Eade, P. Fong, and M. Munich, "Vector Field SLAM," in Int. Con! on Robotics and Automation (ICRA), 2010</text></nplcit>.</li><li>[13] <nplcit id="ncit0014" npl-type="s"><text>J.-S. Gutmann, E. Eade, P. Fong, and M. Munich, "A constant-time algorithm for Vector Field SLAM using an exactly sparse extended information filter," in Robotics: Science and Systems (RSS), 2010</text></nplcit>.</li><li>[14] <nplcit id="ncit0015" npl-type="s"><text>M. R. Walter, R. M. Eustice, and J. J. Leonard, "Exactly sparse extended information filters for feature-based SLAM," International Journal of Robotics Research, vol. 26, no. 4, pp. 335-359, 2007</text></nplcit>.</li><li>[15] <nplcit id="ncit0016" npl-type="s"><text>M. Bosse, P. Newman, J. Leonard, and S. Teller, "SLAM in Large-scale Cyclic Environments using the Atlas Framework." The International Journal of Robotics Research, vol. 23, no. 12, pp. 1113-1139, 2004</text></nplcit>.</li><li>[16] <nplcit id="ncit0017" npl-type="s"><text>J. Leonard and H. Feder, "Decoupled stochastic mapping," Journal of Oceanic Engineering, vol. 26, no. 4, pp. 561-571, 2001</text></nplcit>.</li><li>[17]<nplcit id="ncit0018" npl-type="s"><text> T. Bailey, J. Nieto, J. Guivant, M. Stevens, and E. Nebot, "Consistency of the EKF-SLAM algorithm," in Int. Conference on Intelligent Robots and Systems (IROS), 2006</text></nplcit>.</li><li>[18] <patcit id="pcit0006" dnum="US20090171504A1" dnum-type="L"><text>S. Hyung, J. Kim, J. Lee, J. Park, H. Shim, and K. Lee, "Method and apparatus for detecting movement error in mobile robot," U.S. Patent Application US 2009/0 171 504 A1, Jul. 2, 2009</text></patcit>.</li><li>[19] <nplcit id="ncit0019" npl-type="s"><text>J. Neira, L. Tardós, and J. Castellanos, "Linear time vehicle relocation in SLAM," in Int. Conference on Robotics and Automation (ICRA), Taipei, Taiwan, 2003</text></nplcit>.</li><li>[20] <nplcit id="ncit0020" npl-type="s"><text>K. Arras, J. Castellanos, M. Schilt, and R. Siegwart, "Feature-based multi-hypothesis localization and tracking using geometric constraints," Robotics and Autonomous Systems, vol. 44, pp. 41-53, 2003</text></nplcit>.</li><li>[21]<nplcit id="ncit0021" npl-type="s"><text> Y. Yamamoto, P. Prijanian, J. Brown, M. Munich, E. D. Bernardo, L. Goncalves, J. Ostrowski, and N. Karlsson, "Optical sensing for robot perception and localization," in Proc. Workshop on Advanced Robotics and its Social Impacts (ARSO), 2005</text></nplcit>.</li><li>[22] <nplcit id="ncit0022" npl-type="b"><text>Evolution Robotics Inc. (2011) Introducing Mint - the evolution of floor care, www.mint-cleaner.com. [Online]. Available: http://www.mint-cleaner.com</text></nplcit></li></ol>
Contents4
86 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19 Sheet 20 Sheet 21 Sheet 22 Sheet 23 Sheet 24 Sheet 25 Sheet 26 Sheet 27 Sheet 28 Sheet 29 Sheet 30 Sheet 31 Sheet 32 Sheet 33 Sheet 34 Sheet 35 Sheet 36 Sheet 37 Sheet 38 Sheet 39 Sheet 40 Sheet 41 Sheet 42 Sheet 43 Sheet 44 Sheet 45 Sheet 46 Sheet 47 Sheet 48 Sheet 49 Sheet 50 Sheet 51 Sheet 52 Sheet 53 Sheet 54 Sheet 55 Sheet 56 Sheet 57 Sheet 58 Sheet 59 Sheet 60 Sheet 61 Sheet 62 Sheet 63 Sheet 64 Sheet 65 Sheet 66 Sheet 67 Sheet 68 Sheet 69 Sheet 70 Sheet 71 Sheet 72 Sheet 73 Sheet 74 Sheet 75 Sheet 76 Sheet 77 Sheet 78 Sheet 79 Sheet 80 Sheet 81 Sheet 82 Sheet 83 Sheet 84 Sheet 85 Sheet 86
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US2024208058A1 | Cited by | United States of America | Search report |
| US2005213082A1 | Cites | United States of America | – |
| US2006064202A1 | Cites | United States of America | – |
| US2007042716A1 | Cites | United States of America | – |
| US2008065267A1 | Cites | United States of America | – |
| US2009177323A1 | Cites | United States of America | – |
| US2010070078A1 | Cites | United States of America | – |
| US2011125323A1 | Cites | United States of America | – |
| US2011208357A1 | Cites | United States of America | – |
43 members in 8 offices
Members43
| Document | Office | Kind | |
|---|---|---|---|
| FR2479692A1 | France | A1 | |
| NL8101616A | Netherlands (Kingdom of the) | A | |
| JPS56151052A | Japan | A | |
| DE3112916A1 | Germany | A1 | |
| CA1160529A | Canada | A | |
| FR2479692B1 | France | B1 | |
| US4692147A | United States of America | A | |
| JPH0258453U | Japan | U | |
| DE3112916C2 | Germany | C2 | |
| US2005211880A1 | United States of America | A1 | |
| US2005212929A1 | United States of America | A1 | |
| US2005213082A1 | United States of America | A1 | |
| US2005213109A1 | United States of America | A1 | |
| WO2005098475A1 | World Intellectual Property Organization (WIPO) | A1 | |
| WO2005098476A1 | World Intellectual Property Organization (WIPO) | A1 | |
| US7148458B2 | United States of America | B2 | |
| DE112005000738T5 | Germany | T5 | |
| JP2007530978A | Japan | A | |
| US7535071B2 | United States of America | B2 | |
| US7720554B2 | United States of America | B2 | |
| US2010228421A1 | United States of America | A1 | |
| US2011125323A1 | United States of America | A1 | |
| US7996097B2 | United States of America | B2 | |
| US2012022785A1 | United States of America | A1 | |
| US8295955B2 | United States of America | B2 | |
| WO2013071190A1 | World Intellectual Property Organization (WIPO) | A1 | |
| US2013138246A1 | United States of America | A1 | |
| US2013138247A1 | United States of America | A1 | |
| US2013245937A1 | United States of America | A1 | |
| US2014031980A1 | United States of America | A1 | |
| US8780342B2 | United States of America | B2 | |
| EP2776216A1 | European Patent Office (EPO) | A1 | |
| US2014268179A1 | United States of America | A1 | |
| US8930023B2 | United States of America | B2 | |
| US2015197011A1 | United States of America | A1 | |
| EP2776216A4 | European Patent Office (EPO) | A4 | |
| US9250081B2 | United States of America | B2 | |
| US9360300B2 | United States of America | B2 | |
| US9440354B2 | United States of America | B2 | |
| US9534899B2 | United States of America | B2 | |
| US2017050318A1 | United States of America | A1 | |
| US9623557B2 | United States of America | B2 | |
| EP2776216B1This record | European Patent Office (EPO) | B1 |
80 legal events, as 9 offices reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | Office | |
|---|---|---|---|
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| No opposition filedOpposition26N | 26N | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed because of non-payment of the annual feeLapsedMM | MM | BE | |
| No opposition filed within time limitOppositionORIGINAL CODE: 0009261PLBE | PLBE | EP | |
| Information on the status of an ep patent application or granted ep patentGrantedSTATUS: NO OPPOSITION FILED WITHIN TIME LIMITSTAA | STAA | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Patent ceasedCeasedPL | PL | CH | |
| No opposition filed against granted patent, or epo opposition proceedings concluded without decisionGrantedR097 | R097 | DE | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Deletion acc. to par. 5 (withdrawal of the translation of the ep patent)MK05 | MK05 | AT | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Patent invalid in the netherlands as no translation has been filedMP | MP | NL | |
| Invalidation of extension of european patentsMG9D | MG9D | LT | |
| European patents granted designating irelandGrantedFG4D | FG4D | IE | |
| Dpma publication of mentioned ep patent grantGrantedR096 | R096 | DE | |
| Reference to at number (ep patent validated in austria)REF | REF | AT | |
| Designated contracting statesAK | AK | EP | |
| European patent takes effect as a national patent in ch/liEP | EP | CH | |
| European patent grantedGrantedFG4D | FG4D | GB | |
| (expected) grantORIGINAL CODE: 0009210GRAA | GRAA | EP | |
| Information on the status of an ep patent application or granted ep patentGrantedSTATUS: THE PATENT HAS BEEN GRANTEDSTAA | STAA | EP | |
| Intention to grant announcedINTG | INTG | EP | |
| Intention to grant announced (deleted)INTC | INTC | EP | |
| Despatch of communication of intention to grant a patentORIGINAL CODE: EPIDOSNIGR1GRAP | GRAP | EP | |
| Grant fee paidORIGINAL CODE: EPIDOSNIGR3GRAS | GRAS | EP | |
| Information on the status of an ep patent application or granted ep patentGrantedSTATUS: GRANT OF PATENT IS INTENDEDSTAA | STAA | EP | |
| Information related to disapproval of communication of intention to grant by the applicant or resumption of examination proceedings by the epo deletedORIGINAL CODE: EPIDOSDIGR1GRAJ | GRAJ | EP | |
| Information on the status of an ep patent application or granted ep patentGrantedSTATUS: EXAMINATION IS IN PROGRESSSTAA | STAA | EP | |
| Intention to grant announcedINTG | INTG | EP | |
| Despatch of communication of intention to grant a patentORIGINAL CODE: EPIDOSNIGR1GRAP | GRAP | EP | |
| Information on the status of an ep patent application or granted ep patentGrantedSTATUS: GRANT OF PATENT IS INTENDEDSTAA | STAA | EP | |
| First examination report despatched17Q | 17Q | EP | |
| Information on the status of an ep patent application or granted ep patentGrantedSTATUS: EXAMINATION IS IN PROGRESSSTAA | STAA | EP | |
| Supplementary search report drawn up and despatched (corrected)RA4 | RA4 | EP | |
| Information provided on ipc code assigned before grantRIC1 | RIC1 | EP | |
| Information provided on ipc code assigned before grantRIC1 | RIC1 | EP | |
| Information provided on ipc code assigned before grantRIC1 | RIC1 | EP | |
| Information provided on ipc code assigned before grantRIC1 | RIC1 | EP | |
| Information provided on ipc code assigned before grantRIC1 | RIC1 | EP | |
| Information provided on ipc code assigned before grantRIC1 | RIC1 | EP | |
| Request for extension of the european patent (deleted)DAX | DAX | EP | |
| Party data changed (applicant data changed or rights of an application transferred)RAP1 | RAP1 | EP | |
| Request for examination filed17P | 17P | EP | |
| Designated contracting statesAK | AK | EP | |
| Public reference made under article 153(3) epc to a published international application that has entered the european phaseORIGINAL CODE: 0009012PUAI | PUAI | EP |
Numbers
- Publication
- 2776216
- Application
- 128482734
Titles3
- German
- ROBOTERVORRICHTUNG UND STEUERVERFAHREN ZUR WIEDERAUFNAHME DES BETRIEBS NACH EINER UNTERBRECHUNG.
- English
- ROBOT APPARAUTUS AND CONTROL METHOD FOR RESUMING OPERATION FOLLOWING A PAUSE.
- French
- APPAREIL ROBOT ET MÉTHODE DE COMMANDE POUR REPRENDRE LE FONCTIONNEMENT APRÈS UNE PAUSE.
Classification
- CPC, 9
- G05D1/0234
- G01C21/12
- G05D1/0272
- G05D1/0274
- G05D1/028
- Y10S901/01
- Y10S901/47
- G05D1/0231
- G01S17/06
- IPC, 3
- B25J9 16
- B25J13 08
- G05D1 02
Designated states38
- Contracting states, 38
- Albania
- Austria
- Belgium
- Bulgaria
- Switzerland
- Cyprus
- Czechia
- Germany
- Denmark
- Estonia
- Spain
- Finland
- France
- United Kingdom
- Greece
- Croatia
- Hungary
- Ireland
- Iceland
- Italy
- Liechtenstein
- Lithuania
- Luxembourg
- Latvia
and 14 moreShow fewer
- Monaco
- North Macedonia
- Malta
- Netherlands (Kingdom of the)
- Norway
- Poland
- Portugal
- Romania
- Serbia
- Sweden
- Slovenia
- Slovakia
- San Marino
- Türkiye
