Site Contents
We have developed a 12-channel real-time GPS L1 software receiver running on a general-purpose microprocessor. The receiver highlights are the algorithms for performing bit-wise parallel processing of the spread spectrum CDMA signal. Details can be found in the Institute of Navigation National Technical Meeting proceedings from January 22-24, 2003, or downloaded from my personal page.
We have also successfully demonstrated a dual-frequency civilian GPS L1/L2 software receiver running 10 channels on a 3.2 GHz Pentium 4 PC. A paper describing this receiver can be found in the ION proceedings from Sept. 2004, their website, or my personal page.
Future work will be on a multi-channel Galileo software receiver and DSP and FPGA implementations.
last update: 3.26.2005
contact: bml22 at cornell dot edu
view my homepage
Cascade is a RTLinux (a realtime augmentation to Linux) based GPS receiver that consists of minimal hardware, thus allowing the tracking of satellites, 3-D navigation, etc., to be accomplished in software on a PC. Click here to read more about Cascade.
| GPS Receiver Location | ||||
| Cornell University, New York | S4 Index | TEC | Position Error | Daily Summary Plots |
| Arecibo, Puerto Rico | S4 Index | Position Error | Daily Summary Plots | |
| Bear Lake Observatory, Utah | S4 Index | Position Error | ||
| Haleakala, Maui, Hawaii | S4 Index | TEC | Position Error | Daily Summary Plots |
| Sao Luis, Brazil | S4 Index | TEC | Position Error | Daily Summary Plots |
| Tromso, Norway | S4 Index | TEC | Position Error | Daily Summary Plots |
I've posted changes to the Mitel (GEC Plessey) GPS Architect source code to allow anyone to use the GPS Builder-2 hardware (the ISA card for PCs) under Linux. Follow me
3.3.03: I finished working on the first 12-Channel Real-Time GPS
software receiver recently. I'm taking a break from GPS right now and
working on my dissertation. When returning to the GPS world, I hope to
delve into development of a 12-channel L1/L2 receiver.
12.06.01 18:51:02 UTC: So, we finally have a working PCI version of the GPSBuilder-2 design under Linux. A group at NASA helped out with the hardware by providing designs and intial testing, while I worked on the software interface to the PCI card. (Thanks to Tom at NASA for locating the final bug this morning!!!) Using a PCI card instead of the original ISA card allows for the GPSBuilder-2 design to evade obsolescence which allows a number of us (NASA, Cornell, et al.) to continue our respective research projects...
10.16.01 16:37:02 UTC: I just added another mode of operation to the Cascade receiver. Now, it is possible to force a single channel to monitor and record the background noise (most of which is thermal). This is useful when computing the S4 index since the noise component of the signal should be removed before computing the normalized standard deviation.
9.28.01 14:15:00 UTC: A CME (Cornonal Mass Ejection) event made it to Earth tuesday evening. The effects resulted in serious TEC (total electron content) fluctuations and scintillation effects here. Some preliminary plots can be found here.
8.10.01 13:23:05 UTC: Francisco recently sent me a fix for the timing errors that cause the large jumps in the navigation solution. These timing errors also affect other aspects of receiver performance (time stamps, phase measurements, etc.). I evaluated the fix, first by examining the changes and then testing the altered code. The fix works, is intelligent and was very simple -- kudos to Francisco for the help!
6.9.01 6:23:00 UTC: I've found a bug in the receiver that causes small spikes (on the order of 50 meters) in the navigation solution. The cause of this bug is unknown at the time. I should note that this doesn't affect the ability for the receiver to record scintillation data. Digressing... I also need to add the option of using a noise channel so that the S4 noise floor is closer to 0. If you examine the realtime plots, the floor is about 0.02, but should ideally be 0.
4.11.01 18:53:16 UTC: I added a plot of the satellite positions. Also, I adjusted some of the gcc compilitation options in order to optimize the code. In the upcoming couple weeks, I will begin to write test routines for a PCI version of the GPSBuilder-2 card.
4.3.01 17:35:40 UTC: I moved the code to RTLinux version 3.0 (2.2.19 kernel). Yeah.
3.20.01 16:14:44 UTC: I'm planning on releasing the changes to the GPS Architect source code such that anyone with a Mitel license and the GPS Builder-2 hardware can run the RTLinux GPS receiver. Over the next couple days, I'll begin adding these changes.
3.13.01 18:31:23 UTC: Added a plot of the error in the position of the antenna with respect to an averaged reference positon.
3.7.01 22:04:40 UTC: A realtime plot of the scintillation index (S4) at Cornell University can be viewed here.
2.8.01 20:03:50 UTC: Space Environment Corporation is currently testing our system at Bear Lake Observatory in Utah. Follow this link for realtime scintillation plots. In my spare time in Brazil I updated an ncurses client that I currently use for interfacing the receiver. This interface is simpler and doesn't require the Qt libraries. Also, I finally have a receiver operating at my home. As soon as I get around to mounting the antenna on the roof (currently I can only see southward satellites), I'll provide a URL.
2.5.01 19:52:00 UTC: The field trip to Brazil was immensly successful! We collected fairly noiseless measurments of phase scintillations and amplitude scintillations using Cascade. These scintillations are caused by plasma "bubbles" in the equatorial ionosphere which diffract the GPS signal and cause irregular distortions in phase and amplitude. Examples of results from our campaign can be found here.
12.1.00 15:32:34 UTC: I now have a KF based PLL that averages over a data bit to obtain a better SNR ratio in the phase frequency corrections for the numerically controlled oscillators. Using this PLL allows for good determination of intergrated carrier phase measurements. Here is a plot of intergrated carrier phase noise for 3 satellites over a period of a couple of minutes.
11.16.00 4:00:00 UTC: I got the KF based PLL working tonight! After a bit of toiling I realized that using floating point operations in an interrupt routine is not only potentially hazardous, but it's also not very elegant. Next up: investigate cases when the C/No ratio is small and determine the effects on the PLL.
11.12.00 18:21:14 UTC: Still haven't got that server running at my house, due to security issues and distant priorities. Currently, I'm implementing a Kalman Filter based phase locked loop to track the L1 signal. This will complement the FLL currently being used. The PLL will allow for very precise measurements of phase changes in the L1 signal that are caused by ionospheric structures. We are planning a January 2001 campaign to Brazil to test the equipment.
10.18.00 14:53:37 UTC: Francisco found a subtle task timing discrephancy yesterday. It relates to the fact that we have two clocks in the system; one on the ISA card and the system clock. We are discussing work arounds.
10.18.00 14:51:56 UTC: Here is a paper on migration of DOS code to RTLinux. I'm presenting this paper in Orlando on November 28th at the realtime computing conference.
10.14.00 25:00:01 UTC: Here's a plot of signal power (Wide Band Power) for a few satellites from data I took a couple days ago. The drops in SV 28's WBP isprobably due to our high multipath environment, while 23 moving behind distant buildings while approaching the horizon. This data is sampled at 50Hz from the correlator and is logged to a file. Regarding the Java demo... my new harddrive is on its way, so it'll probably be another week before i get the setup running.
9.24.00 20:17:45 UTC: What's a networked GPS receiver worth if the world can't take a look at it? Not a whole lot, so I decided to write a java applet that displays a bit of information about the reciever, (position, time, # of satellites being tracked...) and also a plot of the error with respect to a reference position. The code's working, but I need to move the server to my house where I have control over the firewall. Expect a demo in a week or so.
9.19.00 3:54:34 UTC: S4 computations are definitely working! Moving on to FSL logging. Also, I'm planning on implementing a phase locked loop that can be used in place of the frequency locked loop.
9.14.00 18:06:32 UTC: screen shot!
9.11.00 19:03:48 UTC: The S4 bug resurfaced, but I have since learned enought to squash it. Should be completely removed after tomorrow. Screen shots will be up tomorrow also.
9.4.00 16:09:12 UTC: One major bug was removed last week. It dealt with calculations of the S4 index, which gives an idea of the standard deviation of signal power. Also, I wrote a simple tty version of the monitoring code that uses TCP sockets and simply displays the position and time of the receiver. Eventually, this version will be able to control the rt mod. Also, Francisco and I are considering submission of a paper to the realtime linux conference in Orlando this November
8.25.00 20:15:43 UTC: Ok, I haven't been doing much on this project lately. I did implement a Carrier/Noise estimator instead of the SNR indicator. Also, the saving of almanac, ephemeris, and iono/UTC data is finished. I need to make some adjustments for uploading the same data to the rt module. Also, implemented passing of the IRQ and base I/O address to the mod, so it isn't hardcoded.
8.9.2000 21:03:00 UTC: COMING SOON...screen shots. After some delay the Fast Scintiallation Logging capabliities are *almost* working. There seems to be a bug in one of the data collection routines, but it should hopefully work itself out tomorrow. After the logging capabilities are completed, I plan on implementing the S4 index output to a FIFO. Also, I performed some adjustements to the TCP server, but there's still a buffer overrun problem. Since my time has recently been diced due to the encroachment of the semester, I am spending less time then I'd like working on this.
8.4.2000 23:21:00 UTC: I've worked out the design and am ready to implement the Fast Scintillation Logging capabilities into our receiver. Did find some bugs in the TCP server, but they will have to wait. Also, Francisco determined a way to pass the irq number, base i/o address and a list of fifos to the realtime module.. essential for configuring the GPS card. ALSO, I received a proposal today for the GPS board population, so Monday I'll send out the boards and parts... turn around time is approximately 2-3 weeks.
8.3.2000 3:52:00 UTC: Today, I got the TCP server to not only recognize multiple clients, but also allow each client to control the rt task (core GPS tracking code) over the TCP connections. There's still a bug in the server that causes it to crash whenever a client disconnects...
8.1.2000 16:00:00 UTC: Slowly we're getting the receiver to a level of robustness that is comfortable. It now collects RINEX2 data, but there seems to be a bug in saving the satellite almanacs.