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

Open Source im Segelflug

Open Source im Segelflug

Über die Entwicklung eines quelloffenen Flugcomputers

Tobias Lohner

June 07, 2013
Tweet

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 ???