Pages

Sunday, April 10, 2016

Determining the radiant of a meteor using Graves radar (III): the details

In my previous post I explained what we did and what results we got. In this post I'll show you the technical details behind the experiment, with some hints and tips in the case you want to replicate it. As a guide, I'll solve a meteor step by step, from the wav file to the radiant, and then, the final orbit around the sun.

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

This plots into this:

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.gz

The 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

2 comments:

  1. Hello, I am trying to use your approach on our Bolidozor network data.
    But 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?

    ReplyDelete
  2. No, it is not. Contact me at ea4eoz @ gmail . com and we can see what is happening.

    ReplyDelete