raumkurvenplotter

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
raumkurvenplotter [2022/04/11 22:49] – [Umsetzung] wschwaberaumkurvenplotter [2022/04/18 16:49] (aktuell) – [Benutzung] wschwabe
Zeile 5: Zeile 5:
 ==== Idee ==== ==== Idee ====
  
-Die Mathematik versteht unter Kurven parametrisierte Linienbeschreibungen. Sie werden meist mit zweidimensionalen Funktionsgraphen assoziiert. Diese bilden jedoch nur den Spezialfall ab, dass eine Dimension dem Eingabeparameter selbst entspricht. Wenn der zeitliche Verlauf des Eingabeparameters von der Linienbeschreibung entkoppelt wird, kann jeder Dimension eine eigene Funktion zugeordnet werden, welche den Verlauf der Kurve innerhalb dieser Dimension spezifiziert. Zudem lässt sich das Konzept auf beliebig viele Dimensionen ausweiten, wobei ab drei Dimensionen von Raumkurven gesprochen wird. Auf diese Weise können nahezu beliebige Linienfiguren erzeugt werden. Viele solcher Figuren wirken ästhetisch ansprechend und laden zur Auseinandersetzung mit den zugrundeliegenden analytischen und geometrischen Zusammenhängen ein. Allerdings lassen sich dreidimensionale Figuren auf einem zweidimensionalen Bildschirm als Projektion nur unvollständig darstellen. Wir möchten die Darstellung näher an die räumliche Intuition bringen, indem der Darstellungswinkel der Kurve per kinematischer Eingabe an die eigene Handbewegung gekoppelt wird. So kann diese im eigenen Tempo aus allen Winkeln frei erkundet werden.+Die Mathematik versteht unter Kurven parametrisierbare Linien. Sie werden meist mit zweidimensionalen Funktionsgraphen assoziiert. Diese bilden jedoch nur den Spezialfall ab, dass eine Dimension der Parametrisierung dem Eingabeparameter selbst entspricht. Wenn der Verlauf des Eingabeparameters vom Verlauf der Linie entkoppelt wird, kann jeder Dimension eine beliebige eigene Funktion zugeordnet werden, welche den Verlauf der Kurve innerhalb dieser Dimension spezifiziert. Zudem lässt sich das Konzept auf beliebig viele Dimensionen ausweiten, wobei ab drei Dimensionen von Raumkurven gesprochen wird. Auf diese Weise können nahezu beliebige Linienfiguren erzeugt werden. Viele solcher Figuren wirken ästhetisch ansprechend und laden zur Auseinandersetzung mit den zugrundeliegenden analytischen und geometrischen Zusammenhängen ein. Allerdings lassen sich dreidimensionale Figuren auf einem zweidimensionalen Bildschirm als Projektion nur unvollständig darstellen. Wir möchten die Darstellung näher an die räumliche Intuition bringen, indem der Darstellungswinkel der Kurve per kinematischer Eingabe an die eigene Handbewegung gekoppelt wird. So kann diese im eigenen Tempo aus allen Winkeln frei erkundet werden.
  
 ---- ----
Zeile 12: Zeile 12:
 Lissajous-Figuren entstehen aus der orthogonalen Überlagerung zweier Sinusse mit ganzzahligem Frequenzverhältnis. Das Prinzip funktioniert für beliebig viele Dimensionen. Das ganzzahlige Frequenzverhältnis sorgt für eine periodische Synchronisierung der Periodenanfänge der Einzelfunktionen, wodurch eine geschlossene Kurve entsteht. Durch Veränderung der Amplituden, Frequenzen und Phasenverschiebungen der Sinusse können sehr unterschiedliche Figuren entstehen. Lissajous-Figuren entstehen aus der orthogonalen Überlagerung zweier Sinusse mit ganzzahligem Frequenzverhältnis. Das Prinzip funktioniert für beliebig viele Dimensionen. Das ganzzahlige Frequenzverhältnis sorgt für eine periodische Synchronisierung der Periodenanfänge der Einzelfunktionen, wodurch eine geschlossene Kurve entsteht. Durch Veränderung der Amplituden, Frequenzen und Phasenverschiebungen der Sinusse können sehr unterschiedliche Figuren entstehen.
  
-TODOvideo vom arduino in hand mit plot auf bildschirm+{{:motionplot-moving-lissajous.mp4}}
  
 ==== Benutzung ==== ==== Benutzung ====
 Auf einem Raspberry Pi kann durch das Modifizieren einer dedizierten Pythonfunktion in unserem Plotprogramm eine Kurve spezifiziert werden. Dies kann per dedizierter Tastatur und Bildschirm oder remote per Laptop erfolgen. Statt des Raspberry Pi hätte grundsätzlich auch direkt ein Laptop verwendet werden können. Der Raspberry Pi macht das Setup aber etwas mobiler, weil eine Modifikation der Kurvenspezifikation auch via Weboberfläche per Smartphone erfolgen könnte (aus Zeitgründen nicht umgesetzt). Die Kurve wird dann als Projektion auf die xy-Ebene auf einem Röhrenfernseher dargestellt. Auf einem Raspberry Pi kann durch das Modifizieren einer dedizierten Pythonfunktion in unserem Plotprogramm eine Kurve spezifiziert werden. Dies kann per dedizierter Tastatur und Bildschirm oder remote per Laptop erfolgen. Statt des Raspberry Pi hätte grundsätzlich auch direkt ein Laptop verwendet werden können. Der Raspberry Pi macht das Setup aber etwas mobiler, weil eine Modifikation der Kurvenspezifikation auch via Weboberfläche per Smartphone erfolgen könnte (aus Zeitgründen nicht umgesetzt). Die Kurve wird dann als Projektion auf die xy-Ebene auf einem Röhrenfernseher dargestellt.
  
-Die Kurve steht zunächst still. Mit einer handgroßen Kugel kann die Perspektive dann beliebig rotiert werden. Die Kugel ist transparent und muss zunächst auf dem Tisch so ausgerichtet werden, dass der darin befindliche Arduino mit dem USB-Anschluss parallel entlang des Lots der Bildschirmmitte des Fernsehers zeigt, damit die Drehrichtungen des Plots den Handbewegungen entsprechen. Anschließend wird der Arduino per Switch an der Kugel angeschalten. Dazu muss die Kugel zunächst bewegungslos auf dem Tisch verbleiben. Der Arduino benötigt dann einige Sekunden, um sich mit dem Raspberry Pi zu verbinden und sein Gyrometer automatisch zu kalibrieren. Danach wird die Bereitschaft durch Leuchten einer LED signalisiert und die Kugel kann frei mit der Hand gedreht werden. Die Darstellung der Kurve ist an die Handbewegung gekoppelt und wird synchron rotiert.+Die Kurve steht zunächst still. Mit einer handgroßen Kugel kann die Perspektive beliebig rotiert werden. Die Kugel ist transparent und muss zunächst auf dem Tisch so fixiert werden, dass der darin befindliche Arduino mit dem USB-Anschluss parallel entlang des Lots der Bildschirmmitte des Fernsehers zeigt, damit die Drehrichtungen des Plots später den Handbewegungen entsprechen. Anschließend wird der Arduino per Switch an der Kugel angeschalten. Der Arduino benötigt dann einige Sekunden, um sich mit dem Raspberry Pi zu verbinden und sein Gyrometer automatisch zu kalibrieren. Danach signalisiert eine LED, dass die Kugel mit der Hand aufgenommen werden kann. Die Darstellung der Kurve ist an die Drehbewegungen der Hand gekoppelt und wird synchron rotiert.
  
 ==== Verknüpfung mit Analogtechnik ==== ==== Verknüpfung mit Analogtechnik ====
Zeile 30: Zeile 30:
 ---- ----
 === Kugel === === Kugel ===
-Die Plastikkugel stammt aus einem Bastelladen und besteht aus zwei zusammengesteckten Hälften. Darin ist ein batteriebetriebener Arduino Nano 33 IoT fixiert. Dieser besitzt ein eingebautes Gyrometer, welches zur Erfassung der Rotationsbewegungen verwendet wird. Das Gyrometer weist einen Messbias auf, welcher von den Messdaten abgezogen werden muss, da ansonsten auch bei Bewegungsstillstand eine Rotation signalisiert würde. Der Bias ergibt sich aus dem Durchschnitt sämtlicher Messwerte, welche innerhalb der ersten Sekunde nach dem Einschalten des Arduino und dem Verbinden mit dem Raspberry Pi anfallen. Während dieser Zeit darf das Gerät (d.h. die Kugel) nicht bewegt werden. Zusätzlich muss das Messrauschen berücksichtigt werden. Hierzu werden jeweils 5 Messpunkte zusammengefasst, deren Durchschnitt dann als aktuelle Winkelgeschwindigkeit weitergereicht wird. Das Gyrometer kann mit maximal rund 100 Hz messen. Daraus resultiert eine Sendefrequenz von 20 Hz, mit welcher der Arduino den Raspberry Pi via MQTT über WLAN mit Messdaten beliefert.+Die Plastikkugel stammt aus einem Bastelladen und besteht aus zwei zusammengesteckten Hälften. Darin ist ein batteriebetriebener Arduino Nano 33 IoT fixiert. Dieser besitzt ein eingebautes Gyrometer, welches zur Erfassung der Rotationsbewegungen verwendet wird. Das Gyrometer weist einen Messbias auf, welcher von den Messdaten abgezogen werden muss, da ansonsten auch bei Stillstand eine Rotation signalisiert würde. Der Bias ergibt sich aus dem Durchschnitt sämtlicher Messwerte, welche innerhalb der ersten Sekunde nach dem Einschalten des Arduino und dem Verbinden mit dem Raspberry Pi anfallen. Während dieser Zeit darf das Gerät (d.h. die Kugel) nicht bewegt werden. Zusätzlich muss das Messrauschen berücksichtigt werden. Hierzu werden jeweils 5 Messpunkte zusammengefasst, deren Durchschnitt dann als aktuelle Winkelgeschwindigkeit weitergereicht wird. Das Gyrometer kann mit maximal rund 100 Hz messen. Daraus resultiert eine Sendefrequenz von 20 Hz, mit welcher der Arduino den Raspberry Pi via MQTT über WLAN mit Messdaten beliefert.
  
 ---- ----
  • raumkurvenplotter.1649710181.txt.gz
  • Zuletzt geändert: 2022/04/11 22:49
  • von wschwabe