Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Open Source im Segelflug

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on. →

Open Source im Segelflug

Über die Entwicklung eines quelloffenen Flugcomputers

Avatar for Tobias Lohner

Tobias Lohner

June 07, 2013

More Decks by Tobias Lohner

Other Decks in Programming

Transcript

  1. 7 XCSoar 2000 XCSoar startet als kommerzielle Software 2005 XCSoar

    wird Open Source 2005/06 Einsatz in Einbaugeräten von Triadis (Altair) 2010 Portierung auf Linux & Android Mai 2013 ca. 30.000 User auf Android Mai 2012 Start von SkyLines
  2. 13 Windberechnung ̄ K k H k f k−1 (⋅)

    delay ̂ x k −1 k −1 ̂ x k k −1 ̂ x k k v k + - + + Extended Kalman Filter x k = f k−1 (Wind k−1 ,Groundspeed k−1 ,w k−1 )=Wind k y k =h k (x k , v k )=Airspeed k
  3. 25 Streckenoptimierung • kombinatorisches/ganzzahliges Optimierungsproblem • Brute-Force → Lösung: •

    Loop-Suche • Optimierung • Heuristiken • Performance-Optimierung O(n5)
  4. 40 Performance • Ganzzahlige Berechnungen: – Dimensionslose Projektion (Lambert'sche Schnittkegelprojektion)

    – Exakte Berechnungen nur wenn nötig • Flugpfad: – Douglas-Peucker Streckenzug-Reduktion • Sonstiges: – Inkrementelle Algorithmen
  5. 41 Performance Ziel Erreicht: • Komplexität: – Quadtree: – Branch

    & Bound: bis • Rechendauer: – Worst Case: 7 Sekunden (n = 10474)1 O(n2) O(n0.6) O(n) N = 777 Min = 0.56 Mean = 1.29 Median = 1.35 Max = 2.01 1 Intel Core i5 M540, 2.53 GHz
  6. 51 Projektmanagement • 275.000 Zeilen Code (C++) • ca. 40

    Entwickler • Übersetzt in mehr als 12 Spachen von über 100 Übersetzern • ca. 30.000 User auf Android (+ unzählige auf WinCE) • „öffentliche“ Entwicklung • Mailing-Liste, Internet-Chat, Bugtracker, Forum
  7. 52 Projektmanagement Development Release: • neue Features • regelmäßig öffentliche

    Binaries zum Testen • halbjährliches Release Stable Release: • nur Bugfixes • Updates wenn nötig (2- bis 4-wöchig)
  8. 53 Unit-Tests • Über 7000 einzelne Funktions-Tests • TAP (Test

    Anything Protocol) • Voraussetzung: modularer Code
  9. 54 Unit-Tests > ~/XCSoar$ testall.pl output/UNIX/bin/TestGeoPoint output/UNIX/bin/TestGeoPoint .. ok All

    tests successful. Files=1, Tests=1, 1 wallclock secs ( 0.06 usr + 0.00 sys = 0.06 CPU) Result: PASS GeoPoint p1(Angle::Degrees(145.3), Angle::Degrees(-6.3)); GeoPoint p2(Angle::Degrees(2), Angle::Degrees(1)); ok1(equals(p1.Distance(p2), 15919295.1)); • Über 7000 einzelne Funktions-Tests • TAP (Test Anything Protocol) • Voraussetzung: modularer Code
  10. 55 Unit-Tests • Über 7000 einzelne Funktions-Tests • TAP (Test

    Anything Protocol) • Voraussetzung: modularer Code 0 1 2 3 4 5 6 0 25 50 75 100 125 150 175 200 225 250 % [-] GS [km/h] Geschwindigkeitsverteilung
  11. 56 Unit-Tests 0 1 2 3 4 5 6 0

    25 50 75 100 125 150 175 200 225 250 % [-] GS [km/h] Geschwindigkeitsverteilung • Über 7000 einzelne Funktions-Tests • TAP (Test Anything Protocol) • Voraussetzung: modularer Code
  12. 62 Zukunft 2010 Portierung auf Linux & Android Mai 2013

    ca. 30.000 User auf Android Mai 2012 Start von SkyLines ???