{"id":1710,"date":"2019-08-19T21:51:18","date_gmt":"2019-08-19T19:51:18","guid":{"rendered":"https:\/\/aerospaceresearch.net\/?p=1710"},"modified":"2019-08-19T21:51:18","modified_gmt":"2019-08-19T19:51:18","slug":"gsoc2019planespottingshoumik3-decoding-of-secondary-flight-parameters-and-recording-overlap-checker","status":"publish","type":"post","link":"https:\/\/aerospaceresearch.net\/?p=1710","title":{"rendered":"[GSoC2019|PlaneSpotting|Shoumik|3] Decoding of secondary flight parameters and recording overlap checker."},"content":{"rendered":"\n<h4 class=\"wp-block-heading\"><strong>In the previous blog:<\/strong><\/h4>\n\n\n\n<p>I discussed about how I am decoding the position of the aircraft from 2 ADS-B frames and also from 1 ADS-B frame and a reference position and how I found both handsome and erractic readings.<\/p>\n\n\n\n<p>Let&#8217;s look into how other airborne parameters, such as &#8218;aircraft identity&#8216; and &#8218;velocity&#8216; are being decoded and calculated.<\/p>\n\n\n\n<p>There is a special type of frame which is known as &#8218;Enhanced Mode-S&#8216; frames. They also contain similar information at times like the non-Enhanced Mode-S frames. I will elaborate on both in this blog. <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Frames with downlink format 20 &amp; 21 are known as Enhanced Mode-S frames.<\/pre>\n\n\n\n<p>The following methods were implemented in the code for decoding the information from the ADS-B frames.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Aircraft Identification<\/h3>\n\n\n\n<p>Frames with Downlink Format 17-18 and Type Code 1-4 are known as aircraft identification messages.<\/p>\n\n\n\n<p>The structure of the 56-bit DATA field of any such aircraft identification frame will be as follows:<\/p>\n\n\n\n<table class=\"wp-block-table\"><tbody><tr><td>TC<\/td><td>EC<\/td><td>C1<\/td><td>C2<\/td><td>C3<\/td><td>C4<\/td><td>C5<\/td><td>C6<\/td><td>C7<\/td><td>C8<\/td><\/tr><tr><td>5<\/td><td>3<\/td><td>6<\/td><td>6<\/td><td>6<\/td><td>6<\/td><td>6<\/td><td>6<\/td><td>6<\/td><td>6<\/td><\/tr><\/tbody><\/table>\n\n\n\n<pre class=\"wp-block-preformatted\">TC: Type Code\nEC: Emitter Code\nSecond row signifies the bit-length<\/pre>\n\n\n\n<p>The EC value with regard to the TC value determines the type of aircraft (Such as : Super, Heavy, light etc). When the EC is set to &#8218;zero&#8216; signifies such information is not being transmitted by the aircraft.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">An Airbus A380 is known as 'Super' and a Boeing 777-300ER is known as 'Heavy'. Small, private or training aircrafts such as Cessna 172s are known as 'Light'.<\/pre>\n\n\n\n<p>For determining the callsign a lookup table is used:<\/p>\n\n\n<pre><code>#ABCDEFGHIJKLMNOPQRSTUVWXYZ#####_###############0123456789######<\/code><\/pre>\n\n\n<p>&#8218;#&#8216; signifies a null value and &#8218;_&#8216; signifies a space between two words.<\/p>\n\n\n\n<p>Let us take an Aircraft identifier frame recorded by one of our ground stations:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">a0001910200490f1df2820700716<\/pre>\n\n\n\n<p>Thus the DATA part of this frame is:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">200490f1df2820<\/pre>\n\n\n\n<table class=\"wp-block-table\"><tbody><tr><td>BIN<\/td><td>00100000<\/td><td>000001<\/td><td>001001<\/td><td>000011<\/td><td>110001<\/td><td>110111<\/td><td>110010<\/td><td>100000<\/td><td>100000<\/td><\/tr><tr><td>INT<\/td><td>4<\/td><td>1<\/td><td>9<\/td><td>3<\/td><td>49<\/td><td>55<\/td><td>50<\/td><td>32<\/td><td>32<\/td><\/tr><tr><td>CHAR<\/td><td>[TYPE CODE]<\/td><td>A<\/td><td>I<\/td><td>C<\/td><td>1<\/td><td>7<\/td><td>2<\/td><td>_<\/td><td>_<\/td><\/tr><\/tbody><\/table>\n\n\n\n<p>The integer number corresponds to the corresponding element in the lookup table array.<\/p>\n\n\n\n<p>Thus, the decoded callsign is &#8222;AIC172&#8220; which belongs to Air India on the route 172<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>BDS 2,0 frames are also known as Aircraft Identification Messages. In these frames the first 8 bit of the DATA segment contains the BDS number and the rest is same as the previous one.<\/strong><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Airborne Velocity<\/h3>\n\n\n\n<p>ADS-B frames with Downlink Format 17-18 and TC 19 contain the velocity information of the aircraft.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Subtype 1 (Ground Speed)<\/h4>\n\n\n\n<p>The typical structure of the frame:<\/p>\n\n\n\n<table>\n<thead>\n<tr class=\"header\">\n<th align=\"left\">Position in frame<\/th>\n<th align=\"left\">Position in data block<\/th>\n<th align=\"left\">Length<\/th>\n<th align=\"left\">Abbreviation<\/th>\n<th align=\"left\">Data<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr class=\"odd\">\n<td align=\"left\">33 &#8211; 37<\/td>\n<td align=\"left\">1 &#8211; 5<\/td>\n<td align=\"left\">5<\/td>\n<td align=\"left\">TC<\/td>\n<td align=\"left\">Type code<\/td>\n<\/tr>\n<tr class=\"even\">\n<td align=\"left\">38 &#8211; 40<\/td>\n<td align=\"left\">6 &#8211; 8<\/td>\n<td align=\"left\">3<\/td>\n<td align=\"left\">ST<\/td>\n<td align=\"left\">Subtype<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td align=\"left\">41<\/td>\n<td align=\"left\">9<\/td>\n<td align=\"left\">1<\/td>\n<td align=\"left\">IC<\/td>\n<td align=\"left\">Intent flag<\/td>\n<\/tr>\n<tr class=\"even\">\n<td align=\"left\">42<\/td>\n<td align=\"left\">10<\/td>\n<td align=\"left\">1<\/td>\n<td align=\"left\">RESV_A<\/td>\n<td align=\"left\">Reserved-A<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td align=\"left\">43 &#8211; 45<\/td>\n<td align=\"left\">11 &#8211; 13<\/td>\n<td align=\"left\">3<\/td>\n<td align=\"left\">NAC<\/td>\n<td align=\"left\">Velocity uncertainty (NAC)<\/td>\n<\/tr>\n<tr class=\"even\">\n<td align=\"left\">46<\/td>\n<td align=\"left\">14<\/td>\n<td align=\"left\">1<\/td>\n<td align=\"left\">S_ew<\/td>\n<td align=\"left\">East-West velocity sign<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td align=\"left\">47 &#8211; 56<\/td>\n<td align=\"left\">15 &#8211; 24 change <\/td>\n<td align=\"left\">10<\/td>\n<td align=\"left\">V_ew<\/td>\n<td align=\"left\">East-West velocity<\/td>\n<\/tr>\n<tr class=\"even\">\n<td align=\"left\">57<\/td>\n<td align=\"left\">25<\/td>\n<td align=\"left\">1<\/td>\n<td align=\"left\">S_ns<\/td>\n<td align=\"left\">North-South velocity sign<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td align=\"left\">58 &#8211; 67<\/td>\n<td align=\"left\">26 &#8211; 35<\/td>\n<td align=\"left\">10<\/td>\n<td align=\"left\">V_ns<\/td>\n<td align=\"left\">North-South velocity<\/td>\n<\/tr>\n<tr class=\"even\">\n<td align=\"left\">68<\/td>\n<td align=\"left\">36<\/td>\n<td align=\"left\">1<\/td>\n<td align=\"left\">VrSrc<\/td>\n<td align=\"left\">Vertical rate source<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td align=\"left\">69<\/td>\n<td align=\"left\">37<\/td>\n<td align=\"left\">1<\/td>\n<td align=\"left\">S_vr<\/td>\n<td align=\"left\">Vertical rate sign<\/td>\n<\/tr>\n<tr class=\"even\">\n<td align=\"left\">70 &#8211; 78<\/td>\n<td align=\"left\">38 &#8211; 46<\/td>\n<td align=\"left\">9<\/td>\n<td align=\"left\">Vr<\/td>\n<td align=\"left\">Vertical rate<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td align=\"left\">79 &#8211; 80<\/td>\n<td align=\"left\">47 &#8211; 48<\/td>\n<td align=\"left\">2<\/td>\n<td align=\"left\">RESV_B<\/td>\n<td align=\"left\">Reserved-B<\/td>\n<\/tr>\n<tr class=\"even\">\n<td align=\"left\">81<\/td>\n<td align=\"left\">49<\/td>\n<td align=\"left\">1<\/td>\n<td align=\"left\">S_Dif<\/td>\n<td align=\"left\">Diff from baro alt, sign<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td align=\"left\">82 &#8211; 88<\/td>\n<td align=\"left\">50 &#8211; 56<\/td>\n<td align=\"left\">7<\/td>\n<td align=\"left\">Dif<\/td>\n<td align=\"left\">Diff from baro alt<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\n\n\n<p>These two bits determine the direction at which the aircraft was flying:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">S_ns:\n     1 -> flying North to South\n     0 -> flying South to North\n S_ew:\n     1 -> flying East to West\n     0 -> flying West to East<\/pre>\n\n\n\n<p>The speed and the heading can thus be computed by: <\/p>\n\n\n\n<a href=\"https:\/\/www.codecogs.com\/eqnedit.php?latex=V_{we}&space;=&space;\\begin{cases}&space;-1&space;\\cdot&space;(V_{ew}&space;-&space;1)&space;&#038;&space;\\text{if&space;}&space;s_{ew}&space;=&space;1&space;\\\\&space;V_{ew}&space;-&space;1&space;&#038;&space;\\text{if&space;}&space;s_{ew}&space;=&space;0&space;\\end{cases}\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/latex.codecogs.com\/gif.latex?V_{we}&space;=&space;\\begin{cases}&space;-1&space;\\cdot&space;(V_{ew}&space;-&space;1)&space;&#038;&space;\\text{if&space;}&space;s_{ew}&space;=&space;1&space;\\\\&space;V_{ew}&space;-&space;1&space;&#038;&space;\\text{if&space;}&space;s_{ew}&space;=&space;0&space;\\end{cases}\" title=\"V_{we} = \\begin{cases} -1 \\cdot (V_{ew} - 1) &#038; \\text{if } s_{ew} = 1 \\\\ V_{ew} - 1 &#038; \\text{if } s_{ew} = 0 \\end{cases}\" \/><\/a><br>\n\n\n\n<a href=\"https:\/\/www.codecogs.com\/eqnedit.php?latex=V_{sn}&space;=&space;\\begin{cases}&space;-1&space;\\cdot&space;(V_{ns}&space;-&space;1)&space;&#038;&space;\\text{if&space;}&space;s_{ns}&space;=&space;1&space;\\\\&space;V_{ns}&space;-&space;1&space;&#038;&space;\\text{if&space;}&space;s_{ns}&space;=&space;0&space;\\end{cases}\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/latex.codecogs.com\/gif.latex?V_{sn}&space;=&space;\\begin{cases}&space;-1&space;\\cdot&space;(V_{ns}&space;-&space;1)&space;&#038;&space;\\text{if&space;}&space;s_{ns}&space;=&space;1&space;\\\\&space;V_{ns}&space;-&space;1&space;&#038;&space;\\text{if&space;}&space;s_{ns}&space;=&space;0&space;\\end{cases}\" title=\"V_{sn} = \\begin{cases} -1 \\cdot (V_{ns} - 1) &#038; \\text{if } s_{ns} = 1 \\\\ V_{ns} - 1 &#038; \\text{if } s_{ns} = 0 \\end{cases}\" \/><\/a><br>\n\n\n\n<a href=\"https:\/\/www.codecogs.com\/eqnedit.php?latex=v&space;=&space;\\sqrt{V_{we}^{2}&space;&plus;&space;V_{sn}^{2}}\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/latex.codecogs.com\/gif.latex?v&space;=&space;\\sqrt{V_{we}^{2}&space;&plus;&space;V_{sn}^{2}}\" title=\"v = \\sqrt{V_{we}^{2} + V_{sn}^{2}}\" \/><\/a><br>\n\n\n\n<a href=\"https:\/\/www.codecogs.com\/eqnedit.php?latex=h&space;=&space;arctan2&space;\\left(&space;V_{we},&space;V_{sn}&space;\\right)&space;\\cdot&space;\\frac{360}{2\\pi}&space;\\quad&space;\\text{(deg)}\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/latex.codecogs.com\/gif.latex?h&space;=&space;arctan2&space;\\left(&space;V_{we},&space;V_{sn}&space;\\right)&space;\\cdot&space;\\frac{360}{2\\pi}&space;\\quad&space;\\text{(deg)}\" title=\"h = arctan2 \\left( V_{we}, V_{sn} \\right) \\cdot \\frac{360}{2\\pi} \\quad \\text{(deg)}\" \/><\/a><br>\n\n\n\n<p>If the calculated heading is negative, then we add 360 to it.<\/p>\n\n\n\n<a href=\"https:\/\/www.codecogs.com\/eqnedit.php?latex=h&space;=&space;h&space;&plus;&space;360&space;\\quad&space;(\\text{if&space;}&space;h&space;<&space;0)\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/latex.codecogs.com\/gif.latex?h&space;=&space;h&space;&plus;&space;360&space;\\quad&space;(\\text{if&space;}&space;h&space;<&space;0)\" title=\"h = h + 360 \\quad (\\text{if } h < 0)\" \/><\/a><br>\n\n\n\n<h4 class=\"wp-block-heading\">Vertical Speed<\/h4>\n\n\n\n<p>The S_Vr bit (69) determines the direction(ascent\/descent).<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">0- Up\n1- Down<\/pre>\n\n\n\n<p>Therefore the actual speed is calculated by:<\/p>\n\n\n\n<p>V = (int(Vr) &#8211; 1) * 64<\/p>\n\n\n\n<p>Therefore, V is the speed and S_Vr states whether the aircraft is climbing or descending.<\/p>\n\n\n\n<p>The VrSrc field (Vertical Rate Source) determines the measured altitude type:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">0 - Barometric altitude rate\n1 - Geometric altitude rate<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Subtype 3 (AirSpeed)<\/h3>\n\n\n\n<p>Here let us see how the structure of Subtype 3 differs from Subtype1:<\/p>\n\n\n\n<table>\n<thead>\n<tr class=\"header\">\n<th align=\"left\">Position in frame<\/th>\n<th align=\"left\">Position in data block<\/th>\n<th align=\"left\">Length<\/th>\n<th align=\"left\">Abbreviation<\/th>\n<th align=\"left\">Data<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr class=\"odd\">\n<td align=\"left\">33 &#8211; 37<\/td>\n<td align=\"left\">1 &#8211; 5<\/td>\n<td align=\"left\">5<\/td>\n<td align=\"left\">TC<\/td>\n<td align=\"left\">Type code<\/td>\n<\/tr>\n<tr class=\"even\">\n<td align=\"left\">38 &#8211; 40<\/td>\n<td align=\"left\">6 &#8211; 8<\/td>\n<td align=\"left\">3<\/td>\n<td align=\"left\">ST<\/td>\n<td align=\"left\">Subtype<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td align=\"left\">41<\/td>\n<td align=\"left\">9<\/td>\n<td align=\"left\">1<\/td>\n<td align=\"left\">IC<\/td>\n<td align=\"left\">Intent change flag<\/td>\n<\/tr>\n<tr class=\"even\">\n<td align=\"left\">42<\/td>\n<td align=\"left\">10<\/td>\n<td align=\"left\">1<\/td>\n<td align=\"left\">RESV_A<\/td>\n<td align=\"left\">Reserved-A<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td align=\"left\">43 &#8211; 45<\/td>\n<td align=\"left\">11 &#8211; 13<\/td>\n<td align=\"left\">3<\/td>\n<td align=\"left\">NAC<\/td>\n<td align=\"left\">Velocity uncertainty (NAC)<\/td>\n<\/tr>\n<tr class=\"even\">\n<td align=\"left\">46<\/td>\n<td align=\"left\">14<\/td>\n<td align=\"left\">1<\/td>\n<td align=\"left\">S_hdg<\/td>\n<td align=\"left\">Heading status<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td align=\"left\">47 &#8211; 56<\/td>\n<td align=\"left\">15 &#8211; 24<\/td>\n<td align=\"left\">10<\/td>\n<td align=\"left\">Hdg<\/td>\n<td align=\"left\">Heading (proportion)<\/td>\n<\/tr>\n<tr class=\"even\">\n<td align=\"left\">57<\/td>\n<td align=\"left\">25<\/td>\n<td align=\"left\">1<\/td>\n<td align=\"left\">AS-t<\/td>\n<td align=\"left\">Airspeed Type<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td align=\"left\">58 &#8211; 67<\/td>\n<td align=\"left\">26 &#8211; 35<\/td>\n<td align=\"left\">10<\/td>\n<td align=\"left\">AS<\/td>\n<td align=\"left\">Airspeed<\/td>\n<\/tr>\n<tr class=\"even\">\n<td align=\"left\">68<\/td>\n<td align=\"left\">36<\/td>\n<td align=\"left\">1<\/td>\n<td align=\"left\">VrSrc<\/td>\n<td align=\"left\">Vertical rate source<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td align=\"left\">69<\/td>\n<td align=\"left\">37<\/td>\n<td align=\"left\">1<\/td>\n<td align=\"left\">S_vr<\/td>\n<td align=\"left\">Vertical rate sign<\/td>\n<\/tr>\n<tr class=\"even\">\n<td align=\"left\">70 &#8211; 78<\/td>\n<td align=\"left\">38 &#8211; 46<\/td>\n<td align=\"left\">9<\/td>\n<td align=\"left\">Vr<\/td>\n<td align=\"left\">Vertical rate<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td align=\"left\">79 &#8211; 80<\/td>\n<td align=\"left\">47 &#8211; 48<\/td>\n<td align=\"left\">2<\/td>\n<td align=\"left\">RESV_B<\/td>\n<td align=\"left\">Reserved-B<\/td>\n<\/tr>\n<tr class=\"even\">\n<td align=\"left\">81<\/td>\n<td align=\"left\">49<\/td>\n<td align=\"left\">1<\/td>\n<td align=\"left\">S_Dif<\/td>\n<td align=\"left\">Difference from baro alt, sign<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td align=\"left\">82 &#8211; 88<\/td>\n<td align=\"left\">50 &#8211; 66<\/td>\n<td align=\"left\">7<\/td>\n<td align=\"left\">Dif<\/td>\n<td align=\"left\">Difference from baro alt<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\n\n\n<h3 class=\"wp-block-heading\">Heading<\/h3>\n\n\n\n<p>The S_hdg bit shows whether heading data is available or not:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">0 - Heading data not available\n1 - Heading data available<\/pre>\n\n\n\n<p>If heading data is available then it is calculated by:<\/p>\n\n\n\n<p>Heading = Hdg(10 bit data) * 360\/1024<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Velocity (Airspeed)<\/h3>\n\n\n\n<p>Simply converting the AS bits gives the airspeed in knots.<\/p>\n\n\n\n<p>Vertical Rate is calculated in the same manner as in Subtype 1<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Enhanced Mode-S:<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Aircraft Intention (BDS4,0)<\/h3>\n\n\n\n<p>The structure:<\/p>\n\n\n\n<table class=\"wp-block-table\"><tbody><tr><td>Field<\/td><td>Position<\/td><td>Length<\/td><\/tr><tr><td>Status<\/td><td>1<\/td><td>1<\/td><\/tr><tr><td>MCP selected altitude<br>Precision = 16ft<\/td><td>2-13<\/td><td>12<\/td><\/tr><tr><td>Status<\/td><td>14<\/td><td>1<\/td><\/tr><tr><td>FMS selected altitude<br>Precision = 16ft<\/td><td>15-26<\/td><td>12<\/td><\/tr><tr><td>Status<\/td><td>27<\/td><td>1<\/td><\/tr><tr><td>Barometric setting (in mb and not hPa)<br>Value is actual minus 800<br>Precision =  0.1mb<\/td><td>28-39<\/td><td>12<\/td><\/tr><tr><td>Reserved<\/td><td>40-47<\/td><td>8<\/td><\/tr><tr><td>Status<\/td><td>48<\/td><td>1<\/td><\/tr><tr><td>VNAV hold state<\/td><td>49<\/td><td>1<\/td><\/tr><tr><td>ALT hold state<\/td><td>50<\/td><td>1<\/td><\/tr><tr><td>APP hold state<\/td><td>51<\/td><td>1<\/td><\/tr><tr><td>Reserved<\/td><td>52-53<\/td><td>2<\/td><\/tr><tr><td>Status<\/td><td>54<\/td><td>1<\/td><\/tr><tr><td>Altitude source:<br>00: Unknown<br>01:Aircraft altitude<br>10: MCP set altitude<br>11: FMS set altitude9<\/td><td>55-56<\/td><td>2<\/td><\/tr><\/tbody><\/table>\n\n\n\n<pre class=\"wp-block-preformatted\">Note: MCP stands for Mode Control Panel where the pilot feeds in the data to the autopilot\nFMS stands for Flight Management Computer where the data is fed to calculate various other flight parameters.<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Track and Turn (BDS 5,0):<\/h3>\n\n\n\n<p>Many more information is given such as roll angle, true track angle etc:<\/p>\n\n\n\n<table class=\"wp-block-table\"><tbody><tr><td>Field<\/td><td>Position<\/td><td>Length<\/td><\/tr><tr><td>Status<\/td><td>1<\/td><td>1<\/td><\/tr><tr><td>Sign, 1<\/td><td>1<\/td><td>1<\/td><\/tr><tr><td>Roll angle<br>range = [-90, 90] degrees<br>Precision = 45\/256 degree<\/td><td>3-11<\/td><td>9<\/td><\/tr><tr><td>Status<\/td><td>12<\/td><td>1<\/td><\/tr><tr><td>Sign<\/td><td>13<\/td><td>1<\/td><\/tr><tr><td>True Track angle<br>Precision: 90\/512 degree-<\/td><td>14-23<\/td><td>10<\/td><\/tr><tr><td>Status<\/td><td>24<\/td><td>1<\/td><\/tr><tr><td>Ground Speed<br>Precision: 2 knots<\/td><td>25-34<\/td><td>10<\/td><\/tr><tr><td>Status<\/td><td>24<\/td><td>1<\/td><\/tr><tr><td>Sign<\/td><td>36<\/td><td>1<\/td><\/tr><tr><td>Track angle rate<br>Precision: 8\/256 degree\/second<\/td><td>37-45<\/td><td>8<\/td><\/tr><tr><td>Status<\/td><td>46<\/td><td>1<\/td><\/tr><tr><td>True Airspeed<br>Precision: 2 knots<\/td><td>47-56<\/td><td>10<\/td><\/tr><\/tbody><\/table>\n\n\n\n<pre class=\"wp-block-preformatted\">Note: The sign bit determines whether to use 2's complement to determine the value present after it. It it is set to '1' then we have to use 2's complement.<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Airspeed and Heading (BDS 6,0)<\/h3>\n\n\n\n<p>A lot more information is conveyed in this kind of frames:<\/p>\n\n\n\n<table class=\"wp-block-table\"><tbody><tr><td>Field<\/td><td>Position<\/td><td>Length<\/td><\/tr><tr><td>Status<\/td><td>1<\/td><td>1<\/td><\/tr><tr><td>Sign<\/td><td>1<\/td><td>1<\/td><\/tr><tr><td>Magnetic Heading<br>Precision = 90\/512 degree<\/td><td>3-12<\/td><td>10<\/td><\/tr><tr><td>Status<\/td><td>13<\/td><td>1<\/td><\/tr><tr><td>Indicated Airspeed<br>Precision: 1 knots<\/td><td>14-23<\/td><td>10<\/td><\/tr><tr><td>Status<\/td><td>24<\/td><td>1<\/td><\/tr><tr><td>Mach (speed)<br>Precision: 2.048\/512 Mach<\/td><td>25-34<\/td><td>10<\/td><\/tr><tr><td>Status<\/td><td>35<\/td><td>1<\/td><\/tr><tr><td>Sign<\/td><td>36<\/td><td>1<\/td><\/tr><tr><td>Barometric altitude rate<br>Precision: 32 feet\/ minute<\/td><td>37-45<\/td><td>9<\/td><\/tr><tr><td>Status<\/td><td>46<\/td><td>1<\/td><\/tr><tr><td>Sign<\/td><td>47<\/td><td>1<\/td><\/tr><tr><td>Inertial altitude rate<br>Precision: 32 ft\/minute<\/td><td>48-56<\/td><td>9<\/td><\/tr><\/tbody><\/table>\n\n\n\n<pre class=\"wp-block-preformatted\">Unfortunately the percentage of decodable Enhanced Mode-S message received was very low in both short recordings and long recordings which was worth hours.<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">File overlap checker:<\/h2>\n\n\n\n<p>The ground stations were programed to span each recorded file for 2 minutes(approx.). Now this means that for a long duration, there will be an array of files from several ground stations. <\/p>\n\n\n\n<p>There has to be a logic, where the code finds all the files from several ground stations recorded at the same or has overlapping recording times and club them together for the next step.<\/p>\n\n\n\n<p>I identified few such cases of overlaps:<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/aerospaceresearch.net\/wp-content\/uploads\/2019\/08\/Screenshot-from-2019-08-20-01-14-40.png\" alt=\"\" class=\"wp-image-1761\" width=\"493\" height=\"736\"\/><\/figure>\n\n\n\n<p>The overlapping files are clubbed together into a list for further processing.<\/p>\n\n\n\n<p>Next step is to find the same frames present in different station recordings, so we need to know the files that overlap and process it accordingly.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Feel free to get in touch with me:<\/h2>\n\n\n\n<ul><li><a href=\"https:\/\/twitter.com\/shoumik_dey\">https:\/\/twitter.com\/shoumik_dey<\/a><\/li><li><a href=\"https:\/\/github.com\/shoumikdey\">https:\/\/github.com\/shoumikdey<\/a><\/li><li>shoumik.dey@aerospaceresearch.net<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>In the previous blog: I discussed about how I am decoding the position of the aircraft from 2 ADS-B frames and also from 1 ADS-B frame and a reference position and how I found both handsome and erractic readings. Let&#8217;s look into how other airborne parameters, such as &#8218;aircraft identity&#8216; and &#8218;velocity&#8216; are being decoded &hellip; <a href=\"https:\/\/aerospaceresearch.net\/?p=1710\" class=\"more-link\"><span class=\"screen-reader-text\">\u201e[GSoC2019|PlaneSpotting|Shoumik|3] Decoding of secondary flight parameters and recording overlap checker.\u201c<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":17,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/aerospaceresearch.net\/index.php?rest_route=\/wp\/v2\/posts\/1710"}],"collection":[{"href":"https:\/\/aerospaceresearch.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aerospaceresearch.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aerospaceresearch.net\/index.php?rest_route=\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/aerospaceresearch.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1710"}],"version-history":[{"count":48,"href":"https:\/\/aerospaceresearch.net\/index.php?rest_route=\/wp\/v2\/posts\/1710\/revisions"}],"predecessor-version":[{"id":1764,"href":"https:\/\/aerospaceresearch.net\/index.php?rest_route=\/wp\/v2\/posts\/1710\/revisions\/1764"}],"wp:attachment":[{"href":"https:\/\/aerospaceresearch.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1710"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aerospaceresearch.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1710"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aerospaceresearch.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1710"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}