Paper deep dive
BatSLAM 2.0: Sequence-Verified Sonar Place Recognition in a Robust Pose Graph
Jan Steckel
Intelligence
Status: not_run | Model: - | Prompt: - | Confidence: 0%
Entities (0)
Relation Signals (0)
No relation signals yet.
Cypher Suggestions (0)
No Cypher suggestions yet.
Abstract
Abstract:Echolocating bats can navigate dark and cluttered spaces using echolocation. Over a decade ago, BatSLAM showed that a robot with a biomimetic binaural sonar can build a topological map of the environment, by recognizing places from the received acoustic signals. Sonar place recognition, however, is ambiguous by nature: corridors produce nearly identical echo trains, and wrong loop closure can collapse the topological map. In this paper, we introduce BatSLAM 2.0, a novel sonar-only SLAM system built from three elements: an updated acoustic front-end, a sequence verifier that tracks and verifies loop closure candidates and a pose graph implemented on a high performance factor graph framework. The system was thoroughly evaluated both in simulated as well as real world recordings. In both cases, the BatSLAM2.0 algorithm shows the capability of robust topological map creation, countering map collapse, and robust scaling of map size.
Tags
Links
- Source: https://arxiv.org/abs/2609.40085v1
- Canonical: https://arxiv.org/abs/2609.40085v1
Trouble viewing inline? Open PDF directly →
Full Text
86,775 characters extracted from source content.
Expand or collapse full text
BatSLAM 2.0: Sequence-Verified Sonar Place Recognition in a Robust Pose Graph Jan Steckel †thanks: J. Steckel is with Cosys-Lab, Faculty of Applied Engineering, University of Antwerp, 2020 Antwerp, Belgium, and also with Flanders Make Strategic Research Centre, 3920 Lommel, Belgium (e-mail: jan.steckel@uantwerpen.be). Abstract Echolocating bats can navigate dark and cluttered spaces using echolocation. Over a decade ago, BatSLAM showed that a robot with a biomimetic binaural sonar can build a topological map of the environment, by recognizing places from the received acoustic signals. Sonar place recognition, however, is ambiguous by nature: corridors produce nearly identical echo trains, and wrong loop closure can collapse the topological map. In this paper, we introduce BatSLAM 2.0, a novel sonar-only SLAM system built from three elements: an updated acoustic front-end, a sequence verifier that tracks and verifies loop closure candidates and a pose graph implemented on a high performance factor graph framework. The system was thoroughly evaluated both in simulated as well as real world recordings. In both cases, the BatSLAM2.0 algorithm shows the capability of robust topological map creation, countering map collapse, and robust scaling of map size. Index Terms: Sonar, biomimetics, SLAM, place recognition, loop closure, pose graph. I Introduction Bats are the prime example of an animal that navigates using sound alone. Indeed, echolocating bats find their way through caves, forests and buildings using the echoes of their own calls, often in complete darkness and at high speeds [1, 2]. From an engineering perspective, this ability is more than a biological curiosity as acoustic sensing keeps working in exactly those conditions in which optical sensors such as cameras and lidar sensors struggle (darkness, smoke, dust, fog and transparent or reflective surfaces). Furthermore, ultrasonic sensors themselves are cheap, small and robust and can perform high resolution imaging on complex environments [3, 4]. Early work on sonar-based mapping modeled the environment as a set of geometric primitives (e.g. planes, edges and cilinders), which were tracked in an extended Kalman filter [5, 6]. This approach requires reliable extraction of such primitives from sparse and noisy range readings, which is not always possible in real-world scenarios. In our earlier work we implemented a biologically inspired SLAM system called BatSLAM [7]. In this algorithm we combined a biomimetic binaural sonar (where the receivers replicated the outer ears of a bat), with a topological model called RatSLAM. This RatSLAM model is a biologically inspired SLAM system based on a model of the rodent hippocampus [8, 9] that creates topological maps of the environment that simultaneously has geometrically valid properties. Instead of extracting landmarks from the received signals, BatSLAM used the complete binaural cochleogram of each echo train as a local view, and recognized robot poses by comparing these views with a database of templates. Later work confirmed that bat-like sonar views indeed carry enough information to recognize real-world complex places [10]. The weak point of such an approach, however, is ambiguity. Many places produce similar local view templates (ie, similar echo trains received by the sonar sensor). A typical example is the two parallel corridors with plain walls that produce nearly constant echo trains irrespective of the position of the robot in that corridor. This can cause false place matches to be injected into the map with full confidence, that subsequently pulls geometrically distinct places onto each other. In the SLAM literature, this failure mode is called map collapse, and it is one of the main reasons why loop closure is typically treated as the most dangerous step in the SLAM pipeline [11, 12]. Typically, two families of techniques are used against false loop closures. On the one hand, the front-end can demand temporal consistency, and compare sequences of views rather than single views, as in SeqSLAM [13]. On the other hand, the back-end can treat loop closures as potentially being outliers (i.e. false loop closures), using robust cost functions, switchable constraints [14], dynamic covariance scaling [15], max-mixtures [16], clustering and consistency checks [17, 18] or graduated non-convexity methods [19]. Both families were developed mostly for SLAM systems relying on vision and lidar, but could fundamentally be applied to other modalities such as in-air sonar. The question of how well they carry over to the much more ambiguous sonar views has, to the best of our knowledge, not been answered so far. In this paper, we introduce BatSLAM 2.0, a novel sonar-only SLAM system that revisits the original BatSLAM idea with a modern and robust SLAM back-end. The system replaces the pose cells and the experience map of BatSLAM with a factor-graph pose graph solved with iSAM2 [20] in GTSAM [21], and it keeps local view templates that are anchored to pose-graph nodes, so that each template has a position and an orientation that move with the optimized pose graph. Around this core, we contribute four elements. Firstly, an acoustic front-end that adds an explicit direction cue to the cochleogram: the spectral shape of each echo, which carries the directivity of the ears and the emitter, is separated from the echo magnitude, to more explicitly encode the direction of origin of the reflection. Secondly, a sequence verifier that keeps competing recognition hypotheses optional, and commits to a decision only when it is the loop closure is unambiguously valid. The required evidence to accept a loop closure grows with the geometric correction such commit would force on the map, and plausibility is tested against the relative uncertainty between the matched places. Thirdly, we propose a link management system in the SLAM back-end, in which the links of every committed hypothesis form a group that can be withdrawn, audited and re-admitted, which allows false loop closures to be pruned efficiently. Fourthly, a simulation study of which information in a sonar view makes a place recognizable, and of the capture regions of individual view templates. Finally, we validate the system on a real recording of an embedded 3D sonar [4], whose microphone array we turned into two virtual ears by beamforming, with a lidar-based ground truth. A video of BatSLAM 2.0 in operation is available online.11 1 https://youtu.be/VzuYBWAR8kw The rest of the paper is structured as follows. First, we give an overview of the BatSLAM 2.0 system in section I. Next, we derive the acoustic front-end in section I, after which we describe the recognition and verification of places in section IV and the robust pose graph in section V. In section VI, we detail the simulation setup, and in section VII we present the results, including ablations and a robustness analysis. In section VIII, we apply the system to a real recording. Finally, we discuss the limitations of our work in section IX and conclude the paper in section X. I Overview of BatSLAM 2.0 The overall processing flow of BatSLAM 2.0 can be found in figure 1, and the accompanying video (footnote 1) shows it in operation. A broadband signal is emitted by an emitter, and the subsequent echoes are received and processed into a cochlear representation (see [7]. The robot’s odometry adds a new node to the pose graph for each measurement, connected to the previous node by an odometry factor. Each binaural echo cochleogram is converted into a local view descriptor by the acoustic front-end, which is subsequently compared with all stored templates. The best matches in this comparison become recognition candidates, which are handed to the sequence verifier. The sequence verifier checks whether subsequent measurements give rise to subsequent matches in the pose graph, which is a strong signal for recognizing correct loop closures, and then generates a loop closure hypothesis. When the verifier commits to a hypothesis, its matches become weak loop closure links in the pose graph, grouped per hypothesis, which can be withdrawn in a later stage by the link management subsystem in case of competing evidence becoming available. Binaural Echo sL(t)s_L(t), sR(t)s_R(t) Acoustic Front-End Local view V: energy E, shape S (Section I) Template Store Five best matches (Section IV-A) Sequence Verifier Hypotheses, evidence, plausibility, risk-scaled commit (Section IV-B) Pose Graph (iSAM2) Odometry and weak links (Section V) Lay New Template Anchored to node i Link Management Length rule, residual check, GNC audit Odometry uiu_i Current estimate of the mapWithdraw /re-admitLocked on Fig. 1: Overview of the processing flow of BatSLAM 2.0. For every pulse, the binaural echo is converted into a local view V with an energy image E and a spectral-shape image S (the direction cue), which is compared with all stored templates. The five best matches are candidates for the sequence verifier, which keeps several recognition hypotheses alive and commits to one only when it is long, strong, unambiguous and plausible given the current pose uncertainty. A committed hypothesis injects weak loop closure links into the pose graph, which is solved incrementally with iSAM2. The links of every hypothesis form a group that the link management can withdraw from the graph or re-admit later. New templates are anchored to pose-graph nodes, so that their poses follow every optimization, and no templates are laid while the robot is locked onto known territory. I The acoustic front-end In this section, we describe how a binaural echo train is converted into the local view that is used for place recognition. We start from a model of the received signals, after which we describe the cochlear processing and the two images that make up the local view. The processing steps are illustrated on a simulated pulse in figure 2. I-A Echo formation The robot emits a broadband call se(t)s_e(t) (in our case a downward frequency-modulated sweep from 90 kHz90\,kHz to 30 kHz30\,kHz) and receives the echoes with two ears. During emission, the call is filtered by the directivity of the emitter transducer, modeled as an impulse response he(t,ψ)h_e(t,ψ) for every direction ψ. Every reflector adds its own filtering hr,n(t)h_r,n(t), and upon reception, the echo is filtered by the directivity of the left and right ear, hL(t,ψ)h_L(t,ψ) and hR(t,ψ)h_R(t,ψ). For N reflectors, the signal received by the left ear can then be written as follows: sL(t)=∑n=1Nan⋅ s_L(t)= _n=1^Na_n· hL(t,ψn)∗hr,n(t)∗he(t,ψn) h_L(t, _n)*h_r,n(t)*h_e(t, _n) (1) ∗se(t−τn)+wL(t), *s_e(t- _n)+w_L(t), with ∗* denoting the time-domain convolution, ψn _n the direction of the n-th reflector, τn=2rn/c _n=2r_n/c its round-trip delay (with rnr_n its distance and c=343 m s−1c=$343\,m\,s^-1$), ana_n the attenuation due to spherical spreading, and wL(t)w_L(t) additive sensor noise. The right ear follows by replacing L with R in these equations. The reflector filtering hr,n(t)h_r,n(t) also includes the frequency-dependent atmospheric absorption along the path [22]. In the frequency domain, the combined filtering of emitter and ear becomes a product, the Echolocation-Related Transfer Function (ERTF): HLE(f,ψ) H^E_L(f,ψ) =He(f,ψ)⋅HL(f,ψ), =H_e(f,ψ)· H_L(f,ψ), (2) HRE(f,ψ) H^E_R(f,ψ) =He(f,ψ)⋅HR(f,ψ), =H_e(f,ψ)· H_R(f,ψ), where HeH_e, HLH_L and HRH_R are the Fourier transforms of the impulse responses above, i.e., the directivity of the emitter and the Head-Related Transfer Functions (HRTFs) of both ears. I-B Cochlear processing Following the original BatSLAM [7] and the spectrogram correlation and transformation receiver [23], we model the cochlea as a bank of bandpass filters followed by an envelope detector. Before that, we compress every echo into a short pulse with a matched filter, i.e., a correlation with the emitted call, which improves the range resolution. For frequency channel k of the left and the right ear, this yields: xL,k(t) x_L,k(t) =sL(t)∗se(−t)∗gk(t), =s_L(t)*s_e(-t)*g_k(t), (3) xR,k(t) x_R,k(t) =sR(t)∗se(−t)∗gk(t), =s_R(t)*s_e(-t)*g_k(t), where gk(t)g_k(t) is a bandpass filter with a Gaussian frequency response on a logarithmic frequency axis, centered at fkf_k and with a width of two channel spacings. We use K=64K=64 channels, logarithmically spaced between 30 kHz30\,kHz and 90 kHz90\,kHz. The envelope of every channel is the magnitude of its analytic signal, obtained with the Hilbert transform ℋH [24]: eL,k(t) e_L,k(t) =xL,k(t)2+ℋ(xL,k(t))2, = x_L,k(t)^2+H (x_L,k(t) )^2, (4) eR,k(t) e_R,k(t) =xR,k(t)2+ℋ(xR,k(t))2. = x_R,k(t)^2+H (x_R,k(t) )^2. In practice, we compute the filtering and the Hilbert transform in one step, by keeping only the positive frequencies of each channel in the frequency domain. As every channel is narrow, its envelope can also be computed from a short inverse Fourier transform of only the frequency bins that the channel occupies, which yields the envelope at a decimated rate and reduces the cost of the front-end by a factor of about 15 (from roughly 300 ms300\,ms to 25 ms25\,ms of compute time per pulse in our Python implementation, at a correlation of 0.999 with the full-rate computation). Next, the envelopes are converted to range r=c⋅t/2r=c· t/2, and their power is averaged in range bins of 6 cm6\,cm between 0.25 m0.25\,m and 10 m10\,m (162 bins), and over pairs of neighboring channels (32 channels). We write the result as PL[k,b]P_L[k,b] and PR[k,b]P_R[k,b], with k the channel and b the range bin. Time-varying gain: Echoes from far away are weaker than echoes from nearby objects by tens of decibels (figure 2, panel b)). Bats compensate for this partially, by reducing their hearing sensitivity right after each call and restoring it over time. We apply a similar time-varying gain (TVG), which multiplies the amplitude of every range bin with its range rbr_b, compensating one of the two spreading factors: P~L[k,b]=rb2⋅PL[k,b],P~R[k,b]=rb2⋅PR[k,b]. P_L[k,b]=r_b^2· P_L[k,b], P_R[k,b]=r_b^2· P_R[k,b]. (5) I-C The local view After these initial processing steps, we construct the local view which consists of two images per ear, each of 32×16232× 162 pixels (frequency channel, range bin). The first one, which we call the energy image, is the echo amplitude relative to the strongest bin of the view, compressed with a cube root: EL[k,b] E_L[k,b] =(P~L[k,b]Pmax)1/6, = ( P_L[k,b]P_ )^1/6, (6) ER[k,b] E_R[k,b] =(P~R[k,b]Pmax)1/6, = ( P_R[k,b]P_ )^1/6, where PmaxP_ is the maximum of P~ P over both ears, all channels and all range bins, and the power 1/61/6 corresponds to the cube root of the amplitude (which as an additional square root term). In contrast to the logarithmic compression of the original BatSLAM, this compression has no floor parameter that needs to be adapted to the noise level of the sensor. The second image, which we call the spectral-shape image, captures the direction cue of the echoes, which is dominated by the spectral content of the received echo. As shown in equation 1, every echo is filtered by the ERTF of the direction it arrives from, which gives it a characteristic spectrum. To separate this spectral shape from the level of the echo, we subtract, per range bin, the mean level over all channels: SL[k,b] S_L[k,b] =DL[k,b]−D¯L[b]15 dB, = D_L[k,b]- D_L[b]$15\,dB$, (7) SR[k,b] S_R[k,b] =DR[k,b]−D¯R[b]15 dB, = D_R[k,b]- D_R[b]$15\,dB$, where DL[k,b]=10log10(P~L[k,b]/Pmax)D_L[k,b]=10 _10 ( P_L[k,b]/P_ ) is the level of a bin in decibels (and likewise DRD_R), and D¯L[b] D_L[b] and D¯R[b] D_R[b] are the means over the 32 channels. We clip both images to the interval [−1,1][-1,1], and set it to zero in bins that are more than 40 dB40\,dB below PmaxP_ , as these contain no echo energy. Both images are smoothed along range with a Gaussian kernel of one bin (6 cm6\,cm), so that a template tolerates a few centimeters of displacement. Finally, the energy images of both ears are concatenated into E=(EL|ER)E=(E_L|E_R), and the spectral-shape images into S=(SL|SR)S=(S_L|S_R), with || denoting concatenation. Each of both is normalized to zero mean and unit energy, and together they form the local view: V=(E−μE‖E−μE‖|S−μS‖S−μS‖),V= ( E- _E\|E- _E\|\; |\; S- _S\|S- _S\| ), (8) with μE _E and μS _S the means of both images. This gives both images the same weight, independently of their dynamic range. The local view V has 20,736 elements (83 kB83\,kB in single precision). Figure 3 shows the local views of five places, together with the scene around the robot. Panels a) and b) show the same place in a corridor of the indoor floor, on two visits that are 641 m641\,m of travel apart. Both local views are nearly identical, with a similarity of 0.89 (equation 9 below). Panel c) shows the view of another place that is most similar to b), among all earlier pulses of the drive. At first sight, it looks alike, as both views are dominated by the echoes of the walls of a junction, but the echoes arrive at different ranges, and their spectral shapes differ, which yields a similarity of only 0.69. Panels d) and e) show a place in the pillar hall, where the local view consists of the isolated echoes of individual pillars, and a place in a street of the city world. Fig. 2: Processing steps of the acoustic front-end, illustrated on pulse 2600 of the development drive on the indoor floor. Panel a) shows the received binaural echo train, normalized per ear, as a function of range. Panel b) shows the output of the matched filter for the left ear in decibels, which reveals weak echoes up to 10 m10\,m that are invisible in the raw signal. Panel c) shows the fine cochleogram (64 bands between 30 kHz30\,kHz and 90 kHz90\,kHz, 3 cm3\,cm range bins) as linear amplitude, for both ears (bands low to high within each ear), and panel d) shows the same cochleogram after the time-varying gain. Panel e) shows the energy image E of the descriptor (32 pooled bands, 6 cm6\,cm range bins, cube-root compression), and panel f) the spectral-shape image S (red: bands above the mean level of the range bin, blue: below), which carries the direction-dependent filtering of the ears and the emitter. The speckle in panel f) beyond 5 m5\,m is noise that passes the level mask. Fig. 3: Snapshots of five places and their local views. The top row shows the scene within 5 m5\,m of the robot (circle, with an arrow for its heading), with the frontal half-space of the sonar shaded in blue and the complete route in light grey. The middle row shows the energy image E and the bottom row the spectral-shape image S of the local view (red: above the mean level of the range bin, blue: below), each with the left ear above the right ear. Panels a) and b) show the same place in a corridor of the indoor floor, visited 641 m641\,m of travel apart; panel c) shows the view of another place, 7.7 m7.7\,m away, that is most similar to b) among all earlier pulses of the drive; panel d) shows the pillar hall of the indoor floor, and panel e) a street in the city. The similarity s is 0.89 between a) and b), and 0.69 between b) and c). IV Recognizing places In this section, we describe how BatSLAM 2.0 recognizes a place that the robot has visited before. We first describe the local view templates in more detail and how they are compared with the stored local view templates. After this description, we introduce the sequence verifier which turns individual, ambiguous matches into verified loop closures. IV-A Pose-anchored local view templates A local view template is a local view VtV_t that is stored together with the index of the pose-graph node at which it was recorded (its anchor). The pose of a template is therefore always the current estimate (x,y,θ)(x,y,θ) of its anchor node, and it moves with every optimization of the full pose graph. As sonar views are strongly direction dependent (section VII-B), the heading needs to be part of the template’s pose. A new template is laid whenever the robot has traveled 0.45 m0.45\,m or turned 20 °20\, since the previous one, to overcome the buildup of templates/poses that are all geometrically located at the same place. Similarity: We compare the current local view VqV_q with a template VtV_t using the correlation coefficient ρ, as in our earlier work on RadarSLAM [25], as we found that this was a more robust metric compared to the euclidean distance in the original BatSLAM work. As a revisit never passes through exactly the same position, we shift the range axis of VqV_q by up to three range bins (±18 cm± 18\,cm) during comparison, and keep the best match: s(q,t)=max|δ|≤3ρ(Vq(δ),Vt),s(q,t)= _|δ|≤ 3ρ (V_q^(δ),V_t ), (9) with s(q,t)s(q,t) the similarity between a query q (the current pulse) and a template t, and Vq(δ)V_q^(δ) the local view of the query, shifted by δ range binss(q,t)s(q,t). The winning shift δ∗δ^* also indicates where the robot is with respect to the anchor, and we use it as a forward offset d∗=δ∗⋅6 cmd^*=δ^*·$6\,cm$ in the loop closure links. Candidates: For every pulse, the five most similar templates become candidates, provided that s(q,t)≥0.60s(q,t)≥ 0.60, that the template was laid more than 6 m6\,m of travel earlier, and that the headings of the robot and the anchor differ by less than 69 °69\, . No position gate is applied, i.e., the search over the templates is global. IV-B The sequence verifier A single match in the sonar data is never trusted, as sonar data can be highly ambiguous. Instead, we keep a set of recognition hypotheses, and each of these hypotheses claims that the stretch of path that is being driven now was driven before. A hypothesis h is a chain of n pairs (qi,ti)(q_i,t_i) of query nodes and templates, in which every pair states that the anchor of tit_i lies d∗d^* in front of qiq_i, with the same heading. Geometric consistency: A new pair can only extend a hypothesis if the motion between the queries agrees with the motion between the anchors. For two pairs a and b, let Δpq p_q and Δθq _q be the displacement and heading change between both queries according to odometry, and Δpt p_t and Δθt _t the same quantities between both anchors according to the map. Pair b is consistent with pair a when: ‖Δpt−Δpq‖ \| p_t- p_q\| <0.30 m+0.15⋅‖Δpq‖, <$0.30\,m$+0.15·\| p_q\|, (10) |Δθt−Δθq| | _t- _q| <0.25 rad, <$0.25\,rad$, in which the position tolerance grows with the distance traveled, as the position error of odometry is unbounded and grows with every meter driven, both directly and through the accumulated heading error. The heading error, in contrast, stays well below 0.25 rad0.25\,rad over the length of a hypothesis (a few meters), so that a fixed heading tolerance suffices. We test every new pair against both the last and the first pair of the hypothesis. Every pulse, each hypothesis is extended with its best consistent candidate, and every unused candidate seeds a new hypothesis. Several contradicting hypotheses can therefore be alive at the same time, and this set of hypotheses represents the ambiguity. Evidence: Every hypothesis accumulates evidence as a sum of log-likelihood ratios of its similarities, minus a penalty for every pulse without a consistent candidate: Λ(h)=∑i=1nℓ(s(qi,ti))−0.5⋅m, (h)= _i=1^n (s(q_i,t_i) )-0.5· m, (11) with m the number of missed pulses. The term ℓ(s) (s) is the evidence that a single pair with similarity s provides for a true revisit. Ideally, it is the log-likelihood ratio, which by Bayes’ rule equals the posterior minus the prior log-odds of a correct candidate: ℓ(s) (s) =lnp(s∣correct)p(s∣wrong) = p(s )p(s ) (12) =logitP(correct∣s)−logitP(correct), =logitP(correct s)-logitP(correct), with p(s∣correct)p(s ) and p(s∣wrong)p(s ) the distributions of the similarity of candidates whose anchor does and does not lie at the current place of the robot (within 0.6 m0.6\,m and 26 °26\, according to ground truth), and P(correct)P(correct) the fraction of correct candidates. A positive ℓ therefore favors a revisit, and a negative ℓ favors a different place. We fitted P(correct∣s)P(correct s) once, with a logistic regression logitP(correct∣s)=a⋅s+blogitP(correct s)=a· s+b on the labeled candidates of the development drive. The log-likelihood ratio is then linear in s, and we refer to it, clipped, as the evidence curve: ℓ(s)=min(4,max(−4, 40⋅(s−0.70))). (s)= (4, (-4,\ 40·(s-0.70) ) ). (13) Here, the slope 40 is the fitted a, i.e., the evidence gained per unit of similarity, and 0.70 =(logitP(correct)−b)/a=(logitP(correct)-b)/a is the similarity at which a candidate is as likely to be correct as any other candidate, so that it carries no evidence (ℓ=0 =0). The clipping to [−4,4][-4,4], reached at s=0.70±4/40s=0.70± 4/40, prevents a single exceptionally good or bad match from dominating a hypothesis, as the linear model extrapolates without bound into the tails, where few candidates exist. A hypothesis dies after four consecutive missed pulses. Commit rule: A hypothesis is committed (i.e., turned into loop closure links) when it has at least 8 pairs on at least 3 templates, an evidence Λ≥10 ≥ 10, and a margin of at least 4 over the best rival hypothesis that places the robot elsewhere (more than 1 m1\,m or 0.4 rad0.4\,rad away). Furthermore, the correction it implies for the map must be plausible, which is estimated by a plausibility gate. Plausibility gate: A hypothesis can be consistent and still be wrong, e.g., when a corridor has the same structure as another corridor a few meters away. Committing such an alias would force a jump of the current pose that is much larger than the drift the odometry could have accumulated. We therefore test whether the correction implied by a hypothesis can be explained by the uncertainty of the current pose estimate. From its last pair, the hypothesis predicts the current pose xhx_h, which we compare with the current estimate x x of the pose graph through their Mahalanobis distance: d(h)=(xh−x^)T⋅Σ−1⋅(xh−x^)≤16.27,d(h)=(x_h- x)^T· ^-1·(x_h- x)≤ 16.27, (14) where Σ describes how far xhx_h and x x may disagree when the hypothesis is correct. Two independent errors contribute: the drift of the estimate x x, given by its covariance in the pose graph, and the error of xhx_h, which stems from a single sonar match and therefore has the covariance of one loop closure link. As both errors are independent, their covariances add. For a correct hypothesis, d(h)d(h) then follows a χ2χ^2 distribution with three degrees of freedom (x, y, θ), and 16.27 is its 99.9th percentile: a larger d(h)d(h) means that the jump cannot be explained by drift and match error, and the hypothesis is rejected. For small corrections, we use the marginal covariance of the current node, which iSAM2 provides cheaply. This marginal, however, includes the drift that the current node shares with the anchor. For corrections larger than 1.5 m1.5\,m, we therefore use the covariance of the relative pose between the anchor and the current node, obtained from their joint marginal. Once loops have been closed, this relative covariance is much smaller, and corrections of several meters become implausible. Risk-scaled commit: The damage of a wrong commit grows with the correction it forces on the map. When the implied correction exceeds 1.5 m1.5\,m, we therefore require at least 16 pairs (about 2.4 m2.4\,m of travel), an evidence Λ≥40 ≥ 40 and a mean evidence of at least one per pair (Λ≥n ≥ n). Brief aliases die before they reach this length and strength, and the last condition stops the rare persistent alias along quasi-periodic structures (such as a lane between two rows of pillars), which stays consistent for many meters but matches only weakly (section VII-D). Lock-on: Once a hypothesis is committed, all its pairs are released at once as loop closure links, which enter the pose graph as one link group (section V). Rival hypotheses that agree with it are discarded, as they describe the same revisit. The committed hypothesis itself stays alive, and the verifier keeps extending it with the same consistency test (equation 10). Every new pair is released immediately as an additional link of the same group, without passing the commit rule again: the pair continues a chain that has already been verified, and its consistency with both the first and the last pair ties it to that chain. At every pulse at which a committed hypothesis is extended, we say that the robot is locked on to a known stretch of path. Lock-on thus produces a dense sequence of links along the whole revisit, rather than a single burst at the moment of commitment, so that the drift is corrected along the entire revisited stretch. While locked on, no new templates are laid, as the robot drives through a place that is already represented by templates, and new templates of the same place would only compete with the existing ones as candidates at later revisits. Lock-on ends when the committed hypothesis dies, i.e., when the robot leaves the known path and no longer finds consistent candidates, or when the link management of the back-end withdraws its link group (section V). From then on, templates are laid again. The complete processing of a pulse is summarized in algorithm 1. Algorithm 1 Processing of one pulse in BatSLAM 2.0. 1: Add a node with odometry to the pose graph 2: Compute the local view from the echo ⊳ Section I 3: Update the recognition hypotheses ⊳ Section IV-B 4: Commit a strong, unambiguous and plausible hypothesis 5: Release its links and manage link groups ⊳ Section V 6: Lay a new template, unless locked on V The robust pose graph In this section, we describe how odometry and verified recognitions are fused into a one consistent topological map. In contrast to the pose cells and experience map of the original BatSLAM, a pose graph gives a principled estimate of every pose and its uncertainty, and it allows loop closures to be added and removed at any time, as was described in the previous section. In this section, we will detail the exact implementation of the pose graph subsystem with the GTSAM backend framework. V-A Formulation Every pulse i adds a node with the pose xi=(x,y,θ)x_i=(x,y,θ) of the robot, connected to the previous node by the odometry increment uiu_i. A committed recognition adds a link between a query node q and the anchor a of the matched template, with the measurement zqa=(d∗,0,0)z_qa=(d^*,0,0). The map is then the solution of: X^=argminX X= _X ∑i‖Δ(xi−1,xi)−ui‖Σo,i2 _i \| (x_i-1,x_i)-u_i \|^2_ _o,i (15) + + ∑(q,a)∈ℒρH(‖Δ(xq,xa)−zqa‖Σℓ), _(q,a) _H ( \| (x_q,x_a)-z_qa \|_ _ ), where Δ(xa,xb) (x_a,x_b) is the pose of node b in the frame of node a, ∥⋅∥Σ\|·\|_ is the Mahalanobis norm, ℒL is the set of loop closure links currently in the graph, and ρH _H is the Huber loss. The odometry uncertainty Σo,i _o,i grows with the square root of the distance travelled (appendix A). The links are deliberately weak (σ=0.30 mσ=$0.30\,m$ in position and 0.20 rad0.20\,rad in heading), so that a single link can only nudge the map, whereas only a verified sequence of links (originating from the sequence verifier) closes a loop. We solve equation 15 incrementally with iSAM2 [20] in GTSAM [21], using Dogleg steps, as Gauss-Newton steps diverged in our system when many conflicting links were present. V-B Link management To maximally build safeguards into the system against map collapses, we assume that even a well-verified recognition can still be wrong. Therefore, we included a system to allow the pose graph to be able to forget these erroneous links. We therefore keep the links of every committed hypothesis together as a link group, which enters the graph as tentative, and can be removed from iSAM2 and re-admitted later. Three rules act on these groups: • Length rule: a group whose hypothesis ends with fewer than 16 links is withdrawn permanently. This rule targets the same brief aliases as the risk-scaled commit, but for hypotheses with a small implied correction. • Residual check: after every injection of links, the tentative group with the worst median Mahalanobis residual is removed if that median exceeds 12. • GNC audit: every 400 nodes, we solve equation 15 in batch with Graduated Non-Convexity (GNC) [19], over the odometry and the links of all groups, including withdrawn ones. A group is kept (or re-admitted) when the mean GNC weight of its links is at least 0.5, and a group that survives two audits is confirmed. The first two rules judge every group by itself, whereas the GNC audit operates globally on the graph, judging all groups jointly, similar to the R method [17] or the switchable constraints [14], but per group rather than per link. As we will show in section VII-D, the audit actually never changed a final map in our experiments, making it largely reduntant at this point. However, we opted to keep this mechanism present as a safeguard for more strongly aliased environments. VI Simulation setup In this section, we describe the approach used to simulate the sensor system, the worlds, the odometry model and the metrics used to evaluate BatSLAM 2.0. VI-A Sonar simulator We simulated the binaural sonar by implementing equation 1 directly. The emitted call is a 3 ms3\,ms linear FM downsweep from 90 kHz90\,kHz to 30 kHz30\,kHz, sampled at 500 kHz500\,kHz. For every reflector and ear, the simulator combines the directivity of the emitter and the ear (taken from the simulated HRTF of Phyllostomus discolor [26], shown in figure 4), spherical spreading, atmospheric absorption [22] and the reflectivity of the reflector. Walls and cylinders reflect specularly, and point reflectors isotropically. White Gaussian noise is added to both ears, and we express its standard deviation relative to the peak amplitude of the emitted call. Unless stated otherwise, we use the design sensor, with a noise level of −116 dB-116\,dB and a listening window of 10 m10\,m (section VII-A). Fig. 4: Directivity of the simulated sonar (Lambert azimuthal equal-area projection of the frontal hemisphere, seen from behind the head; grid lines every 30 °30\, ). Rows: emitter, left ear, right ear and the ERTFs of both ears, at five frequencies between 30 kHz30\,kHz and 90 kHz90\,kHz, each normalized to its maximum. VI-B Worlds and drives We used three simulated worlds (figure 5). The main world is an indoor floor of 38 m38\,m by 18 m18\,m, consisting of a grid of rooms separated by corridors of 1.4 m1.4\,m to 1.8 m1.8\,m wide, and a hall with 40 pillars. The walls carry 170 small reflectors (e.g., pipes and radiators), and to make aliasing explicit, we placed an identical pattern of three objects on two different corridor walls. The second world is a city of 46 m46\,m by 26 m26\,m with the same topology but with streets of 3 m3\,m to 4 m4\,m, and the third is a small hall used during development. In the indoor floor and the city, the robot drives a random tour of about 1 km1\,km, in which every corridor is driven at least twice in both directions, with a small lateral along the corridor wobble so that revisits are never exactly identical in position. A pulse is emitted every 0.15 m0.15\,m of travel, yielding about 6400 pulses per drive. We developed and tuned the system on one route of the indoor floor, and used other random routes as unseen test cases. Fig. 5: The simulated worlds and exemplary results of BatSLAM 2.0. Top row: the ground-truth drive (colored from start to end) in a) the indoor floor (38 m38\,m by 18 m18\,m, development drive on route 3, 964 m964\,m), b) the city (46 m46\,m by 26 m26\,m) and c) the small development hall (16 m16\,m by 10 m10\,m). Black crosses: the two copies of the aliasing pattern. Bottom row, d)–f): the final map estimated by BatSLAM 2.0 for the same drives with calibrated odometry (blue), with its trajectory error (ATE); wrong links in the final graph are drawn in red. VI-C Odometry model The odometry was generated from the ground-truth increments with random noise (3 %3\,\% forward, 1 %1\,\% lateral and 1 °1\, per m $m$ in heading) and a systematic error (a heading bias of 0.6 ° m−10.6\, \,m^-1 and a scale error of 2 %2\,\%). We scaled the systematic part with a bias factor b: b=1b=1 represents uncalibrated wheel odometry, b=0.25b=0.25 a roughly calibrated robot and b=0b=0 a calibrated robot. Over 1 km1\,km, dead reckoning drifts by 4–36 m, depending on b and the random seed. Typical robots in indoor environments can be assumed to have decently calibrated odometry, whereas in outdoor environments these calibrations are less accurate due to a higher prevalence of wheel slippage. VI-D Metrics As BatSLAM 2.0 builds a topological map, our primary criterion is the absence of wrong loop closures and map collapse rather than metric accuracy. The link precision is the fraction of links for which query and anchor are truly within 0.6 m0.6\,m and 26 °26\, of each other. The number of wrong commits counts committed hypotheses of which the majority of links are wrong. The revisit coverage is the fraction of true same-direction revisits that received a correct link. The collapsed pairs are the fraction of node pairs that are at least 4 m4\,m apart in reality, but less than half that distance apart in the map. Finally, we report the absolute trajectory error (ATE) without alignment and after a rigid alignment in the plane. The pose-graph part of BatSLAM 2.0 is implemented in Python using GTSAM 4.2 with Python bindings, and the simulator is implemented using custom MATLAB code. All experiments ran on a desktop computer with an AMD Ryzen 9 7900X. VII Results In this section, we present the results in the order of the processing chain. We first analyze the recognition of a single sonar view, and how far a robot may deviate from a template for it still to be recognized. Next, we evaluate the complete system, followed by ablations, a robustness analysis and the computational cost. VII-A Sonar Template Recognition To evaluate the front-end on its own, we tested how well a single local view recognizes the place where it was taken, without the sequence verifier. For every third pulse, we compared its local view with those of all earlier pulses at least 6 m6\,m of travel back, using the similarity of equation 9. Only pulses with a true revisit, i.e., an earlier pulse within 0.6 m0.6\,m and 26 °26\, , serve as queries, so that only same-direction revisits are counted. We report two metrics. The top-1 accuracy is the fraction of queries for which the most similar earlier view lies within 1 m1\,m and 30 °30\, of the query. The AUC is the area under the ROC curve that separates same-place pairs (within 0.6 m0.6\,m and 26 °26\, ) from different-place pairs (more than 3 m3\,m or 57 °57\, apart), i.e., the probability that a random same-place pair is more similar than a random different-place pair. We estimate it from 20 000 random pairs of each class, so that differences in AUC below about 0.005 lie within its sampling noise. Figure 6 reports both metrics for different sensors, and table I in the appendix for the design choices of the descriptor. Sensor quality: Figure 6 compares four sensors on the same drive through the city map, combining two maximal ranges (5 m5\,m and 10 m10\,m) with two noise levels (−96 dB-96\,dB and −116 dB-116\,dB, i.e., the standard deviation of the noise relative to the peak amplitude of the emitted call). For every sensor, we evaluated three descriptors: the descriptor of the original BatSLAM (8 frequency channels, 3 cm3\,cm range bins and a logarithmic compression with a floor at −30 dB-30\,dB), the same with the time-varying gain (TVG), and our final descriptor (section I). The noise level clearly dominates. At a noise level of −96 dB-96\,dB, no descriptor reaches a top-1 accuracy of 0.5, and a longer range does not help, as the echoes beyond 5 m5\,m are buried in noise. The TVG then even hurts, as it amplifies this noise, and the final descriptor offers no clear advantage over the original one. With 20 dB20\,dB less noise (−116 dB-116\,dB), every descriptor improves substantially, and both the TVG and the final descriptor pay off. Only then does a longer range pay off as well, up to a top-1 accuracy of 0.89 for the final descriptor at 10 m10\,m. This sensor (10 m10\,m, −116 dB-116\,dB) is the design sensor that we use in the remainder of this paper. To test the robustness, we also use three degraded sensors: the design sensor with 10 dB10\,dB and 20 dB20\,dB more noise (the −10 dB-10\,dB and −20 dB-20\,dB sensors, at −106 dB-106\,dB and −96 dB-96\,dB), and the sensor of the original configuration (5 m5\,m, −96 dB-96\,dB). Fig. 6: Single-view place recognition for four sensors on the city drive: a) top-1 accuracy, b) AUC. Grey: descriptor of the original BatSLAM; orange: the same with TVG; blue: the final descriptor. Descriptor design: Table I in the appendix compares the design choices of the descriptor for the design sensor on both worlds. All variants share the spatiospectral resolution (32 frequency channels, 6 cm6\,cm range bins) and the TVG of our front-end, and differ only in the listed aspect. Adding the spectral-shape image to the energy image raises the top-1 accuracy on the indoor floor from 0.88 to 0.91, and the AUC on both worlds. Adding the interaural level difference (ILD) as a third image raises the AUC further, but lowers the top-1 accuracy on both worlds, as the ILD changes quickly with small pose changes, and we therefore left it out. The compression law matters little: with the spectral-shape image, every compressive law reaches a top-1 accuracy between 0.88 and 0.93 on the indoor floor and of 0.89 in the city, and only a linear amplitude is clearly worse. We use the cube root, as it performs on par with a logarithm without a floor that depends on the noise level (section I). The matching method, in contrast, has shown to matter a lot. With the matching of the original BatSLAM (the Euclidean distance between unit-energy views, without range shift), the top-1 accuracy of our descriptor drops to about 0.80 on both worlds, and that of a logarithmic energy image alone to 0.40 and 0.60. Both the new descriptor and the new matching thus contribute to the improvement over the original BatSLAM. Note that these last rows use the resolution and TVG of our front-end, and therefore differ from the original descriptor in figure 6. VII-B Capture region of a view template To measure how far a revisit may deviate from a template, we rendered views at controlled offsets from 16 template poses along the development drive. An offset view counts as recognized when its similarity to the template exceeds 0.70 and no template of another place is more similar. Figure 7 shows that the capture region is narrow: about ±0.20 m± 0.20\,m along track, ±0.15 m± 0.15\,m laterally and ±25 °± 25\, in heading. Fig. 7: Capture region of local view templates on the indoor floor, averaged over 16 template poses: fraction of recognized offset views for combined a) along-track and heading offsets, and b) lateral and heading offsets. VII-C The complete system We ran the complete system on three odometry seeds of the development drive, the two unseen routes and the city environment (which was unseen during development), each with calibrated odometry and with a residual heading bias, on three degraded sensors, and with uncalibrated odometry. Table I in the appendix summarizes the results per condition, figure 5d–f shows the maps of one run per world, figure 8 shows the links of one run, and table VI and figure 12 in the appendix list all runs. With the design sensor and calibrated or roughly calibrated odometry, all 12 runs produced a consistent map: none of the 457 committed hypotheses was wrong, and no distant places were pulled together. The link precision was 0.994–1.000, and 0.79–0.84 of the true revisits were linked. The trajectory error was 0.47–1.91 m (0.18–0.53 m after alignment), against 4.2–19.0 m for odometry alone. The degraded sensors also produced consistent maps (0.25–0.81 m after alignment), but on the −20 dB-20\,dB sensor, one wrong hypothesis of 17 links survived. It was committed early in the drive, when the map was still so uncertain that a correction of 8 m8\,m was plausible, and it distorts the map locally without collapsing it. The difference between the aligned and unaligned errors is caused by the heading drift that accumulates before the first loop closure, which can only be removed by a later loop closure with that first stretch of the route. If there is none, the whole map remains rotated (by about 5 °5\, on route 7). The unaligned error therefore measures how the map is anchored, and the aligned error measures its shape. With uncalibrated odometry, the links remain almost all correct, but the metric accuracy degrades (section VII-E). Fig. 8: Loop closure matrix of the development drive (route 3, calibrated odometry). Every dot is a link in the final graph between a query pulse and the anchor of the matched template. Grey: true same-direction revisits; blue: correct links; red: wrong links. VII-D Ablations To assess the contribution of every component, we removed or replaced several components of the full system, one at a time, and evaluated all variants on four standard cases (tables IV and IX in the appendix). Without sequence verification, the system made 215 wrong commits, of which 10 survived the link management, and the mean trajectory error grew to 4.85 m4.85\,m. Without link management as well (the naive variant), the map collapsed completely (rendering ATE a useless metric). This confirms that a single sonar view is too ambiguous to be trusted to perform loop closure. The front-end matters has an equally large contribution to the performance of the system, as removing the time-varying gain or the spectral-shape image, wrong hypotheses survive often. Without the range-shift search, the coverage of recognition drops to 0.60. The original front-end and the hand-set evidence constants of our first implementation made no wrong commits, but linked fewer revisits (0.73 and 0.68). The safeguards against aliases, in contrast, hardly come into play on these cases, as they contain almost no aliases that survive the sequence verification. Removing the complete link management even lowered the error (0.55 m0.55\,m against 0.87 m0.87\,m), as the length rule also withdraws short correct groups. Requiring 24 pairs for a large correction, without a condition on the evidence, raised the error on one particular run to 2.98 m2.98\,m, as the true revisit of the start of the route was split into two hypotheses that never reached 24 pairs, which left the map rotated. Safeguards against aliases: To study the safeguards, we repeated the ablations on the four hardest cases: the three degraded sensors and a development drive with a recurring alias (table VIII in the appendix). Without the risk-scaled commit, 12 of 346 commits were wrong. Of these, 8 implied a correction of more than 1.5 m1.5\,m (against only 13 %13\,\% of the correct commits), and 11 ended with 16 links or fewer, as an alias ends where the similarity between both corridors does. These observations motivate the risk-scaled commit and the length rule. With all safeguards in place, 6 wrong hypotheses were committed, and the link management withdrew all but the early alias on the −20 dB-20\,dB sensor. Without link management, 7 survived, and removing only the length rule gave identical results: the residual check and GNC audits never changed a final map, as a single wrong hypothesis that passed the gates of the verifier cannot be detected by a joint consistency test. Without any plausibility gate, 3 wrong hypotheses survived. Requiring 24 pairs regardless of the evidence is the only variant without a surviving wrong hypothesis, but as shown above, it also withholds the loop closures that anchor the map (section IX). VII-E Robustness Next, we varied the systematic odometry error with the bias factor b, tripled the random odometry noise, and combined the degraded sensors with a residual bias (figure 9; table VII in the appendix). Up to b=0.5b=0.5 (0.3 ° m−10.3\, \,m^-1), every run produced a consistent map with the same coverage as with calibrated odometry, while the error of dead reckoning grew beyond 20 m20\,m. The same holds for three times the random noise (0.48 m0.48\,m after alignment). With uncalibrated odometry (b=1b=1), the heading has drifted by about 45 °45\, at the first revisit. In three of six runs, later loop closures removed this rotation (1.4 m1.4\,m to 1.8 m1.8\,m). In the other three, the links were still correct, but as the pose graph treats odometry errors as random, the stretches between loop closures keep the curvature of the biased odometry, and the map remains distorted (9.3 m9.3\,m to 14.5 m14.5\,m). With b=2b=2, fewer true revisits pass the consistency test and plausibility gate (coverage 0.32 to 0.41), and the map collapses about as much as dead reckoning does, but not a single wrong hypothesis remained. In summary, BatSLAM 2.0 needs odometry calibrated to within about 0.3 ° m−10.3\, \,m^-1, and beyond that, it degrades in metric accuracy rather than in topology. Fig. 9: Robustness against systematic odometry errors on the development drive. a) Trajectory error of odometry (orange), BatSLAM 2.0 (blue) and BatSLAM 2.0 after alignment (green) versus the bias factor b; b) wrong hypotheses in the final graph and percentage of collapsed pairs. VII-F Computational cost On a single core, a pulse took 69 ms69\,ms on average, of which 41 ms41\,ms went to the pose graph. As the template comparison and the pose graph grow with the map, our (unoptimized) Python implementation meets the 100 ms100\,ms budget of a 10 Hz10\,Hz pulse rate on average, but not towards the end of a 1 km1\,km drive. VIII Real-world experiment Fig. 10: The real-world recording. a) Occupancy grid of the hall from the lidar scans, with the ground-truth trajectory (colored by time); the left loop was driven twice in the same direction, the right loop once in each direction. b) Camera images at places A, B and C. c) Binaural cochleograms of the closest sonar pulse, formed with the virtual ears of equation 16. In this section, we apply BatSLAM 2.0 to a real recording. As no binaural bat-head sonar recording of a suitable drive was available, we used an embedded 3D sonar sensor (eRTIS [4]), and formed two virtual ears from its microphone array. Apart from the virtual ears and the frequency band, the system is identical to the one of the previous sections. VIII-A Recording, virtual ears and ground truth Recording: The eRTIS sensor was mounted on a mobile platform together with a 3D lidar (Ouster OS0) and a camera, and driven through a hall of 22 m22\,m by 8 m8\,m in a university building (figure 10). The drive is a figure-eight of 89 mm, during which the sensor emitted 1186 calls at about 7.1 HzHz. The call is a 2.5 ms2.5\,ms FM downsweep from 50 kHz50\,kHz to 25 kHz25\,kHz, recorded by 32 MEMS microphones in a pseudo-random planar array of about 7 cm7\,cm by 4 cm4\,cm. We used the ranges between 0.6 m0.6\,m and 5.5 m5.5\,m. Virtual ears: We split the array into a left and a right half of 16 microphones each, and steered each half with a delay-and-sum beamformer towards an azimuth of 30 °30\, to its own side: sL(t) s_L(t) =∑i∈ℒwixi(t+yisin30∘c), = _i w_i\,x_i\! (t+ y_i 30 c ), (16) sR(t) s_R(t) =∑i∈ℛwixi(t−yisin30∘c), = _i w_i\,x_i\! (t- y_i 30 c ), with xi(t)x_i(t) the signal of microphone i, yiy_i its lateral position, ℒL and ℛR the two halves, and wiw_i a Gaussian taper. As the aperture of each half spans between two and a half and five wavelengths over the band of the call, the beams are wide at 25 kHz25\,kHz and narrow at 50 kHz50\,kHz, which gives the virtual ears a frequency-dependent directivity, similar to the HRTF characteristics of the real bats used in simulation. As the call covers only one octave, we used 16 pooled channels between 25 kHz25\,kHz and 50 kHz50\,kHz. Ground truth and odometry: The ground truth was computed from the lidar scans with PIN-SLAM [27], and the clock offset between sonar and lidar was estimated by comparing the acoustic images with images predicted from the lidar map. As the platform recorded no wheel odometry, we derived it from the ground truth with a scale error of −5 %-5\,\% on distance and 10 %10\,\% on rotation, plus the random noise of the simulations. On a figure-eight, the rotation error does not cancel, and at the first revisit, the heading is off by 36 °36\, . Dead reckoning has an error of 3.62 (0.46) mm, and all results are the mean (standard deviation) over ten noise seeds. VIII-B Results Fig. 11: Real-world results. a) Map of one run (refitted evidence curve) with odometry, ground truth, BatSLAM 2.0 estimate and links. b) Similarity of correct and wrong candidates, with the simulated (dashed) and refitted (solid) evidence curves. The evidence curve: The real similarities s (equation 9) are lower than the simulated ones. The correct candidates had a median similarity of 0.65, and 99 %99\,\% of the wrong ones stayed below 0.645 (figure 11b). Both classes are well separated, but the evidence curve of the simulations (equation 13, with its zero crossing at 0.70) lies above most correct matches. A correct pair with the median similarity then contributes ℓ=40⋅(0.65−0.70)=−2 =40·(0.65-0.70)=-2 to the evidence Λ(h) (h) of equation 11, so that a hypothesis of typical correct pairs loses evidence with every pulse instead of gaining it, and only stretches with similarities above 0.70 can reach the commit threshold. We therefore refitted the two constants of equation 13 with the same logistic regression as in the simulations (equation 12), on the candidates of one half of the drive (alternating stretches of 5 m5\,m), labeled with the lidar ground truth, and ran the complete drive with it. Both folds gave similar curves (a zero crossing at 0.576 and 0.546). This curve is a property of the sensor, and has to be determined once per sensor rather than per deployment. The map: Table V in the appendix and figure 11a summarize the results. With either evidence curve, none of the 30 runs committed a wrong hypothesis or collapsed. With the curve of the simulations, the system linked only half of the revisits, and reduced the trajectory error from 3.62 (0.46) mm to 0.77 (0.07) mm. With the refitted curve, it linked 0.64 (0.10) of the revisits and reached 0.67 (0.13) mm (0.52 (0.11) mm after alignment). The remaining error stems mostly from the first 46 m46\,m of the drive, before the first same-direction revisit. Places in the right loop were only revisited in the opposite direction, and were, as expected, never linked. With the refitted curve, a few links (3.3 (2.9) per run on average) at the tail of one correct hypothesis were 0.6 m0.6\,m to 1.2 m1.2\,m off, at a place where the platform turned off a path that it had previously driven straight on. The long-baseline tolerance of the verifier allows such a slow divergence. Odometry errors: With a rotation error of 15 %15\,\% instead of 10 %10\,\%, the heading error at the first revisit grows to 53 °53\, , which the plausibility gate considers implausible given the heading noise assumed by the back-end. The correct loop closures are then rejected (3.18 (0.21) mm), but no wrong loop closure is committed either, and with twice the assumed heading noise, the system recovers (0.66 (0.07) mm). Finally, the system runs in real time on this drive, with 4.8 msms for the front-end and 6.2 msms for the rest of the system per pulse on average, against 141 msms between two calls. IX Discussion and limitations In contrast to SeqSLAM [13], temporal consistency alone is insufficient for sonar: a short segment of one corridor can genuinely produce an echo sequence that closely resembles a segment elsewhere. The main remaining vulnerability therefore occurs early in a drive, when the relative pose uncertainty between two places may still span several meters and a strong aliased match remains geometrically plausible. Postponing all large corrections would reduce this risk, but would also delay the loop closures needed to constrain the map. Our ablations expose this trade-off directly: requiring 24 supporting pairs eliminated the remaining alias for the −20 dB-20\,dB sensor, but left the map of route 7 rotated. For a purely topological representation, the stricter criterion is therefore preferable, as the global rotation of the map is not that important for practical applications. For metric SLAM, however, timely anchoring of the map is also important, and a tradeoff can be made here. A second limitation is that most experiments were conducted in simulation. The simulator models sensor directivity, geometric spreading, atmospheric absorption, and reflectivity, but does not include weak higher-order reflections. The real-world experiment demonstrates that the approach transfers to an actual acoustic sensor, requiring just the evidence curve to be recalibrated. The current pose graph assumes that odometry errors are predominantly random. Under a systematic heading bias, the inferred topology remains correct, but metric accuracy progressively deteriorates as expected. Introducing an explicit heading-bias state into the factor graph would provide a natural way to estimate and compensate for such systematic errors. Similarly, locations revisited only in the opposite direction are currently never associated. This limitation could be addressed by explicitly modeling how a place is expected to appear acoustically when traversed from the reverse direction, but requires complex learned world models, which is part of our future work. Finally, although the simulated environments were deliberately designed to contain substantial self-similarity, the sequence verifier rejected nearly all incorrect hypotheses before they reached the back-end. Consequently, the GNC audit did not alter any final map in the experiments reported here. Its role is likely to become more important in environments with stronger structural aliasing, such as office floors containing repeated rooms or parking garages with highly repetitive geometry, where several individually plausible but mutually inconsistent loop-closure hypotheses may coexist. However, the target application for an algorithm like BatSLAM is in environments where optical techniques tend to fail, such as in heavy industry applications (mining, agriculture, etc). In these environments, the type of degenerative aliassing as encountered in long office corridors is typically not encountered, making this issue less pressing. In addition, all parameters were fixed using a single development trajectory, whereas the real sensor required different evidence constants. These constants primarily determine loop-closure coverage rather than map safety, but currently need to be calibrated once for each sensor configuration. Self-learning using active inference of these parameters might be an interesting avenue for further research into this architecture. X Conclusion In this paper, we presented BatSLAM 2.0, a sonar-only SLAM system that combines a biomimetic acoustic front-end with sequence-verified place recognition and a robust pose-graph back-end. The central challenge is the strong perceptual aliasing inherent to sonar. BatSLAM 2.0 addresses this ambiguity through an explicit direction cue in the place descriptor, a sequence verifier that accepts only long, strong, unambiguous, and geometrically plausible hypotheses, a commit rule that increases the required evidence with the magnitude of the implied correction, and a back-end in which each accepted loop closure remains represented as a removable group of weak constraints. Across all 12 simulated runs with calibrated or approximately calibrated odometry, the system produced consistent maps without incorrect loop closures, achieving 0.18–0.53 m after alignment. When systematic odometry bias was increased beyond 0.3 ° m−10.3\, \,m^-1, performance degraded primarily in metric accuracy rather than in topological correctness (ie, no map collapses occured). Our analysis further showed that sensor signal-to-noise ratio and spectral-shape information are central to reliable place recognition, and that the effective capture region of a stored template is limited to approximately ±0.15 m± 0.15\,m laterally and ±25 °± 25\, in heading. On a real acoustic recording, BatSLAM 2.0 likewise produced a consistent map without incorrect loop closures while operating in real time, reducing the trajectory error from 3.62 (0.46) mm to 0.67 (0.13) mm. Future work will focus on substantially longer real-world trajectories using physical odometry and a bat-like binaural sensing head, explicit estimation of systematic odometry errors, and place recognition across opposite traversal directions. Data and code availability The BatSLAM 2.0 source code, simulator, and scripts used to generate all experimental results, tables, and figures in this paper are available at https://github.com/Cosys-Lab/BatSLAM2. Acknowledgment Claude Opus 5.5 (Anthropic) was used to assist with writing the code, generating the test harness, and drafting the text of this paper. The authors substantially revised the text and take full responsibility for the content of this paper. References [1] D. R. Griffin (1958) Listening in the dark: the acoustic orientation of bats and men. Yale University Press, New Haven. Cited by: §I. [2] N. Ulanovsky and C. F. Moss (2008) What the bat’s voice tells the bat’s brain. Proceedings of the National Academy of Sciences 105 (25), p. 8491–8498. Cited by: §I. [3] J. Steckel, A. Boen, and H. Peremans (2013) Broadband 3-D sonar system using a sparse array for indoor navigation. IEEE Transactions on Robotics 29 (1), p. 161–171. Cited by: §I. [4] R. Kerstens, D. Laurijssen, and J. Steckel (2019) eRTIS: a fully embedded real time 3D imaging sonar sensor for robotic applications. In Proceedings of the IEEE International Conference on Robotics and Automation (ICRA), p. 1438–1443. Cited by: §I, §I, §VIII. [5] J. J. Leonard and H. F. Durrant-Whyte (1991) Mobile robot localization by tracking geometric beacons. IEEE Transactions on Robotics and Automation 7 (3), p. 376–382. Cited by: §I. [6] J. D. Tardós, J. Neira, P. M. Newman, and J. J. Leonard (2002) Robust mapping and localization in indoor environments using sonar data. The International Journal of Robotics Research 21 (4), p. 311–330. Cited by: §I. [7] J. Steckel and H. Peremans (2013) BatSLAM: simultaneous localization and mapping using biomimetic sonar. PLoS ONE 8 (1), p. e54076. External Links: Document Cited by: §I, §I, §I-B. [8] M. J. Milford, G. F. Wyeth, and D. Prasser (2004) RatSLAM: a hippocampal model for simultaneous localization and mapping. In Proceedings of the IEEE International Conference on Robotics and Automation (ICRA), p. 403–408. Cited by: §I. [9] M. J. Milford and G. F. Wyeth (2008) Mapping a suburb with a single camera using a biologically inspired SLAM system. IEEE Transactions on Robotics 24 (5), p. 1038–1053. Cited by: §I. [10] D. Vanderelst, J. Steckel, A. Boen, H. Peremans, and M. W. Holderied (2016) Place recognition using batlike sonar. eLife 5, p. e14188. Cited by: §I. [11] C. Cadena, L. Carlone, H. Carrillo, Y. Latif, D. Scaramuzza, J. Neira, I. Reid, and J. J. Leonard (2016) Past, present, and future of simultaneous localization and mapping: toward the robust-perception age. IEEE Transactions on Robotics 32 (6), p. 1309–1332. Cited by: §I. [12] S. Lowry, N. Sünderhauf, P. Newman, J. J. Leonard, D. Cox, P. Corke, and M. J. Milford (2016) Visual place recognition: a survey. IEEE Transactions on Robotics 32 (1), p. 1–19. Cited by: §I. [13] M. J. Milford and G. F. Wyeth (2012) SeqSLAM: visual route-based navigation for sunny summer days and stormy winter nights. In Proceedings of the IEEE International Conference on Robotics and Automation (ICRA), p. 1643–1649. Cited by: §I, §IX. [14] N. Sünderhauf and P. Protzel (2012) Switchable constraints for robust pose graph SLAM. In Proceedings of the IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), p. 1879–1884. Cited by: §I, §V-B. [15] P. Agarwal, G. D. Tipaldi, L. Spinello, C. Stachniss, and W. Burgard (2013) Robust map optimization using dynamic covariance scaling. In Proceedings of the IEEE International Conference on Robotics and Automation (ICRA), p. 62–69. Cited by: §I. [16] E. Olson and P. Agarwal (2013) Inference on networks of mixtures for robust robot mapping. The International Journal of Robotics Research 32 (7), p. 826–840. Cited by: §I. [17] Y. Latif, C. Cadena, and J. Neira (2013) Robust loop closing over time for pose graph SLAM. The International Journal of Robotics Research 32 (14), p. 1611–1626. Cited by: §I, §V-B. [18] J. G. Mangelson, D. Dominic, R. M. Eustice, and R. Vasudevan (2018) Pairwise consistent measurement set maximization for robust multi-robot map merging. In Proceedings of the IEEE International Conference on Robotics and Automation (ICRA), p. 2916–2923. Cited by: §I. [19] H. Yang, P. Antonante, V. Tzoumas, and L. Carlone (2020) Graduated non-convexity for robust spatial perception: from non-minimal solvers to global outlier rejection. IEEE Robotics and Automation Letters 5 (2), p. 1127–1134. Cited by: §I, 3rd item. [20] M. Kaess, H. Johannsson, R. Roberts, V. Ila, J. J. Leonard, and F. Dellaert (2012) iSAM2: incremental smoothing and mapping using the Bayes tree. The International Journal of Robotics Research 31 (2), p. 216–235. Cited by: §I, §V-A. [21] F. Dellaert (2012) Factor graphs and GTSAM: a hands-on introduction. Technical report Technical Report GT-RIM-CP&R-2012-002, Georgia Institute of Technology. Cited by: §I, §V-A. [22] (1993) Acoustics – attenuation of sound during propagation outdoors – part 1: calculation of the absorption of sound by the atmosphere. Technical report Technical Report ISO 9613-1:1993, International Organization for Standardization. Cited by: §I-A, §VI-A. [23] H. Peremans and J. Hallam (1998) The spectrogram correlation and transformation receiver, revisited. The Journal of the Acoustical Society of America 104 (2), p. 1101–1110. Cited by: §I-B. [24] S. L. Marple (1999) Computing the discrete-time "analytic" signal via FFT. IEEE Transactions on Signal Processing 47 (9), p. 2600–2603. Cited by: §I-B. [25] G. Schouten and J. Steckel (2019) A biomimetic radar system for autonomous navigation. IEEE Transactions on Robotics 35 (3), p. 539–548. External Links: Document Cited by: §IV-A. [26] F. De Mey, J. Reijniers, H. Peremans, M. Otani, and U. Firzlaff (2008) Simulated head related transfer function of the phyllostomid bat Phyllostomus discolor. The Journal of the Acoustical Society of America 124 (4), p. 2123–2132. Cited by: §VI-A. [27] Y. Pan, X. Zhong, L. Wiesmann, T. Posewsky, J. Behley, and C. Stachniss (2024) PIN-SLAM: LiDAR SLAM using a point-based implicit neural representation for achieving global map consistency. IEEE Transactions on Robotics 40, p. 4045–4064. External Links: Document Cited by: §VIII-A. Appendix A Parameters Table I lists all parameters of BatSLAM 2.0. They are the default values of batslam/config.py in the accompanying code, and were used for all worlds, routes and sensors; none of them was tuned per test case. TABLE I: Parameters of BatSLAM 2.0. The same values were used for every experiment in this paper. Stage Parameter Value Front-end Filterbank 64 Gaussian bands, 30 kHz to 90 kHz30\,kHz90\,kHz, log-spaced, width of two band spacings Band pooling Pairs of bands (32 bands) Range bins 6 cm6\,cm, from 0.25 m0.25\,m to 10 m10\,m (162 bins) Time-varying gain Amplitude ×r× r Energy image Cube root of the amplitude, relative to the peak of the view Spectral-shape image ± 15 dB15\,dB scaled to ±1± 1, only above −40 dB-40\,dB Range smoothing Gaussian, one bin (6 cm6\,cm) Templates Spacing 0.45 m0.45\,m travelled or 20 °20\, turned Range-shift search ±3± 3 bins (± 18 cm18\,cm) Candidates 5 per pulse, similarity ≥0.60≥ 0.60 Exclusion of recent templates 6 m6\,m of travel Heading gate 69 °69\, (1.2 rad1.2\,rad) Verifier Evidence per match 40⋅(s−0.70)40·(s-0.70), clipped to ±4± 4 Missed pulse Penalty 0.5, dies after 4 missed pulses Consistency 0.30 m0.30\,m +0.15×+0.15× distance, 0.25 rad0.25\,rad Commit 8 pairs, 3 templates, evidence 10, margin 4 over rivals (>>1 m1\,m or >>0.4 rad0.4\,rad apart) Plausibility gate χ32χ^2_3 at 99.9 % (16.27); relative covariance for corrections >>1.5 m1.5\,m Risk-scaled commit Correction >>1.5 m1.5\,m: 16 pairs, evidence 40, evidence ≥ number of pairs Pose graph Prior σ=(0.01,0.01,0.005)σ=(0.01,0.01,0.005) Odometry σ=(0.04,0.02,0.035)⋅d+(0.005,0.005,0.003)σ=(0.04,0.02,0.035)· d+(0.005,0.005,0.003) Loop closure link σ=(0.30,0.30,0.20)σ=(0.30,0.30,0.20), Huber loss with threshold 1.345 Solver iSAM2, Dogleg, relinearization threshold 0.01 Link management Length rule Fewer than 16 links after 10 pulses without a new link Residual check Median χ2>12χ^2>12 (tentative groups) GNC audit Every 400 nodes, Geman-McClure loss, keep if mean weight ≥0.5≥ 0.5 Appendix B Reproducibility All code, scene definitions and experiment definitions are available at https://github.com/Cosys-Lab/BatSLAM2. The simulator (section VI) is included as a copy under sim/simulator. An important note concerns the HRTF data: the HRTF file that we started from stores its directivity arrays in (elevation, azimuth, frequency) order, while the interpolation routine of the simulator assumed (azimuth, elevation, frequency). As both angle grids are identical (−-90 °90\, to 90 °90\, in steps of 2.5 °2.5\, ), this went unnoticed at first, and it caused the simulated ears to point up and down instead of left and right (a reflector 45 °45\, to the side produced an interaural level difference of only 0.2 dB0.2\,dB, and a reflector 30 °30\, above the head one of 14 dB14\,dB). All results in this paper were produced with the corrected (transposed) HRTF, for which the same test gives 18 dB18\,dB and 0 dB0\,dB, respectively. The check is included as sim/check_hrtf_orientation.m. The datasets are generated with sim/generate_dataset.m (worlds, drives, echoes and odometry) and sim/generate_capture_dataset.m (the capture study). The experiments are defined in suites/hc_main.json, suites/hc_ablation.json and suites/hc_robustness.json, and are run with scripts/run_suite.py. The front-end studies are run with scripts/bench_descriptor.py, scripts/bench_sensor.py and scripts/capture_analysis.py. All numbers and tables in this paper are generated from the results by scripts/build_paper_generated.py, and all figures by scripts/paper_figures.py. Appendix C Result tables This appendix lists the numerical results that are discussed in the main text: single-view place recognition for the design choices of the descriptor (table I), the results of the complete system per condition (table I), the ablations (table IV) and the real-world results (table V). TABLE I: Single-view place recognition for the design choices of the descriptor, with the design sensor. All variants use 32 channels, 6 cm6\,cm range bins and the TVG. Our descriptor uses a cube-root compression. Best value per column in bold. ILD: interaural level difference. Indoor floor City Variant Top-1 AUC Top-1 AUC Cues Energy 0.875 0.915 0.878 0.918 Energy + shape (ours) 0.913 0.945 0.888 0.938 Energy + shape + ILD 0.892 0.968 0.878 0.960 Compression of the energy image (energy + shape) Logarithm, floor −30 dB-30\,dB 0.884 0.930 0.888 0.930 Logarithm, floor −50 dB-50\,dB 0.929 0.947 0.886 0.925 Square root 0.900 0.940 0.889 0.937 Linear 0.858 0.925 0.857 0.921 Matching of the original BatSLAM Logarithmic energy, floor −30 dB-30\,dB 0.401 0.801 0.599 0.814 Energy + shape 0.793 0.901 0.802 0.889 TABLE I: Results of BatSLAM 2.0 per condition (ranges over the runs). ATE: trajectory error of odometry and of BatSLAM 2.0, without and after rigid alignment; wrong: wrong committed hypotheses in the final graph, out of all committed hypotheses; coverage: fraction of true revisits with a correct link. ATE [m] Condition (runs) Odometry Ours Aligned Wrong Coverage Calibrated (6) 4.2–11.1 0.47–1.91 0.18–0.46 0/230 0.79–0.84 Residual bias (6) 11.0–19.0 0.62–1.65 0.23–0.53 0/227 0.79–0.84 Degraded sensors (3) 7.5 0.52–1.79 0.25–0.81 1/106 0.67–0.74 Uncalibrated (4) 19.1–22.3 1.38–12.68 0.45–2.96 0/149 0.62–0.81 TABLE IV: Ablations over four standard cases (routes 3 and 5 with calibrated odometry, route 7 with a residual bias, and the city). ATE: mean over the cases; wrong: wrong committed hypotheses in the final graphs, summed over the cases. Naive: no sequence verification and no link management. Variant ATE [m] Wrong Coverage Full system (ours) 0.87 0 0.81 Naive 18.90 364 0.72 No sequence verification 4.85 10 0.80 Original front-end (8 bands) 1.54 0 0.73 No time-varying gain 2.53 3 0.72 Energy image only 1.38 8 0.74 No range-shift search 1.47 0 0.60 Hand-set evidence constants 1.51 0 0.68 No risk-scaled commit 0.93 1 0.81 Length only (24 pairs) 1.20 0 0.81 No link management 0.55 0 0.82 TABLE V: Real-world results, mean (standard deviation) over ten odometry seeds (distance ×0.95× 0.95, rotation ×1.10× 1.10). Evidence curve ATE Aligned Links Precision Wrong Revisits Collapsed (mm) (mm) Hyp. Linked Pairs Odometry only 3.62 (0.46) Simulation evidence curve 0.77 (0.07) 0.60 (0.05) 108 1.000 (0.000) 0 0.50 (0.01) 0.000 Refitted, even stretches 0.67 (0.13) 0.52 (0.11) 141 0.980 (0.018) 0 0.64 (0.10) 0.000 Refitted, odd stretches 0.66 (0.12) 0.52 (0.11) 142 0.975 (0.021) 0 0.64 (0.10) 0.000 Appendix D Additional results In this appendix, we show the trajectories and the detailed results of all runs of the main and robustness experiments, and of the ablations. In every map, the grey line is the ground truth, the orange line the dead-reckoning estimate, and the blue line the trajectory estimated by BatSLAM 2.0 (without alignment, as it was estimated online). Links of wrong committed hypotheses that remain in the final graph would be drawn in red. The title of every panel lists the trajectory error of BatSLAM 2.0 and of odometry, and the number of wrong committed hypotheses in the final graph. Fig. 12: Trajectories of all runs of the main experiment (table VI), sorted by the odometry condition. Grey: ground truth; orange: odometry; blue: BatSLAM 2.0. Run names: r3, r5, r7: routes 3, 5 and 7 on the indoor floor; city: the city world; b0, b025, b1: bias factor b=0b=0, 0.250.25 and 11; s1–s3: odometry noise realization; noise5e-6, noise1.5e-5, oldsensor: degraded sensors. Fig. 13: Trajectories of all runs of the robustness experiment (table VII). biasbb_skk: bias factor b with odometry realization k; odomnoise_x3: three times the random odometry noise; the last three runs use degraded sensors with a residual bias. Colors as in figure 12. TABLE VI: Results of BatSLAM 2.0 on all runs of the main experiment (drives of about 1 km1\,km). ATE odo: dead reckoning; ATE and aligned: BatSLAM 2.0 without and after rigid alignment; precision: fraction of correct links; wrong (final / all): wrong committed hypotheses in the final graph and over all commits; coverage: fraction of true revisits with a correct link; collapsed: fraction of collapsed pairs. Case Odometry ATE odo ATE Aligned Precision Wrong (final) Wrong (all) Coverage Collapsed [m] ↓ [m] ↓ [m] ↓ ↑ ↓ ↓ ↑ [%] ↓ Indoor, route 3, seed 1 Calibrated 7.5 0.78 0.25 0.999 0/39 0 0.84 0.0 Indoor, route 3, seed 2 Calibrated 4.2 0.89 0.24 0.999 0/40 0 0.84 0.0 Indoor, route 3, seed 3 Calibrated 7.9 1.02 0.19 1.000 0/36 1 0.84 0.0 Indoor, route 5 Calibrated 10.1 0.47 0.23 0.998 0/45 0 0.82 0.0 Indoor, route 7 Calibrated 7.6 1.91 0.18 1.000 0/46 0 0.80 0.0 City Calibrated 11.1 0.60 0.46 0.996 0/24 0 0.79 0.0 Indoor, route 3, sensor −10-10 dB Calibrated 7.5 0.52 0.26 0.997 0/34 0 0.72 0.0 Indoor, route 3, sensor −20-20 dB Calibrated 7.5 1.29 0.81 0.989 1/32 2 0.67 0.1 Indoor, route 3, original sensor Calibrated 7.5 1.79 0.25 0.995 0/40 3 0.74 0.0 Indoor, route 3, seed 1 Residual bias 11.0 0.73 0.29 1.000 0/38 1 0.83 0.0 Indoor, route 3, seed 2 Residual bias 14.0 1.34 0.29 1.000 0/38 0 0.84 0.0 Indoor, route 3, seed 3 Residual bias 19.0 0.96 0.24 0.999 0/40 1 0.84 0.0 Indoor, route 5 Residual bias 14.6 1.20 0.27 0.999 0/41 0 0.80 0.0 Indoor, route 7 Residual bias 11.0 1.65 0.23 1.000 0/42 0 0.79 0.0 City Residual bias 17.5 0.62 0.53 0.994 0/28 0 0.82 0.0 Indoor, route 3, seed 1 Uncalibrated 22.1 1.38 0.45 1.000 0/37 1 0.81 0.0 Indoor, route 3, seed 2 Uncalibrated 19.1 9.31 2.22 0.998 0/36 1 0.62 0.6 Indoor, route 3, seed 3 Uncalibrated 22.3 12.68 2.96 0.999 0/33 1 0.62 0.8 Indoor, route 5 Uncalibrated 21.9 1.80 0.45 1.000 0/43 0 0.75 0.0 TABLE VII: Robustness runs: odometry bias factor b, three times the random odometry noise, and degraded sensors with a residual bias. Columns as in table VI. Case Bias ATE odo ATE Aligned Precision Wrong (final) Wrong (all) Coverage Collapsed [m] ↓ [m] ↓ [m] ↓ ↑ ↓ ↓ ↑ [%] ↓ Indoor, route 3, seed 4 b=0b=0 8.0 1.22 0.30 1.000 0/38 1 0.82 0.0 Indoor, route 3, seed 5 b=0b=0 7.6 0.34 0.20 0.999 0/40 1 0.83 0.0 Indoor, route 3, seed 4 b=0.25b=0.25 15.9 1.98 0.33 0.999 0/38 1 0.83 0.0 Indoor, route 3, seed 5 b=0.25b=0.25 20.7 0.45 0.24 0.999 0/37 2 0.83 0.0 Indoor, route 3, sensor −20-20 dB b=0.25b=0.25 11.0 1.98 1.43 0.988 1/33 3 0.65 0.2 Indoor, route 3, sensor −10-10 dB b=0.25b=0.25 11.0 0.94 0.28 1.000 0/37 2 0.76 0.0 Indoor, route 3, seed 1, odometry noise ×3× 3 b=0.25b=0.25 11.7 2.37 0.48 1.000 0/50 1 0.81 0.0 Indoor, route 3, original sensor b=0.25b=0.25 11.0 1.48 0.28 0.998 0/38 2 0.73 0.0 Indoor, route 3, seed 4 b=0.5b=0.5 20.3 1.36 0.40 1.000 0/38 1 0.82 0.0 Indoor, route 3, seed 5 b=0.5b=0.5 22.9 0.75 0.30 1.000 0/40 1 0.82 0.0 Indoor, route 3, seed 4 b=1b=1 20.1 1.60 0.48 1.000 0/40 1 0.83 0.0 Indoor, route 3, seed 5 b=1b=1 20.3 14.54 2.87 1.000 0/32 1 0.62 0.8 Indoor, route 3, seed 4 b=2b=2 33.5 19.08 18.17 1.000 0/23 0 0.41 4.8 Indoor, route 3, seed 5 b=2b=2 35.7 20.47 19.71 1.000 0/11 0 0.32 7.4 TABLE VIII: Ablation of the safeguards on the four hardest cases (three degraded sensors and route 3 with odometry seed 3). Every cell lists the aligned trajectory error (m) and, in parentheses, the number of wrong hypotheses in the final graph; the last two columns sum the wrong hypotheses in the final graphs and over all commits. Variant −10-10 dB sensor −20-20 dB sensor Original sensor Route 3, seed 3 Wrong (final) Wrong (all) No risk-scaled commit 0.26 (0) 0.24 (0) 1.06 (1) 0.19 (0) 1 10 Risk-scaled commit, length only (24 pairs) 0.26 (0) 0.24 (0) 0.25 (0) 0.19 (0) 0 5 Plausibility gate on the absolute marginal 0.26 (0) 0.23 (0) 0.69 (1) 0.19 (0) 1 12 No plausibility gate 0.26 (0) 1.37 (2) 0.60 (1) 0.19 (0) 3 19 No length rule 0.26 (0) 0.81 (2) 1.07 (3) 0.20 (2) 7 7 No link management 0.26 (0) 0.81 (2) 1.07 (3) 0.20 (2) 7 7 Full system (ours) 0.26 (0) 0.81 (1) 0.25 (0) 0.19 (0) 1 6 TABLE IX: Ablations per case: trajectory error (ATE, in m) and the number of wrong committed hypotheses in the final graph (in parentheses), for route 3 and route 5 with calibrated odometry, route 7 with a residual bias, and the city with calibrated odometry. Variant Route 3 Route 5 Route 7, residual bias City Naive (single views, no gates, no link mgmt.) 8.00 (63) 26.70 (68) 8.22 (72) 32.68 (161) No sequence verification (single views) 5.08 (1) 1.95 (1) 8.17 (6) 4.21 (2) Original front-end (8 wide bands) 1.97 (0) 0.44 (0) 3.15 (0) 0.59 (0) No time-varying gain 0.85 (1) 6.82 (2) 1.84 (0) 0.62 (0) Energy image only (no shape) 0.63 (0) 1.70 (3) 1.26 (4) 1.92 (1) No range-shift search 0.45 (0) 1.57 (0) 3.28 (0) 0.56 (0) No risk-scaled commit 0.88 (0) 0.46 (0) 1.79 (1) 0.57 (0) Risk-scaled commit, length only (24 pairs) 0.74 (0) 0.47 (0) 2.98 (0) 0.60 (0) Risk-scaled commit, length only (16 pairs) 0.78 (0) 0.47 (0) 1.78 (1) 0.52 (0) No length rule 0.63 (0) 0.47 (0) 0.49 (0) 0.63 (0) No link management 0.63 (0) 0.47 (0) 0.49 (0) 0.63 (0) No plausibility gate 0.78 (0) 0.47 (0) 1.65 (0) 0.60 (0) Plausibility gate on the absolute marginal 0.78 (0) 0.47 (0) 1.65 (0) 0.60 (0) No heading gate 0.64 (0) 0.42 (0) 1.55 (0) 0.50 (0) Hand-set evidence constants 0.68 (0) 0.63 (0) 3.29 (0) 1.45 (0) Full system (ours) 0.78 (0) 0.47 (0) 1.65 (0) 0.60 (0)