Measuring the WAV
Once a meteor have been found in the common audio stream, a small wav file is extracted containing the meteor. We extract the meteor +/- 5 seconds, so a 10 second long wav file is extracted.The first data we need is the time of appearance, in UTC. This will be needed later to project the radiant position into the real right ascension and declination in the sky. For convenience, we call the wav files with the UTC time of appearance of the meteor, in the format YYYYMMDD-hhmmss.wav
Figure 1: The 20151119-021356 meteor spectrogram generated with Sox
The next step is to analyze the wav in the frequency domain, this is, to do a FFT of it. After many tests, we finally concluded a 256 point FFT with 50% overlap is a nice compromise between frequency and time resolution. Because wav files are recorded at 8 kHz sample rate, we get a frequency resolution of 15.625 Hz, and a time resolution of 16 ms.
With this, we get a nice spectrogram of the wav file, but we do not store / want the complete spectrogram. For each time slice, we store only the frequency bin with the largest value. A nice improvement over this, is to find the frequency bin with the largest value and the two bins around it. Then a barycenter operation is performed with them. It is the same operation as finding the center of mass of three bodies along a line, but change mass with bin value, and positions with frequencies.
We used an Octave script called wav2obs to do this and you can download it with the rest of scripts at the end of this article to solve the meteor by yourself. The script is called, for example, in this way:
./wav2obs 20151119-021356.wav > 20151119-021356.obs
The obs.file we get in this way has a very simple structure: a lot of test lines with only three columns: Observer, time, and frequency. Observer is one number. We use 1 for EB3FRN, 2 for EA4EOZ, and 3 for EA1FAQ, the same order as the channels in the wav file. The first lines of the OBS file for 20151119-021356 meteor are:
#F 20151119-021356
1 0.000125 774.987
1 0.016125 -249.073
1 0.032125 85.048
1 0.048125 -30.899
1 0.064125 378.374
1 0.080125 -373.841
1 0.096125 -465.318
1 0.112125 -717.942
...
For "historic reasons", we write the UTC of the meteor in a comment in the first line. Because this data has X/Y structure it can be plotted easily with GnuPlot using this command:
plot '20151119-021356.obs' using ($1==1?$2:1/0):3 title 'EB3FRN', '20151119-021356.obs' using ($1==2?$2:1/0):3 title 'EA4EOZ', '20151119-021356.obs' using ($1==3?$2:1/0):3 title 'EA1FAQ'
Figure 2: Plotting of 20151119-021356.obs file. Click to enlarge.
We are seeing an spectrogram, were only the maximum amplitude for each timestamp is plotted. If you look carefully, you can see the meteor traces. Just compare it with the image at figure 1.
Now, we can zoom into the graph, to see in detail the head echoes:
Figure 3: Detail of 20151119-021356 head echoes. Click to enlarge.
Now it comes the tricky (and manual part). With the aid of a simple text editor, we need to remove any line from the obs file not containing head echo data we want. It seems difficult, but you can see the time span of the head echoes at every receiver, so with some practise it is quite easy. Once the superfluous data have been removed, we get this much simpler and smaller data file:
#F 20151119-021356
1 4.640125 465.642
1 4.656125 439.014
1 4.672125 414.039
1 4.688125 383.405
1 4.704125 358.443
1 4.720125 324.786
1 4.736125 301.889
1 4.752125 269.486
1 4.768125 239.583
1 4.784125 205.205
1 4.800125 177.205
1 4.816125 152.537
1 4.832125 130.794
1 4.848125 100.820
1 4.864125 72.083
1 4.880125 53.575
1 4.896125 11.129
2 4.640125 84.557
2 4.656125 64.075
2 4.672125 41.569
2 4.720125 -46.719
2 4.736125 -66.489
2 4.752125 -104.907
2 4.768125 -128.490
2 4.784125 -164.639
2 4.800125 -181.213
2 4.816125 -205.877
2 4.832125 -229.338
3 4.640125 273.820
3 4.656125 243.796
3 4.672125 216.810
3 4.688125 192.774
3 4.704125 165.067
3 4.720125 142.298
3 4.736125 118.721
3 4.752125 92.431
3 4.768125 69.454
3 4.784125 44.994
3 4.816125 -24.743
3 4.832125 -43.337
3 4.848125 -62.042
3 4.864125 -93.826
3 4.880125 -130.322
3 4.896125 -166.066
3 4.928125 -217.489
3 4.944125 -239.495
3 4.992125 -314.724
3 5.008125 -347.049
Figure 3: The cleaned / final 20151119-021356.obs file plotted. Click to enlarge.
Some attempts have been made to automate this process, but we didn't found yet an algorithm capable to detect automagically the head echoes, so all meteor files are "cleaned" by hand. It seems a hard process but once you are used to it, and using any text editor with GnuPlot as a visual helper, it is easy and fast.
Once the obs file is cleaned, it is passed to the solver.
The meteor solver
The meteor solver is the heart of the experiment. It uses the obs file created previously and the positions of transmitter and receiver sites to fit a meteor trajectory to the given doppler data. The first step to program a meteor solver is to choose the coordinate system. Any conceivable coordinate system will provide the same results, but some coordinate systems are more useful than others, or easier to manage, or easier to define boundaries.
Two coordinate systems were tested with identical results. One was spherical and centered at the transmitter site. The other one was geocentric. For simplicity, the geocentric one will be used here.
Figure 4: Geocentric coordinate system
In a geocentric coordinate system, a meteor trajectory can be determined with a point P (Px, Py, Pz) and a velocity vector V (Vx, Vy, Vz). A meteor at point P, moving with velocity V will produce a determined doppler trace at each receiver. The solver will change the point P and velocity V trying to match the calculated values with the observed ones.
This process is done using a least squares curve fitting algorithm. There are many functions out there doing this. We used Octave's nonlin_residmin function. These kind of functions receive a starting point, a set of boundaries, and a second function. This second function is the one who calculates the doppler produced by the meteor nonlin_residmin is trying. Then nonlin_residmin will decide, based in its own algorithm, if (for example) increase Vx or decrease Pz to match the doppler calculation with the observed data.
Like most least squares minimizers, nonlin_residmin needs a starting point. With this starting point the minimizer will do its magic and will find a solution, a point P in the space with a velocity V matching as close as possible the given doppler data in the obs file. But sometimes the minimizer is not able to find a match, or sometimes the match is not good because the minimizer finds a local minimum it does not know how to go out. This is the reason the minimizer must be called several times, each time with a different initial point (and velocity).Each time there will be one slightly different result, unless the minimizer falls into a local minimum. In this case the result will be very different and not look anything to the observed doppler traces.
Also, some boundaries must be applied to the search of solutions:
- Visible (over the horizon) from Graves and the three receivers: if the calculated meteor is not visible from any of the points, it could not produce the observed doppler.
- Height above sea level between 80 and 120 km (approx.): most meteors are detected at this range.
- Velocity between 12 and 72 km/s: Meteors under 12 km/s will fall into the sun, and over 72 km/s will escape the solar system, so the velocity must be between these values for a meteoroid orbiting the sun..
- Moving in a straight line with no appreciable (de)acceleration: Many studies have shown there is no appreciable deceleration in incoming meteoroids.
- Falling from the sky (this is moving up-down): This is important. A down-up moving meteoroid can't be the trajectory we are looking for.
- Inside the area illuminated by Graves: This is one of the most interesting boundaries. Graves does not use an omnidirectional antenna. It uses a sectored directional antenna capable to illuminate the ionosphere up to about 300km. Also it beams from east to west passing by the south, so no meteors can be illuminated north of Graves.
If a meteor trajectory is inside these boundaries, it is a good candidate.
At this point we call the nonlin_residmin function several times, and each time it will give us a different result. How can we choose the best one? One of the data nonlin_residmin give to us is the RMS error between the observed values and the calculated doppler for the trajectory it finds. The lower the number, the better the match.
So we call nonlin_residmin 100 times, and sort all result by ascending RMS error. The one with the lower RMS error is taken as the result for the observed meteor.
For this, the solver is split into two files. The first one is a bash script who call the real solver using Octave. Then the script sort the results by ascending RMS error and creates the final report.
Solving the meteor
Once you have cleaned the obs file created by wav2obs, solving the meteor is as easy as:
./solver 20151119-021356.obs
If you didn't clean it, you can copy the provided file 20151119-021356_clean.obs to 20151119-021356.obs and proceed. After a while, you will get the file with the results, called 20151119-021356.txt. It will be something like this:
###############################################################################################
#
# Meteor: 20151119-021356
# tstart: 4.640125
#
# Px Py Pz Vx Vy Vz Lon Lat Asl Ra Dec Vel RMS
#====== ====== ======= ====== ===== ===== ===== ====== ====== ====== ====== ===== ===========
4450.6 507.4 4692.0 -23.2 11.2 -6.0 6.50 46.52 120.00 65.5 13.1 26.4 5.35833
4455.0 512.1 4687.4 -23.3 11.1 -6.3 6.56 46.46 120.00 65.7 13.7 26.6 5.35911
4455.0 512.1 4687.4 -23.3 11.1 -6.3 6.56 46.46 120.00 65.7 13.7 26.6 5.35911
4455.0 512.1 4687.4 -23.3 11.1 -6.3 6.56 46.46 120.00 65.7 13.7 26.6 5.35911
4455.0 512.1 4687.4 -23.3 11.1 -6.3 6.56 46.46 120.00 65.7 13.7 26.6 5.35911
4455.0 512.1 4687.4 -23.3 11.1 -6.3 6.56 46.46 120.00 65.7 13.7 26.6 5.35911
4455.0 512.1 4687.4 -23.3 11.1 -6.3 6.56 46.46 120.00 65.7 13.7 26.6 5.35911
4450.0 506.9 4692.6 -23.1 11.2 -5.9 6.50 46.52 120.00 65.5 13.0 26.4 5.36005
4450.0 506.9 4692.6 -23.1 11.2 -5.9 6.50 46.52 120.00 65.5 13.0 26.4 5.36006
4448.7 505.3 4694.0 -23.1 11.2 -5.8 6.48 46.54 120.00 65.5 12.8 26.3 5.36021
4449.7 506.7 4692.9 -23.1 11.2 -5.9 6.50 46.53 120.00 65.5 13.0 26.4 5.36029
4448.4 504.9 4694.4 -23.1 11.2 -5.8 6.48 46.55 120.00 65.4 12.7 26.3 5.36075
4452.5 509.7 4690.0 -23.2 11.1 -6.1 6.53 46.49 120.00 65.7 13.4 26.5 5.36085
4452.5 509.8 4690.0 -23.2 11.1 -6.1 6.53 46.49 120.00 65.7 13.4 26.5 5.36085
4448.3 504.8 4694.4 -23.1 11.2 -5.8 6.47 46.55 120.00 65.4 12.7 26.3 5.36086
4456.4 513.8 4685.8 -23.3 11.1 -6.4 6.58 46.44 120.00 65.8 14.0 26.6 5.36166
4447.7 504.2 4695.1 -23.1 11.2 -5.7 6.47 46.56 120.00 65.4 12.6 26.3 5.36182
4448.3 505.1 4694.4 -23.1 11.2 -5.8 6.48 46.55 120.00 65.5 12.8 26.3 5.36201
4460.3 517.9 4681.7 -23.5 11.1 -6.7 6.62 46.38 120.00 66.0 14.6 26.8 5.37181
4461.1 518.8 4680.8 -23.5 11.1 -6.8 6.63 46.37 120.00 66.0 14.7 26.9 5.37404
4461.1 518.8 4680.8 -23.5 11.1 -6.8 6.63 46.37 120.00 66.0 14.7 26.9 5.37404
4461.1 518.8 4680.8 -23.5 11.1 -6.8 6.63 46.37 120.00 66.0 14.7 26.9 5.37409
4461.1 518.8 4680.8 -23.5 11.1 -6.8 6.63 46.37 120.00 66.0 14.7 26.9 5.37412
4463.3 521.2 4678.5 -23.6 11.1 -7.0 6.66 46.34 120.00 66.1 15.0 27.0 5.38399
4466.4 524.5 4675.2 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40025
4466.4 524.5 4675.2 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40025
4466.4 524.5 4675.2 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40026
4466.4 524.6 4675.2 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40028
4466.4 524.6 4675.2 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40028
4466.4 524.6 4675.2 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40028
4466.4 524.6 4675.2 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40029
4466.4 524.6 4675.2 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40029
4466.4 524.6 4675.2 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40029
4466.4 524.6 4675.2 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40029
4466.4 524.6 4675.2 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40030
4466.4 524.6 4675.2 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40030
4466.4 524.6 4675.2 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40030
4466.4 524.6 4675.2 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40030
4466.4 524.6 4675.2 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40032
4466.4 524.6 4675.2 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40032
4466.4 524.6 4675.2 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40032
4466.4 524.6 4675.2 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40032
4466.4 524.6 4675.2 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40037
4466.4 524.6 4675.2 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40038
4466.4 524.6 4675.2 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40038
4466.4 524.6 4675.2 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40038
4466.4 524.6 4675.2 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40041
4466.4 524.6 4675.2 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40043
4466.4 524.6 4675.1 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40044
4466.4 524.6 4675.1 -23.7 11.0 -7.2 6.70 46.30 120.00 66.3 15.5 27.1 5.40045
4434.0 489.0 4709.5 -22.6 11.2 -4.7 6.29 46.74 120.00 65.0 10.6 25.7 5.42374
4423.5 476.2 4720.6 -22.3 11.2 -3.9 6.14 46.89 120.00 64.7 9.0 25.3 5.51162
4404.0 450.9 4741.2 -21.9 10.9 -2.9 5.85 47.15 120.00 64.8 6.7 24.6 5.71342
4402.5 448.9 4742.8 -21.9 10.9 -2.8 5.82 47.17 120.00 64.8 6.5 24.6 5.72693
4400.5 446.0 4744.9 -21.8 10.8 -2.7 5.79 47.20 120.00 64.9 6.4 24.5 5.74424
4398.0 442.5 4747.5 -21.8 10.8 -2.6 5.75 47.23 120.00 65.0 6.2 24.5 5.76315
4397.0 441.0 4748.5 -21.8 10.7 -2.6 5.73 47.25 120.00 65.1 6.2 24.5 5.77006
4396.3 440.0 4749.3 -21.8 10.7 -2.6 5.72 47.26 120.00 65.1 6.1 24.4 5.77487
4396.3 439.9 4749.3 -21.8 10.7 -2.6 5.71 47.26 120.00 65.1 6.1 24.4 5.77509
4396.2 439.9 4749.3 -21.8 10.7 -2.6 5.71 47.26 120.00 65.1 6.1 24.4 5.77525
4396.2 439.8 4749.4 -21.8 10.7 -2.6 5.71 47.26 120.00 65.1 6.1 24.4 5.77553
4396.1 439.8 4749.4 -21.8 10.7 -2.6 5.71 47.26 120.00 65.1 6.1 24.4 5.77575
4396.1 439.8 4749.4 -21.8 10.7 -2.6 5.71 47.26 120.00 65.1 6.1 24.4 5.77579
4396.1 439.7 4749.5 -21.8 10.7 -2.6 5.71 47.26 120.00 65.1 6.1 24.4 5.77626
4396.1 439.6 4749.5 -21.8 10.7 -2.6 5.71 47.26 120.00 65.1 6.1 24.4 5.77631
4396.1 439.6 4749.5 -21.8 10.7 -2.6 5.71 47.26 120.00 65.1 6.1 24.4 5.77631
4396.1 439.6 4749.5 -21.8 10.7 -2.6 5.71 47.26 120.00 65.1 6.1 24.4 5.77634
4396.1 439.6 4749.5 -21.8 10.7 -2.6 5.71 47.26 120.00 65.1 6.1 24.4 5.77635
4396.0 439.6 4749.5 -21.8 10.7 -2.6 5.71 47.26 120.00 65.1 6.1 24.4 5.77636
4396.1 439.6 4749.5 -21.8 10.7 -2.6 5.71 47.26 120.00 65.1 6.1 24.4 5.77636
4396.1 439.6 4749.5 -21.8 10.7 -2.6 5.71 47.26 120.00 65.1 6.1 24.4 5.77636
4396.1 439.6 4749.5 -21.8 10.7 -2.6 5.71 47.26 120.00 65.1 6.1 24.4 5.77636
4396.0 439.6 4749.5 -21.8 10.7 -2.6 5.71 47.26 120.00 65.1 6.1 24.4 5.77637
4396.0 439.6 4749.5 -21.8 10.7 -2.6 5.71 47.26 120.00 65.1 6.1 24.4 5.77638
4396.0 439.6 4749.5 -21.8 10.7 -2.6 5.71 47.26 120.00 65.1 6.1 24.4 5.77639
4396.0 439.6 4749.5 -21.8 10.7 -2.6 5.71 47.26 120.00 65.1 6.1 24.4 5.77640
4396.0 439.6 4749.6 -21.8 10.7 -2.6 5.71 47.26 120.00 65.1 6.1 24.4 5.77652
4396.0 439.6 4749.6 -21.8 10.7 -2.6 5.71 47.26 120.00 65.1 6.1 24.4 5.77666
4395.9 439.4 4749.7 -21.8 10.7 -2.6 5.71 47.26 120.00 65.1 6.1 24.4 5.77718
4395.8 439.2 4749.8 -21.8 10.7 -2.6 5.71 47.26 120.00 65.2 6.1 24.4 5.77819
4394.7 437.7 4750.9 -21.8 10.7 -2.6 5.69 47.28 120.00 65.2 6.0 24.4 5.78414
4391.9 433.5 4753.9 -21.8 10.6 -2.5 5.64 47.32 120.00 65.4 5.9 24.4 5.79816
4390.2 430.8 4755.7 -21.8 10.5 -2.5 5.60 47.34 120.00 65.5 5.9 24.3 5.80391
4392.7 436.3 4753.0 -21.7 10.5 -2.6 5.67 47.30 120.00 65.4 6.2 24.3 5.86990
4396.9 442.9 4748.5 -21.8 10.7 -2.8 5.75 47.25 120.00 65.2 6.5 24.4 5.87268
4390.1 432.5 4755.6 -21.7 10.5 -2.6 5.63 47.34 120.00 65.6 6.2 24.3 5.88495
4390.1 432.5 4755.6 -21.7 10.5 -2.6 5.63 47.34 120.00 65.6 6.2 24.3 5.88497
4390.1 432.5 4755.6 -21.7 10.5 -2.6 5.63 47.34 120.00 65.6 6.2 24.3 5.88499
4392.8 207.7 4741.0 -27.4 9.2 -0.6 2.71 47.34 100.00 72.7 1.2 29.0 84.08326
4393.0 204.4 4741.0 -27.5 9.1 -0.7 2.66 47.34 100.00 72.9 1.4 28.9 84.42043
4462.8 414.0 4662.0 -21.8 16.3 3.2 5.30 46.32 100.00 54.5 -6.8 27.3 88.63254
4389.7 265.0 4741.0 -26.6 11.2 1.4 3.46 47.34 100.00 68.5 -2.8 28.9 91.48628
4492.1 397.3 4635.4 -16.6 13.8 3.7 5.05 45.98 100.00 51.5 -9.8 21.9 124.91671
4503.4 382.6 4625.7 -12.9 11.5 3.5 4.86 45.85 100.00 49.5 -11.5 17.7 137.46213
4396.2 115.1 4741.0 -25.9 7.2 -2.9 1.50 47.34 100.00 75.8 6.2 27.0 157.86826
4407.9 547.5 4727.4 -10.7 3.6 -4.0 7.08 46.97 120.00 72.5 19.4 12.0 196.12826
4618.5 120.9 4526.0 -0.0 -0.0 -12.0 1.50 44.60 100.00 173.3 90.0 12.0 2101.37981
4618.5 120.9 4526.0 0.0 -0.0 -12.0 1.50 44.60 100.00 182.3 90.0 12.0 2101.37981
4462.9 443.3 4659.2 0.0 0.0 -12.0 5.67 46.28 100.00 337.7 90.0 12.0 2789.84453
4421.2 115.8 4717.9 -7.0 2.1 -9.5 1.50 47.04 100.00 74.4 52.5 12.0 3873.76462
#
# RMS: 5.35833
#
# 1 0.000 465.642 0.567 466.209
# 1 0.016 439.014 -0.520 438.494
# 1 0.032 414.039 -3.345 410.694
# 1 0.048 383.405 -0.597 382.808
# 1 0.064 358.443 -3.606 354.837
# 1 0.080 324.786 1.995 326.781
# 1 0.096 301.889 -3.250 298.639
# 1 0.112 269.486 0.924 270.410
# 1 0.128 239.583 2.513 242.096
# 1 0.144 205.205 8.491 213.696
# 1 0.160 177.205 8.004 185.209
# 1 0.176 152.537 4.098 156.635
# 1 0.192 130.794 -2.819 127.975
# 1 0.208 100.820 -1.592 99.228
# 1 0.224 72.083 -1.689 70.394
# 1 0.240 53.575 -12.102 41.473
# 1 0.256 11.129 1.336 12.465
# 2 0.000 84.557 0.070 84.627
# 2 0.016 64.075 -5.417 58.658
# 2 0.032 41.569 -8.966 32.603
# 2 0.080 -46.719 0.629 -46.090
# 2 0.096 -66.489 -6.007 -72.496
# 2 0.112 -104.907 5.916 -98.991
# 2 0.128 -128.490 2.916 -125.574
# 2 0.144 -164.639 12.394 -152.245
# 2 0.160 -181.213 2.208 -179.005
# 2 0.176 -205.877 0.023 -205.854
# 2 0.192 -229.338 -3.454 -232.792
# 3 0.000 273.820 0.250 274.070
# 3 0.016 243.796 4.152 247.948
# 3 0.032 216.810 4.928 221.738
# 3 0.048 192.774 2.667 195.441
# 3 0.064 165.067 3.990 169.057
# 3 0.080 142.298 0.286 142.584
# 3 0.096 118.721 -2.697 116.024
# 3 0.112 92.431 -3.055 89.376
# 3 0.128 69.454 -6.814 62.640
# 3 0.144 44.994 -9.179 35.815
# 3 0.176 -24.743 6.643 -18.100
# 3 0.192 -43.337 -1.854 -45.191
# 3 0.208 -62.042 -10.329 -72.371
# 3 0.224 -93.826 -5.813 -99.639
# 3 0.240 -130.322 3.325 -126.997
# 3 0.256 -166.066 11.621 -154.445
# 3 0.288 -217.489 7.881 -209.608
# 3 0.304 -239.495 2.171 -237.324
# 3 0.352 -314.724 -6.288 -321.012
# 3 0.368 -347.049 -2.039 -349.088
#
# Hardness: 216
#
You can see the report have three different parts.
The first one is a small header, containing the meteor name / UTC time and the value of tstart. Tstart is the time value from the obs file taken as t-zero, this is, the point of the wav file the calculations are made for.
The second one are the results. 100 lines with the results. You can see how the RMS error grows as you move down the list. The columns are:
Px, Py, Pz: Meteor position in geocentric system, in km.
Vx, Vy, Vz: Meteor velocity vector in geocentric system, in km.
Lon, Lat, Asl: Meteor longitude / latitude in degrees and height in km over sea level.
Ra, Dec, Vel: Radiant's right ascension / declination in degrees and meteor velocity in km/s.
RMS: Root mean squared error, in Hz.
The third part is the residuals of the best match. It consists in 5 columns. The first 3 ones are the ones in the obs file: receiver, time and measured doppler. The fourth column is the difference between the calculated doppler at that time and the observed value. The fifth column is just the calculated doppler value for that time. In other words, column 3 plus column 4.
The hardness value is the number of times the solver function have been called to get the 100 results: a crude measure of how difficult / easy is to solve the meteor.
As you can see, the solution with lower RMS is at Ra = 65.5º, Dec = +13.1º moving at 26.4km/s: according to the 2015 IMO Calendar, it fits nicely into the southern taurid shower:
Figure 5: Calculated radiant for 20151119-021356 meteor
The same solution says the meteor was at longitude = 6.50º, latitude = 46.52º, 120 km above sea level, this is almost over Lausanne, in Switzerland:
Figure 6: 20151119-021356 meteor over Switzerland
Having a point in the space, and a velocity, it is easy to calculate the orbit around the sun. The procedure is described in many places in Internet so I will skip the details.
Figure 7: 20151119-021356 orbit around the sun.
The red orbit is the calculated orbit. The blue one is from 2P/Encke, the progenitor of southern taurid shower. As you can see there are many simmilarities between them. The orbit in olive color is earth's orbit.
Software
You can download a tar.gz file containing the meteor wav file and scripts here: meteorsolver.tar.gzThe files included are:
20151119-021356.wav: Original 3 channel wav file with the meteor audio.
20151119-021356.png: Spectrogram of the wav file made with Sox.
20151119-021356_raw.obs: Obs file created with wav2obs using the wav file.
20151119-021356_clean.obs: Obs file with only relevant head echo data.
20151119-021356_results.txt: Example of solver output for this meteor
solver: The meteor solver bash script.
solver.m: Octave script implementing the meteor solver algorithm. This file is called by solver bash script.
wav2obs: Produces an obs file from a wav file.
You will need bash, head, grep, sort, tail, mv and a working Octave installation. The Octave scripts have been developed with version 3.8.2 but they must work in any version. You will need octave, octave-optim, octave-control, octave-struct packages and depending libraries. Your package manager will take care of needed dependencies.
Miguel A. Vallejo, EA4EOZ
Hello, I am trying to use your approach on our Bolidozor network data.
ReplyDeleteBut if I run the code with example data e.g. :
./solver 20151119-021356_clean.obs
I get only a header of table, no results are produced overnight... Is it normal behavior of algorithm?
No, it is not. Contact me at ea4eoz @ gmail . com and we can see what is happening.
ReplyDelete