BatSLAM 2.0: Sequence-Verified Sonar Place Recognition in a Robust Pose Graph
Organizations: Cosys-Lab, Faculty of Applied Engineering, University of Antwerp, 2020 Antwerp, Belgium · Flanders Make Strategic Research Centre, 3920 Lommel, Belgium
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.
Figures & tables
Appendix figures & tables11 assets
Supplementary material from the paper’s appendix.
Appendix
| Stage | Parameter | Value |
|---|---|---|
| Front-end | Filterbank | 64 Gaussian bands, , log-spaced, width of two band spacings |
| Band pooling | Pairs of bands (32 bands) | |
| Range bins | , from to (162 bins) | |
| Time-varying gain | Amplitude | |
| Energy image | Cube root of the amplitude, relative to the peak of the view | |
| Spectral-shape image | scaled to , only above |
| 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) | ||||
| 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 |
| 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 |
| Evidence curve | ATE | Aligned | Links | Precision | Wrong | Revisits | Collapsed |
|---|---|---|---|---|---|---|---|
| ( ) | ( ) | 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 |
| 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 |
| Case | Bias | ATE odo | ATE | Aligned | Precision | Wrong (final) | Wrong (all) | Coverage | Collapsed |
|---|---|---|---|---|---|---|---|---|---|
| [m] | [m] | [m] | [%] | ||||||
| Indoor, route 3, seed 4 | 8.0 | 1.22 | 0.30 | 1.000 | 0/38 | 1 | 0.82 | 0.0 | |
| Indoor, route 3, seed 5 | 7.6 | 0.34 | 0.20 | 0.999 | 0/40 | 1 | 0.83 | 0.0 | |
| Indoor, route 3, seed 4 | 15.9 | 1.98 | 0.33 | 0.999 | 0/38 | 1 | 0.83 | 0.0 | |
| Indoor, route 3, seed 5 | 20.7 | 0.45 | 0.24 | 0.999 | 0/37 | 2 | 0.83 | 0.0 | |
| Indoor, route 3, sensor dB | 11.0 | 1.98 | 1.43 | 0.988 | 1/33 | 3 | 0.65 | 0.2 |
| Variant | dB sensor | 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 |
| 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) |