Skip to content

Commit

Permalink
đź’¬Generate LLM translations
Browse files Browse the repository at this point in the history
  • Loading branch information
github-actions[bot] committed Jun 2, 2024
1 parent 43c299f commit 32e1436
Show file tree
Hide file tree
Showing 2 changed files with 197 additions and 0 deletions.
157 changes: 157 additions & 0 deletions ios/OpenBot/README.de-DE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
<p align="center">
<a href="README.md">English</a> |
<a href="README.zh-CN.md">简体中文</a> |
<span>Deutsch</span>
</p>

# Robot iOS App - Beta-Version

## HAFTUNGSAUSSCHLĂśSSE

1. **Sicherheit:** Stellen Sie immer sicher, dass Sie in einer sicheren Umgebung arbeiten. Denken Sie daran, dass Ihr Telefon bei einer Kollision beschädigt werden könnte! Besondere Vorsicht ist geboten, wenn Sie automatisierte Steuerungen verwenden (z.B. Personenverfolgung oder Fahrmodus). Stellen Sie sicher, dass Sie immer einen Game-Controller angeschlossen haben und mit der Tastenbelegung vertraut sind, damit Sie das Fahrzeug jederzeit stoppen können. Nutzung auf eigene Gefahr!
2. **App in Entwicklung:** Die Anwendung befindet sich in der Entwicklung und kann je nach Telefonmodell und Betriebssystemversion abstürzen oder unerwartetes Verhalten zeigen. Testen Sie alle Funktionen ohne angeschlossene Räder. Nutzung auf eigene Gefahr!

## App-Bildschirme

### HauptmenĂĽ

Die App startet mit einem Menübildschirm, der alle verfügbaren Bildschirme anzeigt. Der Bluetooth-Verbindungsbildschirm kann durch Klicken auf das Bluetooth-Symbol oben rechts geöffnet werden. Der Einstellungsbildschirm kann durch Klicken auf das daneben befindliche Einstellungssymbol geöffnet werden. Durch Klicken auf die anderen Symbole kann der Benutzer auf verschiedene Bildschirme zugreifen, deren Funktionen in den folgenden Abschnitten erklärt werden.

<p align="left">
<img style="padding-right: 2%;" src="../../docs/images/ios_main_screen.jpg" alt="HauptmenĂĽ" width="25%"/>
<img style="padding-right: 2%;" src="../../docs/images/ios_bluetooth_screen.jpg" alt="Bluetooth" width="25%"/>
<img style="padding-right: 2%;" src="../../docs/images/ios_settings_screen.jpg" alt="Einstellungen" width="25%"/>
</p>

#### Bluetooth-Verbindung

Im Gegensatz zur Android-App, die es ermöglicht, das Smartphone über ein USB-Kabel mit der Low-Level-Steuerplatine eines OpenBot zu verbinden, verlässt sich die iOS-App ausschließlich auf eine Bluetooth Low-Energy (BLE) Drahtlosverbindung. Beim Öffnen des Bluetooth-Verbindungsbildschirms in der iOS-Anwendung (durch Klicken auf das Bluetooth-Logo vom Hauptbildschirm oder von jedem Fragment aus) wird eine Liste aller kompatiblen Geräte angezeigt. Die Kompatibilität wird hier durch die Verwendung einer Reihe spezifischer UUIDs gewährleistet, die einem OpenBot-Fahrzeug sowohl auf der [App](https://github.com/3dwesupport/OpenBot/blob/090dcb28206195a7ee45a13b8ded968a8d365abe/ios/OpenBot/OpenBot/Utils/Constants.swift#L57)- als auch auf der [Firmware](https://github.com/3dwesupport/OpenBot/blob/090dcb28206195a7ee45a13b8ded968a8d365abe/firmware/openbot_nano/openbot_nano.ino#L115)-Ebene zugewiesen sind. Sie müssen sicherstellen, dass diese UUIDs übereinstimmen. Das Koppeln eines iOS-Geräts mit einem OpenBot-Fahrzeug erfordert dann lediglich die Auswahl dieses Fahrzeugs aus der Liste und das Drücken der "Verbinden"-Taste. Die Standard-Baudrate für die Verbindung ist auf 115200 eingestellt und kann auf App- und Firmware-Ebene geändert werden.

<p align="left">
<img src="../../docs/images/ios_ble.gif" alt="BLE-Verbindung" width="25%" />
</p>

### Freies Fahren

Freies Fahren bietet einfache Robotersteuerung mit Echtzeit-Updates und Informationen über Batterie, Geschwindigkeit und Abstand zu Oberflächen. Es bietet auch Steuerungen im Zusammenhang mit Controller, Fahrmodus und Geschwindigkeit.

<p align="left">
<img src="../../docs/images/ios_free_roam_screen.jpg" alt="Freies Fahren" width="50%" />
</p>

- **Batterie**: Das Batteriesymbol zeigt die Echtzeit-Batteriestände des verbundenen Roboters an.

- **Fahrmodus**: Es gibt 3 Fahrmodi, die auf der Ansicht angezeigt werden:

- D -> Fahren, wenn der Roboter vorwärts fährt

- N -> Neutral, wenn der Roboter stillsteht

- R -> Rückwärts, wenn der Roboter rückwärts fährt

- **Geschwindigkeit**: Der Tachometer zeigt die Echtzeit-Geschwindigkeit des Roboters an.

- **Sonar**: Die Sonaransicht zeigt den Abstand des Roboters zu einem entgegenkommenden Objekt in cm.

- **Bluetooth**: Zeigt den Status der Bluetooth-Verbindung mit dem Mikrocontroller an. Durch Tippen auf das Symbol kann der Benutzer auch zum Bluetooth-Bildschirm weitergeleitet werden, um die Verbindung anzuzeigen/zu ändern.

#### Steuerung

Die erste Taste dient zur Auswahl des **Steuermodus**. Es gibt zwei verschiedene Steuermodi:

- **Gamepad**: Die App empfängt Steuerungen von einem verbundenen BT-Controller.
- **Telefon (Demnächst)**: Der Roboter kann über ein anderes Smartphone mit installierter Controller-App oder über ein Python-Skript gesteuert werden, das auf einem Computer im selben Netzwerk läuft.

Die zweite Taste dient zur Auswahl des **Fahrmodus**. Es gibt drei verschiedene Fahrmodi bei Verwendung eines Game-Controllers (z.B. PS4):

- **Spiel**: Verwenden Sie die rechten und linken Schultertasten (R2, L2) für Vorwärts- und Rückwärtsschub und einen der Joysticks zum Lenken. Dieser Modus imitiert den Steuerungsmodus von Autorennspielen.
- **Joystick**: Verwenden Sie einen der Joysticks, um den Roboter zu steuern.
- **Dual**: Verwenden Sie den linken und rechten Joystick, um die linke und rechte Seite des Autos zu steuern. Dies ist eine rohe Differentiallenkung.

Die dritte Taste dient zur Auswahl des **Geschwindigkeitsmodus**. Es gibt drei verschiedene Geschwindigkeitsmodi:

- **Langsam**: Die Spannung, die an die Motoren angelegt wird, ist auf 50% der Eingangsspannung (~6V) begrenzt.
- **Normal**: Die Spannung, die an die Motoren angelegt wird, ist auf 75% der Eingangsspannung (~9V) begrenzt.
- **Schnell**: Es gibt keine Begrenzung. Die volle Eingangsspannung wird bei Vollgas an die Motoren angelegt (~12V). *Dies ist die Standardeinstellung fĂĽr den Betrieb der neuronalen Netze.*

Das Fahren mit höheren Geschwindigkeiten verkürzt die Lebensdauer der Motoren, macht aber mehr Spaß. Die Steuerungen, die an den Roboter gesendet werden, werden auf der rechten Seite angezeigt. Bei Verwendung des Game-Controllers kann der Geschwindigkeitsmodus durch Drücken des rechten Joysticks (R3) erhöht und durch Drücken des linken Joysticks (L3) verringert werden.

### Datenerfassung

Einfache Benutzeroberfläche zur Sammlung von Datensätzen.

<p align="left">
<img src="../../docs/images/ios_data_collection_screen.jpg" alt="Datenerfassung" width="50%" />
</p>

- **Vorschauauflösung**: Wird verwendet, um zwischen den Auflösungen der Kameravorschau zu wechseln. Es gibt 3 Einstellungen:

- ***HOCH*** (1920x1080p)

- ***MITTEL*** (1280x720p)

- ***NIEDRIG*** (640x360)

- **Modellauflösung**: Wird verwendet, um zwischen den Auflösungen der für das Training verschiedener Modelle gespeicherten Bilder zu wechseln.

- **Gesammelte Daten protokollieren**: Der Datenerfassungsprozess kann vom Bildschirm oder aus der Ferne, z.B. von einem Bluetooth-Controller, gesteuert werden. Bei Verwendung eines Bluetooth-Controllers können Sie:

- die **A-Taste** drĂĽcken, um den Datenerfassungsprozess zu **starten**

- die **A-Taste erneut drĂĽcken**, um die Datenerfassung zu **stoppen** und die gesammelten Daten in einer .zip-Datei zu speichern

- alternativ die **R1-Taste** drĂĽcken, um die Datenerfassung **ohne Speichern** der gesammelten Daten zu **stoppen** (z.B. aufgrund einer unerwarteten Kollision mit der Umgebung)

- denken Sie daran, das Controller-Mapping-Fragment zu verwenden, um sicherzustellen, dass Sie die richtigen Tasten verwenden.

- **Fahrzeugstatus**: Das Feld **Batterie** zeigt die Batteriespannung an, die vom Mikrocontroller über den Spannungsteiler gemessen wird. Das Feld **Geschwindigkeit (l,r)** gibt die linke und rechte Geschwindigkeit der (vorderen) Räder in U/min an. Es wird vom Mikrocontroller über die optischen Raddrehzahlsensoren gemessen. Das Feld **Sonar** zeigt den freien Raum vor dem Auto in Zentimetern an. Es wird vom Mikrocontroller über den Ultraschallsensor gemessen. Beachten Sie, dass Sie Werte erst einige Sekunden nach dem Herstellen der USB-Verbindung erhalten.

- **Sensoren**: Meldet Messungen von Fahrzeugsensoren. Derzeit erfassen wir Messwerte von folgenden Sensoren: Kamera, Gyroskop, Beschleunigungsmesser, Magnetometer, Umgebungslichtsensor und Barometer. Mithilfe der iOS-API können wir die folgenden Sensormesswerte erhalten: RGB-Bilder, Winkelgeschwindigkeit, lineare Beschleunigung, Schwerkraft, Magnetfeldstärke, Lichtintensität, atmosphärischer Druck, Breitengrad, Längengrad, Höhe, Peilung und Geschwindigkeit. Zusätzlich zu den Telefonsensoren erfassen wir Messwerte von Körpersensoren (Raddrehzahl, Hindernisabstand und Batteriespannung), die über die serielle Verbindung übertragen werden. Wir erfassen auch und stempeln Steuersignale, die von einem verbundenen Controller empfangen werden, falls vorhanden. Schließlich integrieren wir mehrere neuronale Netze für die Personenverfolgung und autonome Navigation.

### Controller-Mapping

Einfache Benutzeroberfläche zur Überprüfung der Tasten- und Joystick-Belegung eines verbundenen BT-Controllers.

<p align="left">
<img src="../../docs/images/ios_controller_mapping.jpg" alt="Controller-Mapping" width="30%" />
</p>

### Roboter-Info

Einfache Benutzeroberfläche, um Roboterinformationen zu erhalten und grundlegende Funktionen zu testen. Der **Robotertyp**, wie in der Firmware konfiguriert, wird als Text und Animation angezeigt. Die Häkchen in den Abschnitten **Sensoren**, **Raddrehzahl** und **LEDs** zeigen, welche Funktionen vom verbundenen Roboter unterstützt werden. Der Abschnitt **Messwerte** liefert die wichtigsten Sensormessungen. Im Abschnitt **Befehle senden** können Benutzer grundlegende Motorbefehle durch Drücken der entsprechenden Tasten senden und die vorderen und hinteren LEDs mit einem Schieberegler steuern.

<p align="left">
<img src="../../docs/images/ios_screen_robot_info.gif" alt="Roboter-Info" width="50%" />
</p>

### Autopilot

Einfache Benutzeroberfläche zum Ausführen von Autopilot-Modellen.

<p align="left">
<img src="../../docs/images/ios_autopilot_screen.jpg" alt="Autopilot" width="50%" />
</p>

### Objektverfolgung

Einfache Benutzeroberfläche zur Verfolgung von Objekten aus 80 verschiedenen Klassen. Eine kurze Beschreibung der verschiedenen KI-Modelle zur Objektverfolgung und Leistungsbenchmarks finden Sie im Abschnitt [Modellverwaltung](#modellverwaltung).

<p align="left">
<img src="../../docs/images/ios_object_tracking_screen.jpg" alt="Objektverfolgung" width="50%" />
</p>

### Modellverwaltung

Alle Modelle sind quantisiert, um eine bessere Leistung auf eingebetteten Geräten zu erzielen. Beachten Sie, dass Modelle mit größerer Eingangsauflösung trotz niedrigerer mAP besser für kleinere Objekte geeignet sein können.

<p align="left">
<img src="../../docs/images/ios_screen_model_management.gif" alt="Modellverwaltung" width="25%" />
</p>

## Code-Struktur

Die [TensorFlow Lite Object Detection iOS Demo](https://github.com/tensorflow/examples/tree/master/lite/examples/object_detection/ios) wurde als Ausgangspunkt verwendet, um TFLite-Modelle zu integrieren und den Kamerafeed zu erhalten. Der [tflite](OpenBot/tflite)-Ordner enthält die Modelldefinitionen für die [Autopilot](OpenBot/tflite/Autopilot.swift)- und [Detektor](OpenBot/tflite/Detector.swift)-Netzwerke.

## Nächstes (optional)

Trainieren Sie Ihre eigene [Fahrstrategie](../../policy/README.md)
40 changes: 40 additions & 0 deletions ios/README.de-DE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<p align="center">
<a href="README.md">English</a> |
<a href="README.zh-CN.md">简体中文</a> |
<span>Deutsch</span>
</p>

# iOS Apps - Beta-Version

## Funktionen

Klicken Sie auf die untenstehenden Links, um mehr ĂĽber die Funktionen der Apps zu erfahren.

- [Robot App](OpenBot/README.md)
- Controller App (Kommt bald)

## Installation der Apps
Derzeit ist der einzige Weg, die iOS-Apps auf Ihrem Telefon auszufĂĽhren, ĂĽber die Entwickler-Builds, wie im folgenden Abschnitt beschrieben.

## Apps bauen

### Voraussetzungen

- [Xcode iOS 13 oder später](https://developer.apple.com/xcode/) zum Bauen und Installieren der Apps.
- [Cocoapods](https://cocoapods.org/) auf Ihrem System installiert.
- Derzeit verwenden wir die iOS-Zielversion 15.5.
- Das Projekt ist so konfiguriert, dass es "Signing automatisch verwalten" verwendet, sodass Sie Ihr eigenes unabhängiges Konto zum Bauen der App konfigurieren können -
<img alt="iOS App" width="100%" src="../docs/images/ios_automatically_manage_signing.png" />
- Um Ihr eigenes Team zu konfigurieren, fĂĽgen Sie Ihr iCloud-Konto ĂĽber XCode > Einstellungen > Konten oder direkt ĂĽber das Team-MenĂĽ oben hinzu.
- iOS-Gerät mit mindestens iOS 13 oder später. [Liste der unterstützten Geräte](https://support.apple.com/en-in/guide/iphone/iphe3fa5df43/ios).
- [Entwicklermodus](https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device) auf Ihrem iOS-Gerät aktiviert.
- Das hinzugefügte iCloud-Konto sollte von Ihrem iOS-Gerät [vertraut werden](https://developer.apple.com/forums/thread/685271).

### Build-Prozess

1. Öffnen Sie XCODE und wählen Sie *ein Projekt oder eine Datei öffnen*.
2. Um die [OpenBot-App](OpenBot/README.md) zu installieren, stellen Sie sicher, dass Sie die *OpenBot*-Konfiguration auswählen.
<img alt="iOS App" width="100%" src="../docs/images/ios_openbot_configuration.png" />
3. Wählen Sie Ihr Gerät aus der Liste der verfügbaren Geräte aus.
<img alt="iOS App" width="100%" src="../docs/images/ios_device_selection.png" />
4. Führen Sie die App auf dem Gerät aus, indem Sie auf das ▶️-Symbol oben links auf dem Xcode-Bildschirm klicken.

0 comments on commit 32e1436

Please sign in to comment.