Drone FPGA Radio-Telescope Beam Mapping
We will fly a large hexacopter drone with a weak radio transmitter to calibrate the beam pattern of a radio telescope. Our on-campus “telescope” is a dish antenna on an amateur astronomy telescope mount that can bring outside and point it in different direction to map out its beam pattern.
The group will mostly need help actually going out and flying, taking data, analyzing data, improving the system, and writing a paper and conference talk.
We transmit a custom wide-band signal out of a fast FPGA-controlled digital to analog converter (DAC) with 16-bit samples at 4 GHz. We receive the signal with an equally-fast analog to digital converter (ADC). We perform digital signal processing (DSP) with Fast Fourier Transforms (FFTs) to compare how much of the transmitted signal. This basically makes our own software defined radio (SDR).
I have written custom Verilog code and python to transmit and receive fixed-length arrays. Pieces of the project you'd help with include:
- Working with the FPGA to send samples out of a GHz digital-to-analog converter (DAC) and retrieve samples from a GHz analog-to-digital converter (ADC), store them and analyze them (python, numpy, scipy, jupyter-lab, matplotlib, bokeh).
- Radio frequency (RF) work with amplifiers and antennas.
- Programming flight paths of the drone and analyzing the data that comes out (python, ardupilot, PX4).
- Synchronizing the radio samples with the drone GPS and orientation data (linux, networking).
- Lots of detailed GPS positioning and timing.
- If needed, improve the mechanical mount for the antenna and transmitter on the drone, along with a mount for our test "radio telescope" antenna on the ground. (Laser cutter, 3D printing).
- Making the electrical system of the drone and radio robust and reliable on battery power (Circuits and soldering).
Please list your relevant experience, detailing your particular contribution to any group projects. Relevant skills include the above, but also any of:
- All software is numpy-based python running on Linux, so experience in Linux, especially with things like low-level networking and serial ports would be relevant.
- C or C++ array and pointer management at the level of CS70
- Computer architecture at the level of E85
- Digital signal processing at the level of E101
Not all of this background is required, but to accept any ambitious 1st or 2nd year students, I'd need to be convinced of your ability to independently pick up a useful subset.
You must be willing to commit 4 or 8 hours/week on this project for 1 or 2 units of credit / no credit. The lab is pretty full, so I may accept 0 or 1 new students. There will be a separate application for summer, funding pending, which would require committing to 10 weeks, usually starting the first or second week.
Drones and software-defined radio are fun and emerging technologies. The project will help radio astronomy research. My group also does optics and quantum entanglement work, but this project is unrelated.