{"id":2059,"date":"2017-05-09T14:46:06","date_gmt":"2017-05-09T14:46:06","guid":{"rendered":"http:\/\/www.daveakerman.com\/?p=2059"},"modified":"2017-05-09T14:47:19","modified_gmt":"2017-05-09T14:47:19","slug":"landing-prediction","status":"publish","type":"post","link":"http:\/\/www.daveakerman.com\/?p=2059","title":{"rendered":"Landing Prediction"},"content":{"rendered":"<p>As I mentioned in my previous post, I was planning to enable my landing prediction code for my next flight. \u00a0This code is based on some work that Steve Randall did a few years ago, but using a slightly different technique as I was using a Pi and therefore had plenty of RAM available for storing wind data (Steve used a PIC). \u00a0I wrote the code as the first stage in having a HAB guide itself to a predetermined landing spot, and knew that it worked pretty well using stored data from one of Steve&#8217;s flights, but hadn&#8217;t got round to trying it for real.<\/p>\n<p>The way my code works is this:<\/p>\n<ol>\n<li>During ascent, it splits the vertical range into 100 metres sections, into which it stores the latitude and longitude deltas as degrees per second.<\/li>\n<li>Every few seconds, it runs a prediction of the landing position based on the current position, the data in that array, and an estimated descent profile that uses a simple atmospheric model (from Steve) plus default values for payload weight and parachute effectiveness.<\/li>\n<li>During descent, the parachute effectiveness is measured, and the actual figure is used in the above calculation in (2).<\/li>\n<\/ol>\n<p>So, basically, for each vertical 100m band, the software calculates the estimated time to fall through that band, and applies that to the latitude\/longitude deltas measured during ascent. \u00a0It then sums all the resulting deltas for descent to 100m (typical landing altitude), adds them to the current position, and emits the result in the telemetry as the predicted landing position.<\/p>\n<p>Although the habhub online map does its own landing prediction, an onboard prediction has some advantages:<\/p>\n<ul>\n<li>It has more descent data to work with, so can more accurately profile the parachute performance<\/li>\n<li>It is using more recent wind data, measured during ascent<\/li>\n<li>Ground chase crews can see the landing prediction without having internet access<\/li>\n<\/ul>\n<p>There are disadvantages too. \u00a0Because it uses wind data from the ascent, if the wind has changed (due to the landing being in a different area, or because the wind is changing with time) then those factors will introduce errors.<\/p>\n<p>Also, I have a suspicion that the live map consistently overestimates the horizontal distance travelled by a descending flight. \u00a0This can be seen by watching its landing prediction which, as the flight descends, will move back towards the actual flight position.<\/p>\n<p>So I was keen to see how well the onboard prediction fairs against the habhub prediction. \u00a0Steve Randall was also interested in this, and was kind enough to record the descent on his screen. \u00a0He has sped up and annotated the video which you can see here:<\/p>\n<p><iframe loading=\"lazy\" title=\"Onboard Landing Spot Prediction 27 04 2017 Annotated\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/56zByLnHAaQ?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n<p>From that you can see that:<\/p>\n<ul>\n<li>Until close to landing, it&#8217;s a lot more accurate than the habhub prediction (for this flight &#8211; might not be the case generally!)<\/li>\n<li>The\u00a0noise in the estimated landing position is mainly along the large part of the descent track.<\/li>\n<\/ul>\n<p>Here&#8217;s a screenshot from the map, edited to show the movement of the landing position during descent:<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-2060\" src=\"http:\/\/www.daveakerman.com\/wp-content\/uploads\/2017\/05\/Landing-Prediction-Range.png\" alt=\"\" width=\"754\" height=\"1015\" srcset=\"http:\/\/www.daveakerman.com\/wp-content\/uploads\/2017\/05\/Landing-Prediction-Range.png 754w, http:\/\/www.daveakerman.com\/wp-content\/uploads\/2017\/05\/Landing-Prediction-Range-223x300.png 223w\" sizes=\"(max-width: 754px) 100vw, 754px\" \/><\/p>\n<p>Steve produced a chart showing the parachute effectiveness ( relative coefficient of drag &#8211; which is what the code is trying to measure) with altitude:<img decoding=\"async\" src=\"https:\/\/18146902043181806997.googlegroups.com\/attach\/300f42675054b\/missing_filename?part=0.1.1&amp;view=1&amp;vt=ANaJVrHHvRvfvq9vHytrEsRMnvdBFAuU2WWtknj7plMVUgpqRk8XypY0ohg3FKZAEL-abDtGc2td46ekzU9-qBRhuS5a9I8BtKYgoLohQCiRgsLrX5v8CKU\" \/><\/p>\n<p>Noise at low altitudes is less important, as it&#8217;s being applied to a short remaining distance to fall, but the noise higher &#8211; between say 5000 and 15,000m &#8211; is more important.<\/p>\n<p>For my next flight, I&#8217;ll apply some filtering to hopefully make the prediction more consistently accurate. \u00a0I have all the GPS data from this flight and I can run that back into the tracker code to test how well it would have worked on that last flight.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As I mentioned in my previous post, I was planning to enable my landing prediction code for my next flight. \u00a0This code is based on some work that Steve Randall did a few years ago, but using a slightly different technique as I was using a Pi and therefore had [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[],"_links":{"self":[{"href":"http:\/\/www.daveakerman.com\/index.php?rest_route=\/wp\/v2\/posts\/2059"}],"collection":[{"href":"http:\/\/www.daveakerman.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.daveakerman.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.daveakerman.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.daveakerman.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2059"}],"version-history":[{"count":3,"href":"http:\/\/www.daveakerman.com\/index.php?rest_route=\/wp\/v2\/posts\/2059\/revisions"}],"predecessor-version":[{"id":2736,"href":"http:\/\/www.daveakerman.com\/index.php?rest_route=\/wp\/v2\/posts\/2059\/revisions\/2736"}],"wp:attachment":[{"href":"http:\/\/www.daveakerman.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2059"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.daveakerman.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2059"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.daveakerman.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2059"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}