13 Punkte von xguru 2024-05-13 | 2 Kommentare | Auf WhatsApp teilen
  • Bei der Suche nach einer App für die Teilnahme an der „100 Push-ups am Tag Challenge“ des UK Cancer Centre entstand die Idee, selbst etwas Spannendes zu bauen, das Liegestütze zählt
  • Erkundung des Core Motion Frameworks von iOS
    • Bei der Suche nach einer Möglichkeit, Sensordaten zu nutzen, fiel die Entscheidung auf CMHeadphoneMotionManager, um Bewegungsdaten der AirPods zu verwenden
    • Core Motion liefert Daten von Beschleunigungsmesser, Gyroskop und Magnetometer
    • Es ist nützlich für genaue und zuverlässige Messungen von Bewegung und Ausrichtung
    • Für den Zugriff auf die Daten sind aus Datenschutzgründen Benutzerberechtigungen erforderlich
  • Überlegungen zum Einsatz von AI
    • Es gibt bereits viele Apps, die Frameworks wie ARKit verwenden
    • Stattdessen wurde entschieden, dass AI bei der Umsetzung der Idee helfen könnte
    • Ein auf Core Motion trainiertes GPT wurde genutzt, um Fragen in natürlicher Sprache zu stellen und Lösungen zu erhalten
  • Entwurf der App-Architektur
    • Motion Manager: streamt Sensordaten und verarbeitet Sensor-Updates des Geräts
    • Pushups Detector: analysiert die gestreamten Daten, erkennt Liegestütze anhand vordefinierter Schwellenwerte und zählt sie
    • SwiftUI View: bietet eine reaktive UI, die sich in Echtzeit aktualisiert, während der Nutzer Liegestütze macht
  • Implementierung des Motion Managers
    • Über das Delegate-Pattern wird auf aktualisierte Werte zugegriffen
    • CMHeadphoneMotionManager wird verwendet, um Device-Motion-Daten abzurufen
    • Mit startUpdates() und stopUpdates() werden Sensor-Updates gestartet und gestoppt
    • Aktualisiert pitch und accelerationY und benachrichtigt das Delegate
  • Implementierung des Pushups Detector
    • Einführung des Konzepts einer „Session“, um die Analyse des Datenstroms zu starten und zu stoppen
    • Rohdaten werden interpretiert, um die Haltung des Nutzers und das Vorliegen eines Liegestützes zu bestimmen
    • Schwellenwerte werden verwendet, um die Abwärts- und Aufwärtsbewegung eines Liegestützes zu erkennen und den Zähler zu erhöhen
    • Implementiert MotionManagerDelegate, um Änderungen bei Beschleunigung und Pitch zu verarbeiten
  • Einfache View mit SwiftUI implementieren
    • Besteht aus Start-/Stopp-Buttons für die Session und einer großen Zahl zur Anzeige der Liegestütz-Anzahl
    • Zusätzlich wurde Text eingefügt, der anzeigt, ob die Haltung des Nutzers korrekt ist
  • Datenanalyse und Visualisierung
    • Mit Swift Charts wurden rohe Sensordaten visualisiert und Muster identifiziert
    • In der Beschleunigung auf der Y-Achse wurden die Muster für die Abwärtsbewegung (-1.0) und Aufwärtsbewegung (+0.5) eines Liegestützes erkannt
    • Durch praktische Tests wurden die Schwellenwerte angepasst, um die Genauigkeit zu verbessern (+0.4, -0.7)
  • Der Reiz von Echtzeit-Tracking
    • Wenn man die AirPods trägt und auf Start drückt, wird die Anzahl der Liegestütze automatisch aktualisiert
    • Funktioniert ohne Interaktion des Nutzers
  • Was aus dem Projekt gelernt wurde
    • Die Bedeutung früher Validierung und iterativer Verbesserungen wurde erneut bestätigt
    • Es zeigte sich, wie viel Spaß und Zufriedenheit es bringt, etwas Sinnvolles zu bauen
    • Es gibt noch Verbesserungsmöglichkeiten, etwa bei der UI und beim Zählen von Liegestützen über mehrere Tage hinweg
    • Durch Audio-Feedback über die AirPods wurde die User Experience zusätzlich zur visuellen Oberfläche verbessert
  • Fazit
    • Durch die Kombination von Core Motion, SwiftUI und AI wurde innerhalb von 24 Stunden eine App entwickelt, die Fitness-Tracking eine neue Dimension verleiht
    • Wichtig ist die Herausforderung, neue Technologien auf Alltagsprobleme anzuwenden

2 Kommentare

 
ing03201 2024-05-13

Da merkt man wieder, wie großartig die Galaxy Watch ist, die sogar die Wiederholungen bei den drei Grundübungen zählt.

 
jooyh1021 2024-05-13

Vor ein paar Jahren hatte ich mal eine Push-up-Challenge-App namens Thirty entwickelt, die den Näherungssensor des iPhones nutzt – offenbar geht das auch mit AirPods. Seit der Einführung der Dynamic Island scheint die Genauigkeit des Näherungssensors allerdings etwas nachgelassen zu haben ;_;