Android App und Hexapod Ziele: Ziele: ● Programmieren einer App ● Programmieren einer App zu Steuerung des Hexapod zu Steuerung des Hexapod ● Implementierung aller ● Implementierung aller vorhandenen Funktionen vorhandenen Funktionen ● Verwendung der Android● Verwendung der AndroidGyrosensoren Gyrosensoren ● Einsetzen eine Microcontroller ● Einsetzen eine Microcontroller zur Vermittlung zwischen zur Vermittlung zwischen BT-Adapter und Hexapod BT-Adapter und Hexapod Die Android App: Die Android App: Microcontroller Microcontroller Aufgaben: Aufgaben: ● Emfpang des BT-Signals ● Emfpang des BT-Signals ● Interpretation des Signals ● Interpretation des Signals ● Senden der Befehle an ● Senden der Befehle an den Hexapod den Hexapod Entwicklung: Entwicklung: Die Programmierung der Aufgaben Die Programmierung der Aufgaben erfolgte in C. erfolgte in C. Für die Kommunikation mit dem BT Für die Kommunikation mit dem BT und dem Hexapod wurden zwei und dem Hexapod wurden zwei Serielle Schnittstellen implementiert. Serielle Schnittstellen implementiert. Entwicklung: LEDs als Zustandsanzeige Entwicklung: LEDs als Zustandsanzeige Für die Entwicklung der App Für die Entwicklung der App fehlerhafter Befehl: AN haben wir eine Eclipseversion fehlerhafter Befehl: AN haben wir eine Eclipseversion verwendet, die mit dem gültiger Befehl: TOGGLE verwendet, die mit dem gültiger Befehl: TOGGLE offiziellen SDK von Android offiziellen SDK von Android bereit zur Verbindung: AN erweitert wurde. bereit zur Verbindung: AN erweitert wurde. verbunden: BLINKEN Die App wurde fast ausschließlich verbunden: BLINKEN Die App wurde fast ausschließlich in Java geschrieben. in Java geschrieben. BeispielCode: Ansteuerung des Hexapod bei Betätigung der Joysticks BeispielCode: Ansteuerung des Hexapod bei Betätigung der Joysticks UART MC SUART joystick = (Joystick) findViewById(R.id.crabLeftJoy); joystick = (Joystick) findViewById(R.id.crabLeftJoy); onJoystickChange = new OnJoystickChangeListener() { onJoystickChange @Override = new OnJoystickChangeListener() { @Override public void onJoystickChangeListener( public void onJoystickChangeListener( View view, View view, double angle, doubleradius) angle, { double double { forward = (byte) radius) (Math.cos(angle) * 1.27 * radius); forward = (byte) (Math.cos(angle) * 1.27 * radius); turn = (byte) (Math.sin(angle) * 1.27 * radius); turn = (byte) (Math.sin(angle) * Hexapod.move(forward, crab, turn); 1.27 * radius); Hexapod.move(forward, crab, turn); } } }; }; joystick.setOnJoystickChangeListener(onJoystickChange); joystick.setOnJoystickChangeListener(onJoystickChange); Ergebnis: Notabschaltung: Ergebnis: Notabschaltung: Alle Bewegungsmuster wurden implementiert Problem: Alle Bewegungsmuster wurden implementiert Problem: und können von der App aus benutzt werden. Verbindungsabbruch wird nicht erkannt. und können von der App aus benutzt werden. Verbindungsabbruch wird nicht erkannt. Die Gyrosensoren können die Rotation und die Lösung: Die Gyrosensoren können die Rotation und die Lösung: Geschwindigkeit des hexapod steuern. Alle 200ms „Poke“ von der App. Geschwindigkeit des hexapod steuern. Alle 200ms „Poke“ von der App. Wir haben verschiedene Steuerungsmodi Bei Ausbleiben des Signals: Stoppe Hexapod Wir haben verschiedene Steuerungsmodi Bei Ausbleiben des Signals: Stoppe Hexapod realisiert: realisiert: Steuerungsmodi Steuerungsmodi ● Ausblick: Verbesserung der App Standard: Pfeiltasten ● Ausblick: Verbesserung der App Standard: Pfeiltasten ● ● Anpassung des Layouts für verschiedene Endgeräte Joystick: Touchscreen ● ● Anpassung des Layouts für verschiedene Endgeräte Joystick: Touchscreen ● ● Automatische Reaktion auf Verbindungsabbrüche Helicopter: Gyrosensoren ● ● Automatische Reaktion auf Verbindungsabbrüche Helicopter: Gyrosensoren ● ● Portierung der App auf iOS und Windows Rotation/Translation: ● ● Portierung der App auf iOS und Windows Rotation/Translation: Gyrosensoren Gyrosensoren Team: • David Sprengel (Informatik 7. Semester) • Niels Buwen (Informatik 5. Semester) Betreuung: • Felix Aller • Katja Mombauer