LODESTONETechnical report TR-2026-01 · revision 3Հայերեն
Contents
  1. Cover and contents
  2. 1Introduction
  3. 2State of the art
  4. 3Physics of detection and identification
  5. 4System architecture
  6. 5Induction subsystem
  7. 6Radar subsystem
  8. 7Positioning and timing
  9. 8Signal processing and machine learning
  10. 9Work plan
  11. 10Team and responsibilities
  12. 11Budget and funding
  13. 12Risks, safety and quality
  14. AAppendices
Appendices

Appendices

Key numbers, code listings, glossary, references, photographs and document history.

AKey numbers

Values calculated in this report, with the chapter where each is derived. They are replaced by measured values as the work proceeds.

Table A.1.Principal calculated values.

QuantityValueChapter
Target physics
Quadrature peak, copper sphere, radius 5 mm1.0 kHz3
Quadrature peak, aluminium sphere, radius 5 mm1.6 kHz3
Quadrature peak, stainless steel sphere, radius 5 mm41 kHz3
In-phase sign change, steel sphere (\(\mu_r = 100\)), radius 5 mmabout 280 kHz3
Quadrature peak width, ring / solid sphere1.13 / 1.56 decades3
Signal change per doubling of depth÷ 643
Induction subsystem
Tone band at 48 kHz188 Hz – 18.75 kHz5
Crest factor, zero / optimised phases4.90 / 3.065
SNR penalty, simultaneous vs stepped tones (peak-limited)6.7 dB5
Receive coil: inductance, resistance, self-resonance4.58 mH, 12.8 Ω, 429 kHz5
Codec input noise (derived)about 80 nV/√Hz5
Chain noise with ×33 OPA1612 stage2.6 nV/√Hz5
Echo, 1 cm copper sphere at 20 cm20.5 µV5
Detection range, coin-sized target (ground-limited)about 40 cm5
Host data rate, 6 channels9.2 Mbit/s4
Radar subsystem
Range resolution in soil (\(\varepsilon_r = 9\), 2.5 GHz bandwidth)2.0 cm6
Unambiguous range in soil, 10 MHz steps5 m6
Positioning
Peak width over a small target0.90 × depth7
Signal change per 1 cm height change at 20 cmabout 30%7
IMU position error, 1 mg bias, after 2 / 5 / 10 s2 / 12 / 49 cm7
Transmit-coil field at 50 cm / 1 m1.45 / 0.18 µT7
Coil offset per degree of tilt, 1.5 m pole2.6 cm7
Timing resolution of PPS in audio stream20.8 µs7

BCode listings

Both listings are starting points for tasks T1.6 and T5.3 and have not yet been run on the hardware.

B.1Induction acquisition (48 kHz, codec as sound card)

import numpy as np, sounddevice as sd

FS, N = 48_000, 4096                           # 11.72 Hz bins, 85.3 ms blocks
BINS = np.array([16, 24, 37, 56, 85, 130, 197, 300, 456, 693, 1053, 1600])
PH = np.array([2.589, 5.287, 1.692, 2.610, 3.376, 2.940,
               1.805, 1.120, 0.966, 3.592, 5.042, 0.208])

n = np.arange(N)
block = np.cos(2 * np.pi * np.outer(n, BINS) / N + PH).sum(axis=1)
block *= 0.5 / np.abs(block).max()
tx = np.tile(block, 60)                                # about 5.1 s

# OUT 1 -> amplifier -> TX coil; IN 1 = TX current, IN 2-4 = RX coils, IN 5 = PPS
# the device name depends on the host driver
rec = sd.playrec(tx, FS, device="CS42448",
                 input_mapping=[1, 2, 3, 4, 5], output_mapping=[1])
sd.wait()

blocks = rec[N * 4:].reshape(-1, N, 5)                # drop start-up
spec = np.fft.rfft(blocks[:, :, :4], axis=1)[:, BINS, :]
H = (spec[:, :, 1:] / spec[:, :, :1]).mean(axis=0)    # 12 tones x 3 receivers
pps = np.flatnonzero(np.diff(rec[:, 4]) > 0.2)         # PPS edges, sample index

B.2Radar sweep with phase reference

import adi, numpy as np

sdr = adi.ad9361("ip:192.168.2.1")            # Pluto in two-channel mode
sdr.rx_enabled_channels = [0, 1]               # RX1 echo, RX2 coupled reference
sdr.sample_rate = int(2e6)
sdr.rx_buffer_size = 4096
sdr.tx_cyclic_buffer = True

fs, f_if, N = sdr.sample_rate, 100e3, sdr.rx_buffer_size
tone = np.exp(2j * np.pi * f_if * np.arange(N) / fs)
sdr.tx(0.5 * tone * 2**14)

def phasor(x):
    return np.vdot(tone, x) / N

S = []
for f in np.arange(500e6, 3000e6 + 1, 10e6):   # 251 steps
    sdr.tx_lo = sdr.rx_lo = int(f)
    for _ in range(2):
        sdr.rx()                                   # let the synthesisers settle
    echo, ref = sdr.rx()
    S.append(phasor(echo) / phasor(ref))

S = np.array(S)                                    # subtract a background sweep here
profile = np.abs(np.fft.ifft(S * np.hanning(len(S)), n=4096))

CGlossary

TermMeaning
Crest factorRatio of peak to RMS value of a waveform
EKFExtended Kalman filter
EMIElectromagnetic induction (as a sensing method)
FFT binOne frequency point of a discrete Fourier transform; spacing = sample rate / block length
GPRGround-penetrating radar
IMUInertial measurement unit (accelerometer and gyroscope)
Polarizability tensor3 × 3 matrix relating the applied field to the induced magnetic dipole of a target
PPSPulse per second, a timing output of GNSS receivers aligned to GPS time
PPK / RTKPost-processed / real-time kinematic satellite positioning, centimetre level
RACIResponsible, accountable, consulted, informed
SDRSoftware-defined radio
SFCWStepped-frequency continuous wave
SRFSelf-resonant frequency of a coil
TDMTime-division multiplexed serial audio interface
ToFTime-of-flight distance sensor
UXOUnexploded ordnance
VIOVisual-inertial odometry
VLFVery low frequency; here, continuous-wave induction detectors at 3 to 30 kHz

DReferences

  1. [R1] Software defined radio for stepped-frequency, ground-penetrating radar. Thesis, Georgia Institute of Technology. repository.gatech.edu
  2. [R2] Software defined radio for stepped-frequency, ground-penetrating radar. IEEE conference paper. IEEE Xplore 8128082
  3. [R3] Software-defined ground penetrating radar using COTS hardware. GNU Radio Conference 2025. events.gnuradio.org
  4. [R4] Ground-penetrating radar with HackRF software-defined radios. rtl-sdr.com
  5. [R5] MetalMapper: a multi-sensor TEM system for UXO detection and classification. ResearchGate 235186078
  6. [R6] Dipole models for UXO discrimination at live sites. SERDP/ESTCP project. serdp-estcp.mil
  7. [R7] The spectral properties of the magnetic polarizability tensor for metallic object characterisation. arXiv:1906.00382
  8. [R8] Characterisation of multiple conducting permeable objects in metal detection by polarizability tensors. arXiv:1809.08916
  9. [R9] Detecting landmines for a safer world. Ingenia. ingenia.org.uk
  10. [R10] MDS-10 dual sensor detector. Minelab. minelab.com
  11. [R11] MDS-20 dual-sensor detector. EPE. epequip.com
  12. [R12] Combining electromagnetic spectroscopy and ground-penetrating radar for the detection of anti-personnel landmines. Sensors 19(15):3390, 2019. mdpi.com
  13. [R13] Deep learning-based classification of anti-personnel mines and sub-gram metal content in mineralized soil (DL-MMD). Scientific Reports, 2024. nature.com
  14. [R14] Detection and classification of landmines using machine learning applied to metal detector data. ResearchGate 339640290
  15. [R15] Landmine identification from pulse induction metal detector data using machine learning. ResearchGate 373286697
  16. [R16] J. R. Wait, A conducting sphere in a time varying magnetic field. Geophysics 16(4), 666–672, 1951.
  17. [R17] Cirrus Logic, CS42448 108 dB, 192 kHz 6-in, 8-out TDM CODEC, datasheet.
  18. [R18] Analog Devices, ADALM-Pluto SDR active learning module and AD9363 documentation.
  19. [R19] NATO Science for Peace and Security Programme: overview and Multi-Year Projects. nato.int; programme size and partner rules: Science|Business
  20. [R20] Higher Education and Science Committee of Armenia, research grants. hesc.am
  21. [R21] Foundation for Armenian Science and Technology, Advance Research Grants. fast.foundation
  22. [R22] European Commission, list of participating countries in Horizon Europe. ec.europa.eu

EPhotographs

Photographs of the hardware are added as it is built. To add one, copy a file with the name shown into the images/ folder of the web server; it appears here without any other change.

CS42448 codec boardimages/6in8out.jpg
Codec board (6IN8OUT).
Radar bench set-upimages/pluto-setup.jpg
ADALM-Pluto with amplifiers.
Loopback testimages/codec-loopback.jpg
T1.2 loopback.
Receive coilimages/rx-coil.jpg
Receive coil with shield.
Coil headimages/coil-head.jpg
Transmit and receive coils.
Sensor poleimages/pole-rig.jpg
Positioning rig.
Test bedimages/sandbox.jpg
Sandbox with calibration targets.
First measured spectrumimages/first-spectrum.png
Compared with Chapter 3.
First radar profileimages/first-profile.png
Compared with Chapter 6.

FDocument history

RevisionDateChanges
1September 2026Design notes published as seven separate web pages.
226 September 2026Consolidated into this report. Detailed work plan, team structure and budget added. Tone plan and noise budget revised for the CS42448 codec at 48 kHz. Radar sweep set to 0.5–3 GHz to match the antenna size.
37 October 2026Project planned for grant funding only; self-funded option removed. Funding programmes and strategy added (Chapter 11), funding risk added. Summary figures added to the cover page.