Skip to content

Commit 83fd59c

Browse files
author
marco.mueller
committed
add german version for some docs
1 parent bdbc01c commit 83fd59c

28 files changed

Lines changed: 220 additions & 191 deletions
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,6 @@ Für die optionale LED-Anzeige:
2525

2626
Für die optionale Soundausgabe:
2727
* Mikrocontroller (kann der gleiche sein wie für die LED-Anzeige)
28-
* kleiner Lautsprecher
28+
* kleiner Lautsprecher
29+
30+
<img src="/assets/images/impressions_from_working_on_sft/hardware_components.png" alt="drawing" width="500"/>

_sftbuildguides/guide_en.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
title: 'Guide ENG'
3+
---
4+
work in progress
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
---
2+
title: 'Projektstruktur DE'
3+
---
4+
5+
Worum geht es beim Smart Football Table?
6+
7+
## Vision
8+
9+
Die Idee wurde beim Tischkicker spielen geboren: Wäre es nicht cool, wenn ein Computer die Tore erkennt und nicht man selbst den Spielstand händisch anpassen müsste?
10+
Erste Überlegungen führten schliesslich zu konkreten Plänen und ersten Versuchen mit einer eigenen Webcam.
11+
12+
Perspektivisch gesehen ist eine Lösung, die sich die Analysen merkt, spielerbezogen auswerten kann und für
13+
einen Nichtentwickler ohne Probleme oder Kosten aufbaubar sind unser nächstes Wunschergebnis.
14+
15+
## Vorgaben und Ziele
16+
17+
Von Beginn an haben wir uns auf folgende Vorgaben geeinigt:
18+
19+
* Das Projekt ist Open Source und transparent
20+
* keine modifizierenden oder spielgefühl-verändernde Eingriffe in den Kickertisch
21+
* Modell des Kickers soll egal sein
22+
* Die Kosten aller Anschaffungen sind niedrig zu halten
23+
* Ein Nachbau ist einfach
24+
25+
Nicht alle Punkte können wir aktuell vollumfänglich einhalten.
26+
Der Nachbau ist aufgrund nicht vollständiger Skripte und einem fehlenden einfachen Startbutton aktuell ohne technisches Knowhow und etwas Geduld nicht machbar.
27+
28+
Während der Arbeit am Projekt wurden regelmässig neue MVPs erarbeitet.
29+
Zu Beginn sollte nur ein Ball erkannt werden, die erste Kamerabefestigung war ein simpler Holzrahmen.
30+
Nach und nach haben wir aber festgehalten, was in einem ersten vorzeigbaren Stand vorhanden sein sollte:
31+
32+
* Ballerkennung mit Kamera
33+
* Erkennung von Toren
34+
* Berechnung der Ballgeschwindigkeit
35+
* aufbereitete Darstellung in Web-Oberfläche
36+
* Visuelles Signal durch angesteuerten LED-Streifen
37+
* Soundausgabe
38+
39+
Diesen Stand haben wir, natürlich mit unterschiedlicher Perfektion und Finalisierung, mittlerweile erreichen können und
40+
das Projekt auf einer Produktmesse aufbauen und vorzeigen können.
41+
42+
<img src="/assets/images/impressions_from_working_on_sft/sft_messe.jpg" alt="drawing" width="200"/>
43+
44+
## Team
45+
46+
Wir sind drei Personen, was sich als angenehme Teamgrösse herausgestellt hat.
47+
Jede Person bringt ihre eigenen Kernkompetenzen mit, sodass wir, neben einem bereits vorhandenen Wissen über Agilität und
48+
Software Engineering auch jeden Bereich im Projekt (Frontend, Backend) gut abdecken können.
49+
50+
## Zeitrahmen
51+
52+
Da es sich komplett um ein privates Projekt handelt, gibt es zwar leider kein Budget, aber auch keinen Zeitrahmen.
53+
Wir arbeiten daran, weil es Spass macht und sind deshalb auch nicht in regelmässiger Form an der Entwicklung.
54+
55+
## Aktueller Stand
56+
57+
Der aktuelle Stand kann im GitHub-Repository und den hier folgendenen Dokumenten nachvollzogen werden. Kurzgesagt sind wir mit den oben gelisteten Punkten zwar nicht
58+
komplett fertig, der aktuell vorhandene Stand kann aber diese Punkte abdecken.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
title: 'Project Structure ENG (wip)'
3+
---
4+
5+
work in progress
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
---
2+
title: 'Architektur DE'
3+
---
4+
5+
Eine Übersicht über die verschiedenen Bestandteile, die SFT ausmachen.
6+
7+
## Übersicht
8+
9+
Das folgende Architekturbild zeigt eine Übersicht über die Bestandteile des SFT-Projekts:
10+
11+
![architecture](/modules/smart-football-table/architecture/SmartFootballTable_Architecture.png){:class="img-responsive"}
12+
13+
Eine schlanke Architektur mit wenigen "Point of Failures" war von Beginn an das Ziel des Projekts.
14+
Es gibt keinen Grund, dies bei der kleinen Anzahl an Services anders zu lösen.
15+
16+
Das Herzstück stellt der MQTT-Broker da. Jeder Service kommuniziert über MQTT.
17+
Damit stellt der Broker auch das kritischste ELement dar; fällt er aus, funktioniert die Anwendung nicht mehr.
18+
Um den Broker finden sich dann die Services mit ihrer dedizierten Aufgabe, sei es das Kameramodul, welches sich um die Ballerkennung kümmert oder die Soundausgabe.
19+
20+
Auf diese Weise können auf simple Art und Weise weitere Services angebunden (oder auch entfernt) werden. Solange sie mit MQTT kommunizieren können ist eine Anbindung problemfrei möglich.
21+
22+
## Komponenten
23+
24+
Insgesamt sind zurzeit folgende Komponenten teil von SFT:
25+
26+
* MQTT-Broker
27+
* Ball-Erkennung (Kamera + OpenCV, in Python) -> [GitHub-Link](https://github.com/smart-football-table/smart-football-table-detection)
28+
* Analyse der erkannten Ballpositionen (in Java) -> [GitHub-Link](https://github.com/smart-football-table/smart-football-table-cognition)
29+
* simple UI für die Anzeige der Analyse (in Angular) -> [GitHub-Link](https://github.com/smart-football-table/smart-football-table-ui)
30+
* ein kleiner Service zur Soundausgabe (in Bash gelöst) -> [GitHub-Link](https://github.com/smart-football-table/smart-football-table-sound)
31+
* Steuerung der LED-Leiste (in Java mit Microcontroller) -> [GitHub-Link](https://github.com/smart-football-table/smart-football-table-ledcontrol)
32+
33+
## Containerisierung mit Docker
34+
35+
Jeder Service läuft in einem Docker-Container (mit Ausnahme von der Ball-Erkennung in Python, da aktuell die Freigabe des Videos nach aussen noch nicht funktioniert).
36+
Mithilfe einer übergreifenden docker-compose-Konfiguration kann die Anwendung auf diese Weise systemunabhängig schnell und einfach hochgefahren werden.
37+
38+
## Submodule in Git
39+
40+
Ein zentrales Repository, welches die Services als Submodule hinterlegt, vereinfacht das Sicherstellen einer lauffähigen Anwendung.
41+
Die Subdmodule sind dabei auf einen bestimmten Commit verlinkt, um einen gleichen Stand sicherzustellen.
42+
43+
## Gründe sowie Vor- und Nachteile dieser Architektur
44+
45+
Der Schnitt der Services auf die oben beschriebene Art und Weise basiert auf einigen Annahmen, welche wir getroffen haben:
46+
47+
* Module sollen unabhängig voneinander entwickelt werden können, ebenso unabhängig voneinander auch refactored werden.
48+
* Dabei hilft Entkopplung: Unabhängig voneinander arbeiten zu können war eine Grundlage für die getroffenen Architekturentscheidungen. Dafür bedarf es nicht zwangsweise Microservices.
49+
* Quereffekte in hoher Zahl wie beispielsweise das Wegbrechen von Modulen sollen selten auftreten können. Noch wichtiger: Ein Teilausfall soll keinen Komplettausfall nach sich ziehen (mit genannter Ausnahme des Brokers. Bei einem Totalausfall kann aber fast immer beim Broker nachgesehen werden und das Problem ist gefunden).
50+
51+
## Technologieauswahl
52+
53+
Eine Frage, die aufkommen kann, ist: Warum wurden für die verschiedenen Module so viele verschiedene Technologien gewählt?
54+
Auch wenn es eine valide Option ist, einfach eine Sprache wie Java zu wählen, haben wir uns an folgenden Gedanken gehalten:
55+
56+
*Welches Werkzeug passt zu meinem Problem bzw. zu meinem Team und dessen Fähigkeiten?*
57+
58+
Die erhöhte Komplexität durch verschiedene Werkzeuge wird in unseren Augen erfolgreich kompensiert durch die bessere Anpassungsfähigkeit der Werkzeuge an das Problem. Sofern im Team mit den gewählten Technologien umgegangen werden kann gibt es keinen Grund, sich durch eine Standardisierung einzuschränken.
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
---
2-
title: 'Architecture'
2+
title: 'Architecture ENG (wip)'
33
---
44

5+
(work in progress)
56
The system behind SFT became large really fast. Rethinking the architecture happens way more often than thought. This post explains the actual solution.
67

78
## Overview

_sftcomponents/2_mqtt_de.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
title: 'MQTT DE'
3+
---
4+
5+
Bla
6+
7+
## Bla
8+
9+
Bla Bla
Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: 'MQTT'
2+
title: 'MQTT ENG (wip)'
33
---
44

55
Find out about the reason for MQTT and the different messages used.
@@ -10,6 +10,11 @@ For communication between different parts in the system MQTT is used. As seen in
1010
the system publishes/subscibes to a broker. With this setup, messages in different topics can trigger different
1111
reactions. For example, this is used to inform the UI about a new score.
1212

13+
Handy controls
14+
15+
Schwierigkeit: was ist mit den vereinbarten Contracts? MQTT-Topics können nicht einfach ausgetauscht werden, ohne nicht alle zu benachrichtigen, die Zuhören. Aber: Woher weiß ich überhaupt, wer alles auf das Topic lauscht?
16+
--> Kommunikation wird entgegen üblicher Annahmen noch viel wichtiger, wenn so wie hier entkoppelt wird
17+
1318
## MQTT messages
1419

1520
| topic | Description | Example payload | Comment |
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
title: 'Ballerkennung DE'
3+
---
4+
5+
Bla
6+
7+
## Bla
8+
9+
Bla Bla
10+
11+
<img src="/assets/images/impressions_from_working_on_sft/camera_holder.jpg" alt="drawing" width="200"/>
12+
13+
<img src="/assets/images/impressions_from_working_on_sft/camera_holder_attached.jpg" alt="drawing" width="200"/>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: 'Ball Detection'
2+
title: 'Ball Detection ENG (wip)'
33
---
44

55
## Smart Football Table - Detection

0 commit comments

Comments
 (0)