lunaremu turns real lunar terrain into radio channels that hardware
channel emulators can replay. It takes a LOLA elevation model of an Artemis
candidate site near the lunar south pole, places a base station and user
equipment on it, and computes the channel of every link at every time step:
spherical-Moon line of sight, two-ray ground reflection over regolith, and
diffraction over crater rims. It then writes the channels in the two formats
we use:
| Emulator | What it takes | What this repo produces |
|---|---|---|
| Colosseum (MCHEM) | a precomputed RF scenario, installed by the Colosseum team | RFscenario.mat, in the layout of the MathWorks × Colosseum scenario generator |
| LCHEM (USRP X410) | live channel updates over ZeroMQ | MT-012 frames (lchem_frames.json) and a streaming client |
Two scenarios are ready to use in scenarios/out/. You
only need to install the package to generate new ones.
Status. Everything here is validated in software: 152 unit tests, and a MATLAB check of the Colosseum file (
matlab/check_rfscenario.m). Nothing has been run on Colosseum or on an X410 yet. The open points are listed in docs/COLOSSEUM.md and docs/LCHEM.md.
Each scenario has one gNB and three UEs, which matches LCHEM's default deployment, and runs at S-band (2.5 GHz) for 600 s with one snapshot per second. All sites use a 10 km × 10 km tile.
gNB: a 30 m mast on the tile's highest point.UE1_LOS: static, in line of sight, about 1 km from the mast.UE2_fringe: static, not in line of sight, but still served through diffraction.UE3_rover: drives away from the mast at 1 m/s, starting in line of sight and ending in terrain shadow.
| Scenario | Site | gNB path loss: UE1 / UE2 / rover |
|---|---|---|
connecting_ridge_4node |
Connecting Ridge (Site01), 89.46°S 137.49°W | 94 / 152 / 87→174 dB |
shackleton_4node |
Shackleton rim (Site04), 89.77°S 171.87°W | 94 / 143 / 88→outage (75 s of intermittent outage after t≈475 s) |
The rover's trace shows what makes the Moon different. While it is in line of sight, the channel follows the slow two-ray interference lobes. When it crosses behind a rim, the loss steps up by about 25 dB within a few metres. Coverage boundaries on the Moon are cliffs, not fades.
Each folder contains:
RFscenario.mat: the scenario for Colosseum;lchem_frames.json: 601 frames × 6 links for LCHEM;scenario.json: nodes (role, height, selenographic position), band, and statistics;summary.png: the figure above.
git clone https://github.com/ebaenamar/lunar-channel-emulation
cd lunar-channel-emulation
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]" # add ,lchem for live streaming to an X410
pytest # 152 tests, no downloads neededPython 3.11 or later is required.
lunaremu fetch-dem Site01 # 41 MB PGDA DEM, SHA-256 checked
lunaremu build scenarios/connecting_ridge_4node.toml # ~30 s
lunaremu validate scenarios/out/connecting_ridge_4node/RFscenario.matTo make your own, copy a TOML file in scenarios/ and change the
site, band (UHF, S, Ka, FR2, D), duration, snapshot step, or nodes. A UE
can be placed with:
static_los: in line of sight;static_fringe: not in line of sight but served;rover_cliff: a radial traverse from line of sight into shadow;fixed: explicitrowandcolon the tile.
The physics is the planner described in our LunaCov paper (in preparation for IEEE Aerospace 2027):
- Terrain. PGDA LOLA 5 m/pixel DEMs (Barker et al., 2021, PGDA Product 78).
- Line of sight is tested on a spherical Moon: the terrain profile is lowered by the bulge d₁d₂/2R. A flat-Moon test reports line of sight beyond the real horizon.
- Line-of-sight links use a coherent two-ray model whose reflection coefficient is the grazing-angle Fresnel coefficient of regolith. Regolith permittivity follows ε′ = 1.919^ρ (Olhoeft and Strangway, 1975) and the loss tangent follows Siegler et al. (2020).
- Shadowed links use free-space loss plus multi-edge Deygout diffraction with the ITU-R P.526 knife-edge loss.
- Taps. Each link becomes a sparse set of taps. The two-ray excess delay is below 1 ns, so on a 10 ns emulator grid a link is a single complex tap, and its magnitude carries the interference nulls.
The unit tests check the kernels against primary sources:
- free-space loss of 120.4 dB at 10 km and 2.5 GHz;
- ITU-R knife-edge losses J(1) = 13.9 dB and J(2.4) = 20.5 dB;
- the two-ray fourth-power law beyond the breakpoint;
- regolith ε′ = 2.66 at ρ = 1.5 g/cm³;
- tan δ = 0.0055 at 2.5 GHz;
- the vertical-polarization Brewster angle.
In the source repository, the exported taps also reproduce the analytic path
loss in MATLAB nrTDLChannel to 0.000 dB.
- Excess delay only. The absolute propagation delay of a multi-kilometre link does not fit either emulator's delay line, so it is dropped.
- Reciprocal links. Downlink and uplink carry the same channel.
- Outages. Links weaker than
max_pl_db(default 180 dB) are written as outages, not as attenuated channels. - Position resolution is the 5 m DEM pixel, so a rover's channel changes every few metres.
- Link budget. The budget in the TOML files is used only to choose where served UEs go. Transmit power and gains are set on the emulator.
- Surface model. Regolith is modeled as a surface. There is no subsurface propagation, and diffraction is first-order multi-edge (Deygout).
lunaremu/ package
colosseum.py RFscenario.mat writer and validator
scenario.py nodes, trajectories, per-snapshot channels, automatic placement
export/lchem.py LCHEM MT-012 frames, ZeroMQ streaming, JSON I/O
export/taps.py sparse tap model (LinkTaps)
propagation/ geometry/ regolith/ antenna/ io/ physics (vendored)
cli.py `lunaremu fetch-dem | build | validate`
scenarios/ TOML configs and ready-made outputs (out/)
matlab/ check_rfscenario.m
examples/ stream_to_lchem.py
docs/ COLOSSEUM.md, LCHEM.md
tests/
- Physics. The propagation modules are vendored unchanged, apart from the
package name, from
hariniiisathya-coder/lunar-surface-communication-
at commit
efe592a(MIT). New in this repository: the scenario builder, the Colosseum writer, the LCHEM scenario export, and the CLI. - Terrain. Barker, M. K. et al., Improved LOLA elevation maps for south pole landing sites, Planet. Space Sci. 203, 105119 (2021), doi:10.1016/j.pss.2020.105119. NASA PGDA Product 78.
- Colosseum scenario format. ColosseumScenarioGenerator (MathWorks × Colosseum, GPL-3.0). Only the file layout is followed; no code is reused.
- License. MIT, see LICENSE.
