A Julia program and Pluto.jl notebook to recreate a version of this really cool delay-Doppler plot from a neat Moon bounce radio experiment:
Real Experiment | My Simulation |
(Image from Lacuna Space) |
More detail in my blog post
moonbounce.jl
is a Pluto.jl notebook, so it's best viewed in the Pluto.jl viewer.
However you can also just run the program directly with
$ # instantiate Julia modules
$ julia
julia > ]
(@v1.7) pkg> instantiate
(@v1.7) pkg> ^D
$ julia --project=. moonbounce.jl
but depending on your setup you might not see any images.
At a high level, this program follows this procedure to make Moon bounce delay-Doppler plots:
- Choose a transmitter location and time (I'm using October 5, 2021 at Dwingeloo)
- Generate a bunch of points on the Moon's surface. These will represented scatterers or reflectors on the Moon that will reflect the transmitted signal back to Earth
- I finally had an excuse to use the Fibonacci sphere covering technique described by extremelearning.com.au
- Calculate the time between transmission from the and incidence on the Moon at each reflector point, then also calculate the time it for a reflect from each point to return to the receiver on Earth
- This is the bulk of the work of the program. It's made non-trivial because both the Earth and Moon are in motion. See the
moonbounce
function for implementation
- This is the bulk of the work of the program. It's made non-trivial because both the Earth and Moon are in motion. See the
- Take those signal delays to work out the positions and velocities of the transmitter and lunar reflector at transmit time, reflection time, and reception time
- Use positions and velocities to work out Doppler shift
- Plot!