=====TensorFlow & Kommunikation mit dem Arduino per Bluetooth=====
====1. Einführung====
[[https://de.wikipedia.org/wiki/TensorFlow|TensorFlow]] ist ein Framework, welches eine vereinfachte Anwendung von Algorithmen aus dem maschinellen Lernen ermöglicht. Damit kann man z.B.:
* [[https://github.com/tensorflow/tfjs-models/tree/master/posenet|Posenet]]: die Stellung von einem oder mehreren Menschen erkennen,
* [[https://github.com/tensorflow/tfjs-models/tree/master/body-pix|Body-Pix]]: den menschlichen Körper segmentieren,
* [[https://github.com/tensorflow/tfjs-models/tree/master/facemesh|Facemesh]]: markante Punkte im Gesicht erkennen,
* [[https://github.com/tensorflow/tfjs-models/tree/master/handpose|Handpose]]: die Handstellung erkennen usw.
Es gibt TensowFlow-Implementationen für verschiedene Sprachen, z.B. Python, C++, Java und JavaScript. Die JavaScript-Variante scheint einfacher für den Start zu sein. Euer TensorFlow-Code läuft dabei im Browser.
Probiert die TensorFlow-Beispiele aus, indem ihr auf die entsprechenden Links in der Liste oben klickt!
TensorFlow ist rechenintensiv. Deswegen ist es (zu diesem Zeitpunkt im Januar 2021) ziemlich langwierig, es auf einem Smartphone oder Raspberry Pi zu betreiben (bzw. wir haben noch keine gute Lösung gefunden). Es gibt zwar die abgespeckte Variante [[https://www.tensorflow.org/lite/api_docs|TensorFlow Lite]], jedoch scheint es momentan einfacher, TensorFlow auf einem PC zu laufen und nur die Ergebnisse bei Bedarf über serielle Kommunikation an den Arduino zu schicken. Bei mobilen Robotern kann die serielle Kommunikation über Bluetooth laufen. Diesem Thema (TensorFlow & Kommunikation über die serielle Schnittstelle) widmet sich dieser Artikel.
Bei mobilen Robotern kann man über die App [[https://www.dev47apps.com/|DroidCam]] die Handy-Kamera als externe kabellose Webcam nutzen. Wenn der Rechner und das Handy beide im gleichen WLAN-Netzwerk sind, kann man sie kabellos über WLAN verbinden. Die dafür erforderliche IP-Adresse wird in der App angezeigt.
====2. Einfacher(er) Einstieg in TensorFlow====
Da ihr euch im Crashkurs mit Processing vertraut gemacht habt, könnt ihr [[https://p5js.org/|p5.js]] nutzen -- die Processing-Variante für JavaScript. [[https://www.youtube.com/watch?v=EA3-k9mnLHs|Hier]] gibt es eine gute Einleitung, wie man die TensorFlow-Bibliothek Posenet (für die Einschätzung der menschlichen Stellung) in p5.js verwendet.
In dieser Video-Einleitung wird das Programm im [[https://editor.p5js.org/|p5.js-editor]] ausgeführt. Alternativ könnt ihr Dasselbe in Textdateien auf eurem Rechner abspeichern und ausführen. Dass es verschiedene Text-Dateien gibt, wird auch im Einleitungsvideo (ab ca. 26. Min.) erwähnt. Die .html-Datei beinhaltet das Grundgerüst der Webseite, in der .js-Datei läuft euer Code.
Informiert euch, warum JavaScript überhaupt in Webseiten verwendet wird und wozu der