Google Summer of Code (GSoC)¶
GSoC is a Google-sponsored event to get students involved in Open Source projects (Website)
- Google Summer of Code (GSoC)
- List of ideas
- GNU Radio Development
- (Digital) Signal Processing Components
- USRP/Hardware related projects
- Applying as a student
- List of ideas
List of ideas¶
Please post project ideas here. Make sure to include a description of the project, ideally including prerequisites and an expected outcome. For an idea how this could look like, check out the KDE idea list.
Projects are sorted by category. If you feel your project idea does not match an existing category, create a new one. If you're posting an idea, consider if you can mentor this project, and put your name down.
GNU Radio Development¶
Integration of GNU Radio into Eclipse.¶
Details: Create a development environment for GNU Radio based on Eclipse (see also: Call20120119). The goal is to make the entry point into GNU Radio easier for beginners. The Eclipse extension could help in the actual coding process (e.g. code completion, knowledge of GNU Radio modules etc.) but also provide graphical tools (possibly a GRC integration).
Performance metric suite for GNU Radio¶
Details: Build a set of performance measurement tools for GNU Radio to enable accurate measurement of a variety of metrics including processor load, throughput (of a flow-graph) and end-to-end latency. For example, an existing set of patches to GNU Radio (and a Linux libc include file) was developed to measure latency between GNU Radio and the USB-based USRP1(ArchitecureLatencyMeasurements). However, this has not been updated to use the UHD interface, and therefore does not work with the network-based or embedded varieties of the USRP family, and also was not intended for end-to-end latency measurements of a complete flowgraph. In addition, with the development of the VOLK library to provide platform-specific, optimized signal processing blocks, having a general purpose tool to measure application-level metrics is even more important. The goal is to build a suite of performance measurement tools that can track end-to-end application-level metrics such as latency, and complements profiling tools such as OProfile to help guide optimization work.
Knowledge Prerequisite: General Linux/Unix programming
Access to USRPs required.
Mentor: Doug Geiger
Details: GNU Radio-fying and extending the DRM software radio DREAM.
Details: DRM (Digital Radio Mondiale) is a standard that is used for digital HF broadcasting. DRM transmission can be used for global communications due to the special properties of electromagnetic waves in the HF (0.3 MHz - 30 MHz) bands. A GNU Radio DRM receiver would hence be of use for anyone anywhere in the world interested in radio communications. An extension is the new and coming VHF/UHF broadcasting standard DRM+, that might well replace analog FM broadcasting in the long run. A starting point for development is the existing code base of the DREAM project. Porting this code to GNU Radio will yield many signal processing blocks that are necessary in any communication system and will allow easy extension and improvement of the standard. For example, a global data communication link could be created with GNU Radio by replacing the payload with IP packets.
Knowledge prerequisite: Signal processing, some C++
Mentor: Jens Elsner (CEL, KIT)
Details: Build a vector-network analyzer app (qtgui based) that can show PSD, constellations, maybe other representations of the signal. Demodulate some basic modulation schemes (BPSK, QPSK, GMSK, QAM, etc.).
Details: Channel sounding describes the process of measuring a multipath propagation channel and obtain information about excess delay, Doppler spread and fading properties. The final product should make use of USRPs for channel sounding (the high timing constraints require use of the FPGA) and provide a complete measurement tool which can be used to gather statistics about mobile communication channels.
Knowledge prerequisite: Digital signal processing basics, FPGA basics
Access to USRPs required.
Mentor: Johnathan Corgan
Details: Global Navigation Satellite Systems provide location and timing information to users based on the synchronization of signals coming from different satellites of a given constellation. Recently, the modernization of GPS and Glonass, and the advent of the European Galileo and Chinese Compass/Beidou, open a new scenario with a bunch of new signals and ways to combine them in order to improve accuracy and reliability of navigation receivers. This project aims to develop an open-source, freely available tool able to provide precise positioning and timing to users by taking advantage of existing (or forthcoming) civil GNSS signals. A first step, consisting of a GPS L1 software receiver, is currently being developed at (GNSS-SDR) using the GNU Radio framework (C++ only).
Knowledge prerequisite: Digital signal processing basics, modern C++ style (with C++11 in mind)
Mentor: Carles Fernández-Prades (CTTC), more mentors available.
(Digital) Signal Processing Components¶
Extend and improve the filter design components¶
Project description: This project has two main sub-components:
- Extend and test the filter design routines
- Improve the user interface
The first part requires some in-depth knowledge of digital filter theory, so some DSP knowledge would be very useful. The most critical missing component in the current filter design methods (and therefore one which should definitely be approached during this project) is a method to estimate the number of required taps for the Parks-McClellan method of filter design, given a tolerance mask. Also, there are filter types which are not at all designable with the current tools, e.g. half-band filters, cascaded filters and all types of IIR filters.
In its current state, the filter design code is not filled with an abundance of unit tests, and some 'fringe' examples of filters may not even work. This would be a good time to add some filter tests and maybe crush some bugs.
The user interface also needs improvement. In the current state, there's a graphical filter design tool (gr_filter_design.py), but that could be greatly improved (starting with including the newly developed filter design methods). However, the GUI offers graphical possibilities for filter design which go beyond the mere filter design algorithms, e.g. mouse-draggingg poles/zeros (and then seeing the filter response change graphically in a different window), or sketching filter responses and then checking how well such a filter can be designed. A good example of a GUI for filter design is fdatool which comes with Matlab, but who says this is how the best GUI should look?
Of course, the UI doesn't stop at gr_filter_design.py. Since filter taps are rarely needed by themself, but rather as part of a flow graph, the integration of the filter design in the rest of GNU Radio is something to consider. GRC should be able to make use of the GUI to import taps directly into filter blocks, and maybe the filter design code exposed to the Python and C++ domains could be more user-friendly.
If you apply for this project, it is not expected that you do every single item in this project description, it is meant as a starting point (but also a guideline). Own ideas regarding the filter design components are encouraged, and since some flaws will only come to light while working with this module, it might expose further to-do items.
Knowledge prerequisite: Digital signal processing (esp. digital filters), some C++ & Python
Mentor: Martin Braun
Generic compressive sensing framework¶
Details: By correlating the incoming signal with pseudo-random sequences, it may become possible to obtain the entire 100 MHz spectrum at once via Ethernet, albeit in a different base than the usual regular sampling time base. One proven application for this is Compressed Spectral Estimation. This project includes developing an FPGA image to correlate with pseudo-random sequences.
Knowledge prerequisite: Some FPGA experience, basic digital signal processing
USRP/Hardware related projects¶
AGC loop for the USRP.¶
Details: Make an AGC loop for the USRP (i.e., in hardware with direct, low-latency control over analog gain stages).
Access to USRPs required.
Applying as a student¶
If you're interested in participating as a student, have a look at the GSoC student FAQ. Some points are worth highlighting here:
- Don't hesitate to contact us beforehand. Of course we have no influence on whether or not you're accepted, but to figure out details about your project it might be worth taking the time.
- Check the eligibility criteria before applying.