 Übersetzung für den Vortrag modeling physical systems for hobbyists. Wir sind Toni und Breton Toast und wir sind froh um Feedback auf Twitter mit dem Hashtag C3T. Also willkommen Manuel für den Talk Modellierung und Simulierung von physischen Systemen für Leyen. Was ich vergessen habe ist, dass alle Beispiele, die ich euch zeigen werde, könnt ihr einfach runterladen auf der Webseite. Also wenn ihr euch das mal ausprobieren wollt jetzt oder wannanders, ihr könnt das sofort machen. Okay, jetzt fangen wir mal an indem wir den Titel auseinandernehmen und was meine ich mit den einzelnen Wörtern und das gibt uns einen Überblick darüber worüber wir reden wollen. Modeling hier bedeutet eine mathematische Beschreibung eines Systems zu erstellen. Also wir schauen uns die Physik eines Roboters zum Beispiel an, was für physische Parts gibt es, welchen physischen Mechanismus und wir holen die Effekte und Gleichungen raus und die Gleichungen die diese Effekte beschreiben und dann kriegen wir eine mathematische Beschreibung dieses Systems. Simulation bedeutet, dass sobald wir dieses System beschrieben haben, dieses Modell, dann benutzen wir den Computer, um da Berechnungen anzustellen, Schritt für Schritt und im Prinzip von einem Initialstadium weiterzudenken, wie wird das über die Zeit sich entwickeln und in diesem Talk werde ich jetzt reden über physische Systeme, also Hardware die man die man einfach erstellen kann und nicht irgendwas fiktional ist, sondern was das man wirklich in der Hand halten kann. Also zum Beispiel ein mobiler Roboter, eine Drohne, also als jemand der etwas erstellt, als ein Maker, dass wir vielleicht erstellen möchten und ich mache das für Leyen. Also ich will nicht sagen, dass ihr das Leyen nichts können, aber was ich meine ist, dass die Ressourcen die wir benutzen werden sehr einfach zufänglich sind. Es ist nicht irgendwie Simulationssoftware, die man kaufen muss für viel Geld. Okay, jetzt eine kurze Frage. Wer von euch hat Mathe-Kurse an der Uni besucht? Okay, ganz schön viele. Ich habe diese Vorlesung vorbereitet, so dass Leute die nur Mathe bis zu 10. Klasse gemacht haben, den immer noch verstehen, aber vielleicht kann es ein bisschen, vielleicht ist es ein bisschen einfacher für euch, aber ihr könnt das euch dann euren Nachbarn helfen. Also warum wollen wir überhaupt Simulation verwenden? Okay, stell dir vor, mit deinem Freund möchtest du einen kleinen Roboter bauen, der sich selbst im Gleichgewicht hält. Also mit zwei Rädern, ein Motor, jedes Rad hat einen eigenen Motor und dann gibt es eine Kamera, die auf einem Stab fixiert ist. Und dann hat dieser Roboter sozusagen einen höheren Sichtpunkt. Und das ist sozusagen ein inverted Pendel, also wenn man das einfach so aufbaut, dann würde das einfach umfallen. Aber es ist relativ einfach, das umzusetzen. Also du willst das mit deinen Freunden bauen und ihr seid relativ gut beim Programmieren, aber ich bin nicht so gut mechanisch und der Freund sagt, okay, ich werde die Hardware aufbauen. Aber wie kann ich jetzt die Software entwickeln, bevor die Hardware fertig ist? Und das ist wo Simulation euch helfen kann, zum Beispiel? Also während dein Freund die Hardware aufbaut, kannst du schon mit der Software anfangen, mit dem Simulator, der praktisch die Hardware darstellt, während sie nicht da ist und du kannst schon den Controller programmieren und sobald die Hardware fertig ist, kannst du den Controller einfach behalten und den Simulator einfach wegschmeißen. Und wenn alles gut läuft, funktioniert das dann und es läuft dann alles gut und das System ist dann fertig. Hier ein Beispiel mit Python, ein kleiner Simulator. Ihr könnt euch den Code online runterladen. Ihr seht hier, die Simulation läuft schon, aber es ist tatsächlich schon sehr aus im Gleichgewicht. Das heißt es bleibt stehen. Wenn ich jetzt aber ihnen die eine oder andere Richtung ein bisschen anstupste, dann fällt er um. Jetzt kann ich den Controller aktivieren und ist ein bisschen nach rechts und links pushen und der Controller wird dafür sorgen, dass er wieder ins Gleichgewicht kommt. Und der Controller ist der Teil, den du selbst in Software schreibst. Der Teil, der umfällt, ist die Hardware, die dein Freund bauen würde und der Teil, der bleibt, das ist irgendwie das, was du machen würdest. Und das ist so ein Beispiel, was du machen könntest mit diesen Methoden. Das Problem ist, ich habe nicht so viel Zeit hier. Deswegen werde ich nicht irgendwie alles extrem erklären und wir werden einfach mal schauen, wie weit wir kommen. Also um mal das zusammenzufassen, Simulation kann im Prinzip die Hardware genutzt werden als Ersatz für unsere Hardware und als virtuelles Testlabor und vor allen Dingen dann, wenn man nicht unbedingt das Ganze nicht unbedingt mit der echten Hardware ausprobieren möchte, weil die Hardware dann kaputt gehen würde. Jetzt erstmal einen Schritt zurück vor dem Modellieren, was sind so die grundsätzlichen Formeln. Stellt euch mal vor, das ist hier Newton und unser Apfelbaum. Und was würde passieren? Wir können uns das jetzt mal angucken auf verschiedenen Leveln der Details. Das einfachste Level ist, der Apfel fällt runter und ihr seht, diesen Plot hier ist einfach eine Linie, die runter geht mit einer konstanten Geschwindigkeit. Das ist jetzt erstmal so eine Beobachtung, die man sehr einfach machen kann, da braucht man nichts messen. Dann gibt es ein bisschen detaillierter, dass wenn man eine bisschen bessere Messerung macht, dann sieht man, dass der Apfel beschleunigt und man bekommt diese parabolische Kurve, weil die Gravitation beschleunigt den Apfel, der Apfel wird schneller und schneller. Und wenn du dann noch mal ein bisschen mehr Details reinnimmst, dann siehst du, dass es eine Reibung gibt, das Apfels an der Luft, aerodynamische Reibung und der Apfel beschleunigt nicht unendlich viel, sondern erreicht eine Endgeschwindigkeit, die dann konstant bleibt. Das ist beispielsweise ein Falschemspringer, der vom Himmel verliegt und dann irgendwann sieht man, dass es da halt diese Endgeschwindigkeit gibt über längere Zeit. Was ihr jetzt mitnehmen sollt hiervon ist, dass abhängig von der Frage, mit wie viel Details man die Frage anguckt in eurer Simulation, dann ihr müsst für eure Simulation ein akzeptable Menge an Details betrachten und das kann von System zu System sich ändern. Beispielsweise könntet ihr einfach nur interessiert sein, am Verhalten ganz zu beginnen, das heißt, ihr müsst nur die Beschleunigung betrachten und später könntet ihr euch fragen, was passiert später, wenn die Geschwindigkeit konstant bleibt. Jetzt gehen wir mal ein bisschen weiter zurück und gucken uns die mathematischen Methoden an. Und das ist jetzt Differenzierung, Ableitung und Integration und viele physikalische Prozesse sind miteinander verknüpft über Ableitung und Integration. Beispielsweise, wenn ihr euch die Position x ansieht und die Beschleunigung habt, dann leitet ihr x ab und bekommt die Geschwindigkeit v und wenn ihr das wieder ableitet, kommt ihr zur Beschleunigung. Andersrum, wenn ihr die Beschleunigung integriert, bekommt ihr die Geschwindigkeit und wenn ihr die Geschwindigkeit wieder integriert, kommt ihr wieder zur Position. Das kennt ihr wahrscheinlich noch aus der Schule. Ihr könnt hier die Ableitung berechnen über diesen Limis hier und das ist dann das Verhältnis zwischen zwei Punkten in der Zeit zu verschiedenen Zeitpunkten, zu dem Zeitpunkt t plus h minus eben zu dem Zeitpunkt t und das dividiert ihr durch den Zeitschritt h. Wenn ihr jetzt euch den Randzustand anguckt, wo h, also der Zeitschritt gegen 0 geht, dann bekommt ihr die Geschwindigkeit zu genau dem Punkt in der Zeit t. Wenn ihr das ein bisschen ändert und anstatt durch h zu dividieren, mit h multiplizieren, dann bekommt ihr die Gleichung auf der rechten Seite, die euch dann die Möglichkeit gibt, um die Position aus der Geschwindigkeit zu berechnen und ihr seht, das hängt ab von dem x, also der Position zu einem Zeitpunkt und es hängt gleichzeitig davon ab, wie die Geschwindigkeit zu einem bestimmten Zeitpunkt war, multipliziert mit dem Zeitschritt h. Wenn ihr euch jetzt den Limis anguckt, den Grenzfall, dass euer Zeitschritt unendlich klein wird, nämlich 0, dann bekommt ihr das Integral. Wir können also gucken, wir sehen also tatsächlich durch Integration, können wir in die Zukunft gucken, während wir über die Ableitung so ein bisschen in die Vergangenheit gucken können. Wenn ihr integriert, wie gesagt, könnt ihr in die Zukunft gucken, wenn ihr Ableitet, könnt ihr die Vergangenheit gucken und das ist genau das, was wir in einer Simulation machen wollen. Wir gucken uns die Position zu einem Punkt, zu einem Zeitpunkt t an und wollen wissen, was passiert am nächsten Zeitpunkt. Wir wollen also integrieren in dem Fall, nicht ableiten. Das einzige Problem, was ihr da habt, ist, dass dieser Grenzfall, den Mathematiker benutzen, wo der Zeitschritt unendlich klein ist, können wir für, können wir einfach nicht als Software schreiben. Deshalb müssen wir etwas anders benutzen, nämlich die sogenannte Euler-Methode. Das bedeutet, wir ersetzen den Grenzfall mit H gegen 0 durch ein H, das einen tatsächlichen Wert hat, den es sogenannte TS, das ist unsere Sampling-Periodesamplingzeit und dafür nehmen wir einen kleinen aber halt eben begrenzten Wert. Und dann mit dieser Sampling-Periode TS werden wir als nächstes jetzt die Punkte in der Zeit durch Integration berechnen. Wir bekommen dann also K, den Index und berechnen aus diesem K den Punkt in der Zeit. Das ist dann die sogenannte Diskretisierung. Und wir transformieren dadurch die obere Gleichung in die untere, indem wir, wenn wir diese dann wiederum durch TS dividieren, bekommen wir die folgende, die folgende Gleichung, die dann sagt X von K plus 1 ist gleich X von K plus V die Geschwindigkeit von K zum Zeitpunkt K multipliziert mit dem Zeitschritt TS. Ich zeige euch jetzt mal ein einfaches Beispiel in dieser Tabelle hier, um euch zu zeigen, dass es relativ unabhängig ist, von welcher Software ihr benutzt. Wir definieren jetzt ein paar Konstanten auf der linken Seite, eine Sampling-Periode von einer Millisekunde. Wir haben es in Sekunden, also 0.001 Sekunden. Wir haben den Index, wir haben die Zeit, wir nennen den Index K und die Zeit T, wir haben die Position X und wir haben die Beschleunigung, die Geschwindigkeit, die wir nennen wir V. Jede Zeile wird hier jetzt ein Punkt in der Zeit sein. Und zu Beginn setzen wir alles einfach auf 0, so wie das, was wir gerade sehen. Okay, so was machen wir als nächstes? Wir haben diese Formel und wir brauchen also ein K plus 1. Das nächste K ist das Vorhergehende plus 1 und die Zeit, ich habe jetzt die Formel abgedeckt, tut mir leid. Die Zeit, die wir jetzt haben, ist genau dieser Index multipliziert mit der Sampling-Periode. Wir benutzen die Dollarzeichen dafür, damit das Ganze gleich bleibt, wenn wir die Zeile ändern. Jetzt haben wir die Integrationsformel, das heißt das nächste X ist das Vorhergehende X, multipliziert mit der Geschwindigkeit, multipliziert mit der Sampling-Periode auf diese Art und Weise hier, wieder mit den Dollarzeichen. Und jetzt wäre es sehr langweilig, wenn die Geschwindigkeit immer 0 wäre. Deshalb setzen wir die auf einen halben Meter, die Sekunde, 0,1 Meter pro Sekunde. Jetzt wollen wir den nächsten Punkt in der Zeit sehen, deshalb machen wir dasselbe, was wir haben, die immer wieder und immer wieder. Und ich mache das hier einfach mal durch ein Copy Paste und wir sehen hier unsere Zeitentwicklung. Beispielsweise, ich könnte jetzt ein Plot machen, der die Positionen über der Zeit zeigt und dann nehme ich als X-Achse die Zeit, die Positionen als die Y-Achse. Und das füge ich jetzt hier ein. Das ist jetzt noch nichts Besonderes, was wir hier sehen, aber es ist so ziemlich genau das, was wir erwarten würden, wenn wir eine Konstante über die Zeit integrieren. Und dann bekommen wir im Prinzip eine Gerade. Jetzt können wir noch die Beschleunigung hinzufügen, die wir A nennen. Wir fangen mit 0,5 an. Und was wir jetzt machen ist, wir benutzen diese Formel, die wir vorhin verwendet haben. Wir benutzen die Formel für die Geschwindigkeit. Und jetzt können wir diese Zeile einfach kopieren. Und jetzt können wir das im Prinzip nochmal ein paar Mal machen. Jetzt haben wir eine gleiche Beschleunigung. Das heißt, wir integrieren zweimal und wir kriegen die Position jetzt als Parabel. Ich hätte die Beschleunigung negativ machen können, dann hätten wir das gleiche gehabt, wie vorhin mit dem Runterfallen. Das ist bis jetzt noch nicht ganz so nutzlich, aber wenn wir jetzt sagen, die Beschleunigung ist nicht irgendwie konstant, sondern wir haben eine Beschleunigung, die sich verändert, dann kann ich so, ohne dass ich irgendwas wissen muss über die Form der Beschleunigung, kann ich es immer integrieren, auch wenn ich zufälligen Input habe oder Sensorinputs. Aber jetzt wollen wir auch was modellieren. Wir haben ja noch nicht das physische System. Also woher kriegen wir jetzt die Beschleunigung her? Eine Sache noch, es ist wichtig, dass wir die Sampling-Periode immer klein halten. Wir werden jetzt nicht irgendwie alle physischen Sachen zusammenfassen, sondern stattdessen werde ich eben nur bestimmte Dinge machen. Also zum Beispiel wenn ich jetzt ein Leverarm habe, also wenn ich jetzt, wir fangen mit der kleinsten, mit der einfachsten Version an, eine Masse, die sich bewegt. Die Masse hat die Masse M und die Geschwindigkeit V. Und wenn ich jetzt diese Bewegung verändern möchte, dann brauchen wir eben eine Kraft F. Und das ist die zweite Regel der Bewegung. Also die Kraft, die wir brauchen, ist proportional zu der Masse. Okay, ich muss noch ein bisschen schneller werden, weil ich nicht mehr so viel Zeit habe. Die gleiche Gleichung für lineare Bewegungen gibt es auch für Drehende Bewegungen. Und wir haben dann auch das Gewicht. Das hatten wir zum Beispiel im Beispiel des Apfels. Die Kraft des Gewichts ist praktisch die Masse mal das Gewicht, mal die Gravitation. Und andere Effekte, die man haben kann, sind zum Beispiel Federn und die Kraft die Federn auslösen. Wenn man zum Beispiel in einer Bremse, wenn man zum Beispiel einen harten Kontakt modellieren möchte, dann wie ich zum Beispiel am Anfang hatte, ein Beispiel der Roboter, der sich umfällt und auf den Boden fällt. Und dann sagt man, die Härte ist relativ hoch. Also wir gucken uns das jetzt noch mal an. Wir kombinieren, wir wollen einfach nur für das Beispiel, wollen wir eine Dämpfung haben. Wir setzen also hier die Gravitationskraft ein und eine Federkonstante und eine Dämpfung. Eine Dämpfungskonstante. Und was ich jetzt hier nicht gesagt habe, ist, dass diese Kraft hier, dieses F, nicht unbedingt eine Kraft sein muss, sondern auch das Ergebnis von vielen Kräften ist. Das bedeutet, man hat hier möglicherweise mehrere Vektoren, die man miteinander addiert und bekommt dadurch verschiedene Kräfte. Also was wir jetzt hier machen ist, wir summieren die ganzen Kräfte auf, also von über die Gravitation, die, so jetzt ist das natürlich eine Konstante. Ich brauche für die Gravitation jetzt also noch die Kraft und da setze ich dann als Masse ein halbes Kilo ein und für die Federkonstante sagen wir jetzt einfach mal die Sei-100. Das sind 100 Newton pro Meter. Newton pro Meter ist die Einheit. Für die Dämpfung setzen wir mit der Einheit Newton mal Sekunde pro Meter die Einheit auf 10. Jetzt habe ich alle Parameter einfach mal so zufällig reingesetzt, aber wenn ihr ein System designt und eine Simulation designt, dann könnt ihr euch euer System angucken und die Werte von dem System dann rausziehen, was hier wirklich baut. Jetzt habe ich sie einfach mal einfach zufällig rausgewehrt. Also wir haben die Gravitation, wenn wir hier reingucken, ist die Masse M mal ein kleines G, die Gravitationskonstante und das ist die sehr gut bekannte 9.81 Meter pro Sekunde. Und dann setze ich jetzt mal die Masse da ein. Die wird multipliziert mit der Gravitationsbeschleunigung. Ich füge noch mal die Dollarzeichen da ein, damit das konstant bleibt. Dann habe ich meine Feder. Ich habe ja gesagt, ich sagte vorher schon X0, also der Startpunkt ist 0. Deshalb setze ich hier nur die aktuelle Zeit ein, also minus die Federkonstante, mal die Position. Und was ich jetzt nicht erzählt habe, ist, dass man sieht, dass das, wenn man Mathe kennt, dass das eine Differenzialgleichung ist, die wir hier lösen, aber ihr müsst euch da jetzt nicht zu viel Sorgen drüber machen, weil die Euler-Methode kümmert sich schon darum, dass wir die Differenzialgleichung richtig lösen. Okay, also ich nehme jetzt hier die Dämpfungskonstante, multipliziert mit der Geschwindigkeit. Und okay, und jetzt kopiere ich es jetzt mal nach ganz unten, als wären das so 60 Sekunden etwa. Das dauert jetzt halt ein bisschen länger. Tatsächlich, was ihr jetzt hier seht, ist, was ich euch schon vorher gesagt habe, dass die Sample-Zeit ein Problem darstellen kann, weil wir gerade ein Fehler in der Euler-Methode gemacht haben, weil wenn die, normalerweise haben wir so ein Feedback-Kreislauf in der Differenzialgleichung, weil wenn es einen Fehler gibt, dann wird er durch den Feedback-Lub wieder aufgehoben, aber wenn die Sampling-Zeit zu kurz wird, dann wird dieser Fehler multipliziert mit der Zeit und man bekommt ein instabiles Verhalten. Das kann ich euch jetzt noch mal größer zeigen, wenn ich jetzt nur eine hundertste Sekunde nehme, dann sieht man, dass die Werte unendlich groß werden. Meine Simulation ist dementsprechend nicht robust über lange Zeiten, deshalb wir brauchen also eine kurze Sampling-Zeit, denn ansonsten bekommen wir diesen Fehler. Wenn die Sampling-Zeit so groß ist, wird die Simulation instabil. Ich habe jetzt also einen kürzeren Wert gewählt, was jetzt natürlich ein Problem ist, weil ich jetzt nur noch 6 Sekunden statt 60 simuliere, aber was man sieht, man muss immer so eine Abwägung machen zwischen der Komplexität des Modells und der Genauigkeit, die wir ausrechnen können. Die außerdem noch, natürlich muss man einen Trade auf einen Bezug auf die Robustheit der Simulation. Es kommt gerade eine Frage aus dem Raum, den man im Stream leider nicht hört. Die Frage war, ob das eine Resonanz war, in der Theorie, ich habe jetzt möglicherweise einen Fehler in der Berechnung gemacht und ich zeige euch jetzt einfach die, die ich vorbereitet habe vor dem Talk. Ich wäre jetzt einfach mal die, die ich korrekt vorbereitet habe, weil da war ganz oft nicht ein Fehler, den ich gerade gemacht habe. Das hier ist jetzt der Effekt, den ihr erwarten würdet. Man startet an einer bestimmten Position, dann hat man diese Oszellation für die Feder, die immer wieder zurückspringt, erst nach außen, dann zum Zentrum, dann wieder nach außen und diese Schwingung wird dann immer schwächer mit der Zeit. Ich habe jetzt so langsam leider wirklich keine Zeit mehr, deshalb ich wollte eigentlich noch ein bisschen elektronische Beispiele bringen aus der Elektronynamik, um euch einen elektrischen Motor zu zeigen. Ich kann euch das jetzt noch mal schnell zeigen hier in der, in den vorbereiten Folien. Das nette, was man beim elektrischen Motor hat ist, dass man hier sieht, wie man Probleme löst, die zwei, zwei verschiedene Gleichungen haben, die miteinander verknüpft sind. Beispielsweise dieses Beispiel hier, da hat man, da zieht man jetzt auch noch mit in Betracht, dass es ein Physik, also wo man ein zusätzliches physikalisches, physikalischen Effekt mit einbezieht oder eben auch nicht. Wie gesagt, ihr könnt euch das alles von einer Website runterladen und euch angucken, wenn ihr wirklich interessiert seid. Okay, das bringt mich jetzt noch zum Ende vom Vortrag und ich sag euch jetzt noch ein paar Tipps und Tricks. Die Samplingperiode muss ziemlich klein sein. Als grobe, als grobe Annehme, nämlich mache ich sie 100 mal schneller als die Systemzeit, also die Konstanten, die ich dort habe. Meistens so eine Millisekunde ist vollkommen ausreichend. Ich weiß jetzt auch nicht, warum ich vorhin den Problem da hatte. Aber eine Millisekunde funktioniert meistens gut. Wenn ich jetzt den elektrischen Motor mit der Spule habe, dann brauche ich meistens mit so einer Zeit von 10 Millisekunden, dann muss ich eine kürzere Periode nehmen. Okay, dann als zweiter Punkt ist benutzt Blockdiagramme. Das hier ist ein sogenanntes Blockdiagramm. Das hilft euch, wenn ihr halt im Blick behalten wollt, welche Größen, welche anderen beeinflussen. Okay, das ist jetzt natürlich am Anfang ein bisschen schwer zu lesen, aber wenn ihr da euch ein bisschen vangewöhnt, dann wird es ziemlich hilfreich. Und wenn ihr dann euch sicher sein wollt, dass ob ihr komplexere Modelle braucht, die ihr so nebenbei braucht, dann könnt ihr beispielsweise SciPy benutzen oder OpenModellikam. Das sind dann differenzielle Gleichungslöser oder SciLab. Das ist grafisch und da könnt ihr einfach Blöcke hinzufügen, die dann dafür, die das dann für euch erledigen. Dort könnt ihr dann dieses Blockdiagramm einfach benutzen, anstatt Gleichungen zu schreiben. Also wie ich gesagt, diese spezialisierten Tools haben bessere Löser für die Differenzialgleichungen. Dies sehen also eher, wann es wichtig ist, diese Sampling-Periode klein zu machen. Und was auch sehr, sehr hilft, sind diese netten Data-Logging und Visualisierungstools, die man da bekommt. Ansonsten ist es manchmal wirklich etwas nervig, dass die Variablen alle im Kopf zu behalten und die alle irgendwie darzustellen. Okay, ich glaube, ich habe mich jetzt so lange so stark beeilt, dass ich immer noch ein bisschen Zeit habe. Deswegen kann ich jetzt noch mal ein bisschen was zeigen, wie das funktioniert mit einer kostenlosen Software. Ein grafisches Tool, um OpenModelliker zu benutzen. Und OpenModelliker selbst ist auch ein Modellierungsprogramm und eine Programmiersprache zum Definieren von Modellen. Okay, irgendwie funktioniert das jetzt gerade alles nicht, es startet nicht so wirklich. Dann kann ich euch stattdessen den Python Code zeigen des Simulators, den ich euch am Anfang gezeigt habe. Okay, was ich hier gemacht habe, war zwei Klassen definiert, einfach nur, damit ich die in verschiedenen Threats laufen lassen kann. Einen für die Simulation und einen für die Visualisierung. Und die Simulation ist tatsächlich relativ einfach. Die Visualisierung ist mehr Code Lines, also mehr Zylencode. Und wenn man die Simulierung anguckt, finde ich im Prinzip das, was ich vorhin hatte. Ich habe eine Loop, also eine Schleife, einfach nur im Prinzip, um so zu tun, als würde ich echte Zeit simulieren. Und hier benutze ich die Euler-Methode, um zu integrieren. Und da ist einfach nur die plus ist gleich Notation, also self.teta plus ist gleich, irgendwas bedeutet eben self.teta ist gleich self.teta plus Omega mal TS. Und hier haben wir jetzt die Rotationsgeschwindigkeit, dann die verschiedenen Taug-Effekte. Das sind, in diesem Fall geht es also um die rotierende Version und nicht die Visualisierte. Und hier ist jetzt zum Beispiel der Controller, den ich jetzt nicht schön geteilt habe, aber ihr solltet das immer machen, den schönen Aufteilen in verschiedene Bereiche. Und das gleiche nochmal für die linearen Bewegungen. Okay, die Zeit ist vorbei, aber wir nehmen jetzt noch ein paar Fragen. Also wenn es Fragen gibt, dann bitte einfach hinter die Mikrofone stellen. Okay, es gibt wohl keine Fragen, bitte seid nicht so schüchtern. Es scheint einige Leute zu geben, die irgendwie in die Viel darüber wissen, bitte seid nicht schüchtern. Hallo, danke für den Talk. Ich würde gerne fragen, ob der Code ist, ob der Code irgendwo verfügbar ist? Ja, wie ich gesagt habe, der alles, was ich eben Talk gezeigt habe, ist auf meiner Seite. Wenn ihr auf den Farbplan geht, dann gibt es dort ein Link zu der Seite, wo ihr den Code runterladen könnt. Gibt es da noch weitere Beispiele online? Also nicht von mir, aber es gibt sicherlich Millionen von Beispielen. Nur für diesen Talk habe ich jetzt nur das, was ich gezeigt habe, erstellt. Ich habe vielleicht noch eine Mehr, nämlich den Fall mit Reibung. Okay, ja, das ist so der Fall mit Reibung. Okay, eure Chance? Sie sind da Fragen aus dem Internet? Nein, finden wir nicht. Vielen Dank, Manuel, für den Talk. Und das war jetzt unsere