-
Pages
-
Categories
-
Archives
Category Archives: Development Work
Sources of Position Error
Incorrect pseudoranges can be a source of caluclation errors.
A type 2 PLL should be used.
Integrations/correlations inside the PLL should be done over 10-20ms.
This integration time will be dependent upon the maximum amount of gforce your application will experience.
For a stationary receiver integrations needed to be done faster than 1 second.
For an object traveling at 1 [...]
Adjusting the sampling frequency
Because the pseudoranges are calculated from the sampling frequency of the device, any error in this number could result in the numbers being scaled incorrectly.
At a sampling rate of 16Mhz every Hz away from this is about .16 meters of error for a satellite. When sampling at lower frequencies the effect is more dramatic.
I made [...]
Altitude fluctuaions
I collected a couple of data points to monitor how the altitude changes according to the pseudorange calculations.
If I take the average of the altitude I get 300 meters which is correct.
The pseudoranges do not appear to have a high degree of noise in them, so I am thinking about averaging the last 10 positions [...]
Locating Preamble and Decoding data
Today I figured out why half of my data is being decoded correctly and the other half is not.
Turns out that the D30 bit of the previous word causes bits 1-24 of the next word to be inverted.
These bits need to be reinverted before they can be used.
Steps to locate and confirm the preamble are [...]
Selection of Epoch time.
Update
time
Alignment feature
Error between indexes
Minimum buffer size needed.
Units inside one subframe
1
ms
CA code repeated
18
54
6000
20
ms
Bit transmitted
1
3
300
600
ms
Word transmitted (30) Bits
1
3
10
6
S
Subframe (10 Words)
1
3
1
30
S
Frame (5 subframes)
1
3
12.5
Min
One navigation message
1
3
Began work on implementing the inital Pseudorange calculation.
Current implementation of the data is a buffered loop storage array.
Nice epocs could be calculated easiest if done on one of the following intervals.
If a buffer [...]
Decoding data.
I implemented data decoding routines.
I also started using the gpstk libraries.
After 5 subframes I was able to generate the following ephemeris information using the gpstk libraries.
****************************************************************************
Broadcast Ephemeris (Engineering Units)
PRN : 20
Week(10bt) SOW DOW UTD SOD MM/DD/YYYY HH:MM:SS
Clock Epoch: 499( 499) 439200 Fri-5 216 7200 08/04/1989 02:00:00
Eph Epoch: 499( 499) 439200 Fri-5 216 7200 08/04/1989 [...]
Determining lost signal
Currently developing an algorithm to recognize that a signal was lost.
Current algorithm is as follows.
denotes the signal strength
denotes the current value.
denotes the value N-1 samples ago.
Using a value of N=20 the following graph was generated
The top graph is the calculated signal strength while the bottom graph is the raw data stream.
A zoomed [...]
Flashing the GN3S V1 in Windows
First step is to recompile fx2_programmer so it will work in windows.
Download the fx2_prorammer source code.
Download MinGW
Add its binary path to your system environments path
Download libusb-win32
Copy the usb.h to the fx2_programmer folder
Copy the libusb.a from the lib\gcc folder to the fx2_programmer folder
modify the make file to use libusb.a instead of -lusb
open fx2_programmer.c
change usb.h to use [...]
Flashing the GN3S v1 in linux
The original firm ware on the GN3S v1 has a limitation of approximately 40 seconds. To overcome this the firmware needs to reprogrammed.
Download the new firmware.
The SoftOSGPS project has a valid firmware for download.
http://sourceforge.net/project/showfiles.php_group_id=91538_package_id=271229_release_id=645621
extract the file
browse to /osgps/gn3s-linux/gn3s-linux/bin
Figure out the vendor id and product id
make scan
unplug the device and do this again to determine the [...]