Member: Jonathan Morcos
Faculty advisors: Narayan B. Mandayam, Ivan P Seskar, Rahul Mishra
Develop an intelligent communication framework that enables a lunar rover to autonomously detect and evaluate available communication options such as relay satellites, surface LTE/5G base stations, lunar orbiters, and direct Earth links. The system will use AI-based link prediction and adaptive decision mechanisms to dynamically select the most reliable communication path under varying lunar network conditions.
Week 1 (05/26-05/28) - Slides: https://docs.google.com/presentation/d/1k_da4RoCCGfvWB3jBXMbDYvlnHmoi880aRzRP4Eedew/edit?usp=sharing
This week, I conducted research on the main problem: lunar rovers need reliable communication, but signal can be affected by movement, distance, and terrain. I also figured out the main goal of the project, which is to help a rover compare possible links based on strength, reliability, speed, and availability. I started writing the initial Python code for a simple link-selection simulation.
Week 2 (06/01-06/04) Slides: https://docs.google.com/presentation/d/1bK7qI86zqTBN-QeUtxcpUrNPnhHvYkRU/edit?usp=sharing&ouid=109611897018407484307&rtpof=true&sd=true
This week, I built the first version of my lunar rover communication link selection simulation. I created a test environment where the rover could discover different communication options, measure basic link conditions like SNR, delay, Doppler, contact time, and line of sight, then choose the best available link. I also added more realistic link behavior, such as blocked LTE/5G, contact windows for satellites and orbiters, and a high-delay Direct Earth backup link. In addition, I completed USRP tutorials to start learning the SDR workflow and uploaded my project code to GitHub so it can be tracked and shared more easily.
Week 3 (06/08-06/11) Slides: https://docs.google.com/presentation/d/1Wd9O2tFhsK8t1JrWYiRSQnhDIH36rqaC/edit?usp=sharing&ouid=109611897018407484307&rtpof=true&sd=true
This week, I continued working on the rover communication link-selection simulation and analyzed the results more clearly. I reviewed how often each communication option was selected and found that LTE/5G was chosen the most, while also tracking availability, outage probability, delay, and SNR. I also started connecting the simulation to real RF communication concepts by building a Python demo for 16-QAM and OFDM. This included generating random bits, mapping them into 16-QAM symbols, placing them onto OFDM subcarriers, creating the time-domain waveform, and viewing the signal through constellation, waveform, and spectrogram plots. Overall, this helped me understand how digital data becomes an RF signal and how that connects to the rover’s link-selection problem.
Week 5 (06/22-06/25) Slides: https://docs.google.com/presentation/d/1sPuSIwuN9y9E7N8X_FMaOyQZz7wq6ymxlNCq-2IK2bg/edit?usp=sharing
This week, I focused on generating RF spectrograms for the lunar rover communication project, with the receiver placed on the mobile rover. I worked on simulating the different communication links the rover might detect, including the lunar base station using LTE/5G OFDM signals with QPSK, 16-QAM, and 64-QAM, the orbiter using BPSK/QPSK proximity signals, the relay satellite using QPSK/8PSK or coded QPSK/16-QAM, and the direct-to-Earth link using narrowband BPSK/QPSK. I also incorporated SigMF metadata labeling so each generated spectrogram includes information about the signal type, frequency, power, transmitter, receiver, and experimental setup. Overall, this helped move the project from just simulating link selection to creating labeled RF signal data that can later be used for testing, training, and eventually machine learning-based communication discovery.
Week 6 (06/29-07/02) Slides: https://docs.google.com/presentation/d/1POs6I3cLhb8cvvpxw12xv8LO7hb1crIYeKdA5JekzMQ/edit?slide=id.p3#slide=id.p3
This week I moved from Python-based RF spectrogram simulations into real SDR hardware testing on the COSMOS/ORBIT testbed. I made a reservation, SSH’d into the console and SDR servers, opened GNU Radio flowgraphs using XQuartz, and configured the USRP transmitter and receiver settings. I found the USRP device address, matched the transmitter and receiver at a 3.5 GHz center frequency with a 5 MS/s sample rate, and successfully ran the receiver GUI. I was able to transmit and receive a signal using the provided GNU Radio setup, then used the spectrum plot, I/Q constellation, and bit error rate graph as evidence that the receiver was detecting a structured digital waveform instead of just random noise. My next step is to transmit my own Python-generated waveform/IQ samples on the SDR testbed and compare the received spectrogram with the original simulated spectrogram.
Week 7 (07/06-07/09) Slides: https://docs.google.com/presentation/d/14pHw1JirMlyk1FiGsW2ja1Vg6tkRH15ti61sSIVyQxE/edit?usp=sharing
This week, I moved from simulated waveform generation to testing an actual generated waveform on the COSMOS SDR testbed. I made a COSMOS reservation, used srv4 as the transmitter and srv5 as the receiver, and loaded the working rifatbin_OFDM_v3.ndz SDR image after the default image had a UHD/FPGA compatibility issue. I generated a BPSK waveform as complex IQ samples in Python, saved it as bpsk_codex.iq, transmitted it from srv4 using GNU Radio/UHD, and captured the received signal on srv5 as received_bpsk.iq. I then created a spectrogram of the received waveform, which showed a bright horizontal band near 0 Hz, confirming that the signal was successfully received and downconverted at baseband.
Week 8 (07/13-07/16) Slides: https://docs.google.com/presentation/d/1Zbl95MO_MGeIZlxIBQ2b_EyjDyIskg1VaxFQVyqVObY/edit?usp=sharing
This week, I completed a comparative study of RF spectrograms generated in Python and captured experimentally on the COSMOS testbed. I compared BPSK, QPSK, 16-QAM, and OFDM/QPSK signals to determine whether the real SDR measurements preserved the main characteristics of the simulated waveforms. The Python spectrograms appeared cleaner and more sharply defined, while the COSMOS captures showed additional noise, frequency spreading, filtering, and other real-world hardware and channel effects. Overall, the results showed that the intended signal structures were successfully transmitted and received, helping validate the transition from Python simulation to COSMOS-based testing.
Week 9 (07/20-07/23) Slides:
https://docs.google.com/presentation/d/1FEIdRKu7icKcB6puVt1UXIumoA9nuxX8QAtHoqA6Wq4/edit?usp=sharing
This week, I developed a preliminary NS-3 communication-window simulation for a lunar rover over a full 29.5-day lunar cycle. Using Python with NS-3, I modeled four possible communication links: a surface base station, lunar orbiter, relay satellite, and direct Earth link. The base station was kept continuously available, while the other links were assigned repeated contact windows based on simplified assumptions. During each available period, the simulation sent beacon packets to the rover and recorded the results using NS-3’s FlowMonitor. I also exported the communication-window and packet data to CSV files and created a timeline visualization showing when each link was available throughout the simulated lunar cycle.