Beamertool /Lasersim für Raspberry Pi - Support Thread

  • Ich bin gerade dabei die Laser Simulation des Beamertools von zoidberg auf dem Raspberry Pi nachzubauen. Dazu suche ich jetzt Beta-Tester.


    Als Voraussetzung sollte man das Beamertool unter Windows kennen und mit DMX Control steuern können. Außerdem sollte man natürlich einen Raspberry Pi besitzten. Am besten noch Grundlagenkentnisse in Linux.


    Die LaserSimulation lässt sich über Art-Net steuern, für DMXControl das DDF des Windows Beamertools verwenden. Darum im Moment nur mit DMXControl 2 möglich. Es werden nur png-Texturen unterstützt, keine Videos, keine gif's.


    Hier mal der aktuelle Stand was funktioniert:
    - Die Lasersimulation empfängt Art-Net Daten auf SubNet 0 / Universe 0
    - Es sind im Moment 4 LaserSimulationen fest eingestellt auf DMX Kanal 200, 220, 240 und 260
    - Die Lasersimulation sollte dann mit dem laser2.xml DDF die gleiche Ausgabe wie das Windows Beamertool erzeugen.
    Außnahme: es werden nur png Bilder angezeigt, keine Videos, gif's damit ist der Animationsregler wirkungslos
    der Zoomregler, zoomt im Original abhängig vom Bildschirmseitenverhältnis in eine Elipse, bei mir wird in einen Kreis gezoomt
    - Theoretisch, kann man alle Dateinamen von 000.png, 001.png, ..., 255.png vergeben, jedoch reicht der Grafikspeicher des Raspberry Pi in der Standdarteinstellung(64MB) nur für ca. 50 Texturen, abhängig von der Texturgröße, bei 128MB Graphikspeicher entsprechend mehr


    Infos:
    - für jede nicht gefundene Textur wird im Moment noch die nan.png Textur verwendet, deshalb ist es wichtig die Datei nan.png mit in den Ornder zu kopieren.
    - es kann zu Problemen bei der Framerate kommen, wenn man viele Gobos (über Anzahl Regler) verwendet und diese recht groß skaliert
    Geschätzte Faustformel: solange Skalierung, Anzahl und Zoom, so eingestellt sind, dass sich keine Gobos überlappen, sollten keine Probleme auftreten. (Überlappung von anderen Laser Instanzen sind hierbei nicht gemeint)
    - ich empfehle, das Starten des Programms über ssh, da man es im Moment noch nicht direkt auf dem Raspberry beenden kann (nur durch Stecker ziehen). Über ssh kann man die Lasersim mit STRG+C beenden bzw. über sudo kill ..., außerem kann man so die Ausgabe des Programms beobachten insbesondere die FPS Anzeige.


    Fehler /fehlende Funktionen die mir schon bekannt (stehen auf der ToDo liste):
    - Mit Tastatureingabe beenden
    - Einstellungen in config Datei auslagern
    - Quellcode kommentieren und ordentlich formatieren
    - effizientere Möglichkeit zum PNG laden
    - Graphik Speicher effizienter ausnutzen, dass auch 64MB reichen
    - Beenden funktion /Speicher aufräumen anpassen
    - Problem beim Empfangen von Paketen: pro Aufruf von recieve wird nur das oberste Paket vom Empfangsstapel genommen aktuelle Lösung nimm solang vom Stapel bis kein Artnet-Packet mehr oben liegt; Problem das bleibt: kommt ein fremdes Paket oder ein nicht DMX artnetpacket verzögert sich DMX empfang um ein Schleifen/Rendering durchlauf bzw. bis wieder nur ArtNet DMX Pakete empfangen werden
    - Es kommt sporadisch zu dem Problem, dass bei einer Textur am oberen Rand eine schmale wiederholung des unteren Rands eingeblendet wird
    - FPS sinkt ab, wenn viele große Gobos



    Bitte schreibt alle weiteren Fehler die ihr finden könnt (plus eventell Funktionswünsche / ausgenommen hiervon sei mal eine Version für DMXControl 3)



    Download: lasersim.zip Edit: (neue Version vorhanden, Download im Beitrag unten!)


    Installationsanleitung für 2012-12-16-wheezy-raspbian:


    Kopiere die Dateien "lasersim.bin" und "nan.png" auf den Raspberry.
    z.B. in das Verzeichnis /home/pi/lasersim
    erstelle einen Unterordner "textures" für die Texturen und kopiere die Texturen dort hinein. Die Texturen müssen 000.png, 001.png, etc... heißen.


    die folgenden Schritte sind am einfachsten im Terminal einzugeben:


    die Raspberry Pi configuration aufrufen:

    Code
    sudo raspi-config


    memory-split auswählen und den Grafikspeicher von 64MB auf 128MB erhöhen.
    Dieser Schritt ist optional, jedoch kann man, bei nur 64MB Grafikspeicher, nur begrenz Texturen laden.
    Ich habe einen Raspberry Pi B Rev.2 also mit 512MB RAM, dort ist es kein Problem, eventuell bei einem Raspberry mit nur 265MB Ram ist es besser nur 64MB zu verwenden, dies kann ich aber leider nicht testen.


    in Verzeichnis /opt/vc/src/hello_pi wechseln

    Code
    cd /opt/vc/src/hello_pi


    rebuild.sh ausführen:

    Code
    ./rebuild.sh


    zurück ins lasersim Verzeichnis wechseln

    Code
    cd ~/lasersim


    lasersim.bin ausführbar machen

    Code
    chmod 755 lasersim.bin

    (eventuell sudo voranstellen)


    Starten:

    Code
    ./lasersim.bin



    Um die Datei im Anhang möglichst klein zu halten habe ich nur eine einzige Textur dazugepackt. Zum Testen habe ich die Texturen aus dem Wiki benutzt. Leider scheint der Link dazu nicht mehr zu funktionieren:http://www.dmxcontrol.de/wiki/Beamertool_Plugin_DMXC2 (ganz unten)


    Ich habe nur den Binärcode angehängt, da mein Quellcode im Moment noch ziemlich unkommentiert und leicht caotisch ist. Ich kann diesen aber bei Intresse gerne persönlich zusenden.


    mfg
    Moritz

  • Werde warscheinlich auch bald einen Raspberry haben :)


    Sobald ich ihn habe, werde ich das Beamertool für den Raspberry Pi ausprobieren :)
    Die Idee erscheint mir ganz sinvoll, denn einen ganzen PC/Laptopp nur für das Beamertool zu verwenden ist etwas oversized :D


    PS: Ich habe mich noch nicht großartig mit dem Raspberry beschäftigt, aber währe es auch (halbwegs einfach und günstig) möglich, den nicht nur via ArtNet, sondern auch mit DMX zu steuern?


    MfG Domi

  • Ja, DMXC kann es. Aber nicht alle Programme/Pulte.
    Ich weiß, wir sind hier im DMXC-Forum, aber ich denke, ein solches Projekt würde auch den einen oder anderen nicht-DMXC-User interessieren.


    Auch erscheint es mir etwas umständlich im extremfall z.B. über 100m Netzwerkkabel verlegen zu müssen, wenn vileicht direkt beim Beamer ein DMX-Kabel vorbeigeht ;)


    Aber es war ja nur ein Vorschlag ;)
    (muss man ja nicht umsetzen)


    MfG Domi :)

  • Auch erscheint es mir etwas umständlich im extremfall z.B. über 100m Netzwerkkabel verlegen zu müssen, wenn vileicht direkt beim Beamer ein DMX-Kabel vorbeigeht ;)


    Sehe ich nicht als Aufgabe des Raspberry.
    1. Artnet ist ein Standard, den eigentlich alle größeren Pulte unterstützen (ich unterstelle jetzt mal, dass Medien-Controlling mit einer gewissen Leistungsklasse des Pultes einher geht)
    2. DMX -> Artnet. Dafür gibt es doch auch Büchsen, nicht nur Artnet -> DMX.
    3. Was liegt denn da sonst noch, wo Dein Beamer steht und das "DMX-Kabel vorbeigeht"? Wie kommt das Bild jetzt zum Beamer? Vielleicht den Raspberry dort hin, wo das Zuspielerkabel endet? Vielleicht kommt man da mit dem Netzwerkkabel besser hin.


    DMX in würde bedeuten, ein DMX-In-Interface anzusteuern. Das ist für eines sicher machbar, aber dann kommt die nächste Anfrage.
    ein solches Projekt würde auch den einen oder anderen nicht-DMXC-User User von Interface XY interessieren.
    Artnet ist immerhin so standardisiert dass eine Implementierung reicht.

  • Das erste Update ist fertig.


    Änderungen:
    -es gibt eine config Datei für Anzahl und Startadresse der Lasersim sowie für Art-Net Universe und Sub-Net.
    -die Zoomfunktion funktioniert nun wie im Windows Beamertool.
    -kleinere Code-Optimierungen


    Eigentlich sollte sich jetzt alles exakt wie im Windows Beamertool verhalten (außer den Video-Gobos). Hierzu auch nochmal Danke an zoidberg für den Quellcode des Windows Beamertools. Da mir die Zoomfunktion wie ich sie davor hatte zu gut gefallen hat um sie komplett zu entfernen habe ich in der config eine Option zum Einstellen des Zoomverhalten hinzugefügt. 1 bedeutet zoomen genau wie im Windows Beamertool, 2 bedeutet Zoomen in einen runden Kreis.


    Hier der Download: lasersim_0.1.zip
    Installation wie oben beschrieben.


    Ist mittlerweile schon jemand zum testen gekommen?


    Zur obigen Diskussion: Ich möchte das Beamertool auf den Raspberry Pi portieren, um einen 2. Beamertool-Laptop einzusparen (weil günstiger, platzsparender, stromsparender). Daher denke ich, das Netzwerkkabel sollte bei Verwendung des bisherigen Beamertools eh vorhanden sein und sollte man das Beamertool in einer Lichanlage betreiben in der mehrere hunder Meter DMX Kabel verlegt sind, wird die Anlage wohl so groß sein, dass ein Art-Net Interface oder hundert Meter Netzwerkabel nicht ins Gewicht fallen.
    Dieses Lasersim Programm für den Raspberry Pi wird (von mir aus) nur Art-Net unterstützen, zum einen da der Aufwand ein DMX
    Interface am Raspberry Pi zu programmieren vermutlich den Aufwand des ganzen Projekts übersteigen wird, zum anderen gibt es ja bereits Projekte in diese Richtung. Sollte jemand Interesse daran haben etwas in diese Richtung zu entwickeln kann ich natürlich gerne den Quellcode von diesem Projekt zur verfügung stellen.


    mfg
    Moritz

  • Hallo Moritz


    Habe es endlich mal geschafft das BeamerTool für den Rasp zu testen.


    Funktioniert soweit super, wenn du die von dir oben beschriebenen ToDo Liste noch machst ist echt nichts zu meckern.
    Am wichtigsten wäre ein Tastenkürzel zum schließen. Kann man zwar gut per ssh machen aber beim testen wärs manchmal doch geschickt.


    Außerdem natürlich die Unterstützung von Videofiles, gif kann man meiner Meinung nach getrost weglassen.


    Ansonsten reife Leistung. Werde das mal die Tage noch richtig auf Performance testen.


    Gruß Philipp

  • Hi Moritz,
    bin selber prgrammierer aber besitze derzeit noch kein rasberry pi. Was mich mal interessieren würde: In welche programmiersprache has du das geschrieben ? Überlege mir auch son rasberry anzuschaffen da das echt ne tolle lösung wäre vor allem weil sich bei windows manchmal einfach was verstellt und man dann wieder dran rumfummeln muss, man kanns zwar verbessern dann kommts zwar seltener aber meist dann genau wenn mans nicht braucht. Beim Rasberry könnte man das system sicher soweit zusammenschmelzen das es nur und ausschließlich den beamerlaser laufen hat. Zudem hat das momentane "original" zoidberg tool ja gerade beim connecten mal so die ein oder andere macke. Zudem noch eine ganz andere überlegung:
    Ich hatte mal vor aus nem starken beamer mit nem spiegel wie bei nem scanner einen "laserscanner" zu bauen bzw. sogar meine ganzen scanner dadurch zu ersetzten weil sowas sehr leicht wäre und keine mechanik beinhaltet und selbst lichtstarke beamer gebraucht mittlerweile für nen appel und nen ei zu haben sind. Was immer dagegen sprach war das entweder nen mini PC oder nen laptop mit reingemusst hätten oder aber VGA Kabel in längen die nicht möglich gewesen wären hätten verlegt werden müssen was das ganze extrem komplex gemacht hätte. Und 8 ausgewachsene Laptops für 8 Scanner wäre kompletter overkill. Aber sowas mit dem rasberry wäre ja quasi die ideale lösung ..müsste man nur schauen obs noch irgendwo passende spiegel gibt....


    Die idee is auf jeden fall genial - obwohl ichs nochnich testen konnte: Gute arbeit und schonmal besten dank im voraus :)

  • Hallo,


    gleich vorneweg - danke für die Portierung.
    Mit dieser Lösung ist es endlich möglich jedem Beamer ein eigenes Signal zu gönnen.



    Ich hatte am Samstag Gelegenheit für einen Langzeittest - der rasberry pi mit Beamertool lief als Dekoeffekt ca. 10 Stunden, meist mit zwei Layern absolut stabil und performant (durchgehend um die 60fps).
    Die ArtNet Verbindung war konstant stabil und trotz eines kleinen Stromausfalls am Anfang ließ sich der rasberry pi einfach wieder starten.


    Toll wäre es wenn es einen Zoommodus geben würde der wie Mode 2 ist aber eine höhere Auflösung hätte - man also viel größer Zoomen kann. Damit wäre es dann möglich Effekte ähnlich zu einem Animationseffekt in Movingheads zu erzeugen und außerdem könnte man dann
    pngs
    als Masken verwenden.


    Grüße aus Wien - Denny
    P.S.: Als weiteres Schlagwort für das Beamertool/Lasersim fällt mir auch immer wieder der Begriff "Digital Gobo MediaServer" ein.
    Hier noch ein kurzes Video - https://vimeo.com/65563335

  • Chrisgw
    Das Lasersim Tool für den Raspberry Pi ist in c geschrieben.


    Denny
    Ich verstehe nicht ganz was du mit höherer Auflösung meinst.
    Meinst du eine feinere Auflösung, also mehr als die 255 Stufen oder meinst du größer Zoomen?
    Erster wird nicht möglich sein ohne einen 2. DMX Kanal fürs Zoomen zu verwenden und dann wäre diese Lasersimulation nicht mehr kompatibel zum Windows Beamertool.
    Zu zweiterem: Meiner Erinnerung nach (hab mein Raspberry gerade leider nicht zur Hand) sind auf maximalem Zoom doch alle Elemente außerhalb des Bildschirms also nicht sichtbar, dann würde noch größer Zoomen nichts bringen oder hab ichs falsch in Erinnerung?
    Leider kenn ich keine Animationseffekte von Moving Heads hast du davon Bilder oder gibt es bei Youtube was ähnliches?


    mfg
    Moritz

  • Hallo,


    danke für die schnelle Antwort.


    Es geht um die Zoomgröße, nicht um die Auflösung also um einen weiteren Modus - ich will Grafiken so groß zoomen das immer nur ein Teil im sichtbaren Bereich ist.
    Der Effekt ist in diesem Video ab ca. 1:24 ersichtlich - http://www.youtube.com/watch?v=PXzqRswF7js
    Normalerweise werden dafür große Glasscheiben die um ihren Mittelpunkt gedreht werden verwendet - http://www.martin.com/gobo/goboprodpage.asp?group=7
    Ich hoffe es ist jetzt etwas verständlicher...


    Weiters habe ich zu Testzwecken versucht die Lasersim über Chamsys (http://www.chamsys.co.uk/) zu steuern - das Headfile zum selbertesten ist im Anhang.
    Hat klaglos funktioniert - für das Troubleshooting bei Artnet kann ich das Programm "ArtNetominator" empfehlen (http://www.lightjams.com/artnetominator/)


    mfg Denny

  • ah ich glaube du meinst mit Zoomfunktion das was in DMX-Control mit Skalierung beschriftet ist, ich habe bei Zoomfunktion an die Funktion gedacht das Gobo mehrfach darzustellen und der Zoom den Radius zum Kreismittelpunkt verändert.
    Die Skallierung habe ich so gewählt damit sich die LaserSimulation auf dem Raspberry Pi exakt so verhält wie das Windows Beamertool.
    Die von dir beschriebene Funktion wäre am besten über animierte Gobos zu Lösen (gif Animation ist für die nächste Version geplant).
    Die Skallierung will ich eigentlich auch nicht ändern um wie gesagt kompatibel zum Windows Beamertool zu bleiben.
    Ich kann mal schauen ob es mit nicht all zu viel Aufwand möglich wäre eine Art Multiplikator in der Config Datei zu definieren mit der man die Skalleriung z.B.:verdoppeln kann, dann kann jeder selbst wählen ob kompatiblität zum Windows Beamertool (und damit zu eventuell schon vorhandenen Effektprogrammierungen) oder größere Skalierung wichtiger ist.


    Chamsys sagt mir nichs (ist geh mal davon aus das ist ein Lichtpult und das Headfile so ungefähr das zugehörige DDF oder?)
    Ich habe bei der Entwicklung Wireshark (http://www.wireshark.org/) verwendet um das ArtNet Signal zu untersuchen. Damit bekommt man die ArtNet Daten auch auf ein paar Protokoll-Ebenen niedriger und kann die einzelnen IP Pakete untersuchen. Wird man aber wirklich nur zum Entwickeln brauchen :)

  • Oh - ja, ich meinte die Skalierung.
    Ein Multiplikator wäre toll, aber natürlich bieten animierte gifs noch andere/mehr Möglichkeiten.



    Eine Frage habe ich noch:
    Wenn man ein Gobo maximal skaliert (X und Y) bleibt selbst bei Rechtecken ein Rand - das ist auch beim Windwos Orginal so, aber nach meiner Wahrnehmung ungewollt.
    Ist es vielleicht möglich die Skalierung, zumindest im alternativen Modus 2 um diese wenigen Pixel zu vergrößern?



    Ich versuche gerade alte Projektionseffekte (nach) zu erstellen, da wäre ein Möglichkeit ein Gobo (Innen leer und Außen schwarz, mit Verlauf) als Maske zu Verwenden toll.
    z.B.: http://www.youtube.com/watch?v=7S_lNgYBrLQ und http://www.youtube.com/watch?v=Qk7F22aBR_I



    Ja, Chamsys ist ein Lichtpult - die Software ist gratis unterstützt einen UsbDMX Dongel und 16 ArtNet Universen. Fader, Midi und SoundIn bekommt man aber nur über relativ teure Hardware. Da ich es aber beruflich verwende wollte ich es mir mal mit der Lasersim ansehen.


    Wireshark ist auf jeden Fall das mächtiger Tool - hattte ich fast vergessen das man das ja auch für ArtNet verwenden kann...


    MfG Denny

  • Das mit dem kleinen Rand kann sein. Die Berechnungsformel dazu ist ungefähr Bildschirmbreite * DMX Wert / 256. Da DMX ja max. 255 ist wird maximal 255/256 = 99,6% des Bildschirms verwendet. Ob dies ein Bug oder Feature sein soll weiß ich nicht :) Wenn ich jetzt ein Multiplikator in die config Datei einfüge (z.B.: 2 ) entspricht DMX 255 also 199,2% des Bildschirms, dann sollten diese Pixel genutzt werden.
    Unabhängig davon kann man in irgendeiner Raspberry Pi config einen Rand generell für die Bildausgabe festlegen, für den Fall dass man einen Bildschirm verwendet, der den Rand abschneidet. Eventuell ist auch das noch eingestellt. Frag mich jetzt aber bitte nicht wo diese Einstellung war, ob die standartmäßig gesetzt war und ob das nur die Console oder auch die OpenGL Ausgabe betrifft.


    Ich kann leider nur das 2. Youtube Video sehen (stichwort GEMA :) )
    Als Maske könnte man eine weitere Laserinstanz nehmen und ein Teiltransparentes Gobo (siehe Anhang) vor den Anderen anzeigen. Die Gobos werden der Reihe nach gezeichnet, wobei die erste Instanz (niedrigste DMX Adresse) als erstes gezeichnet wird und die nächsten instanzen nacheinander davor. Tranzparenz in den Bilddateien wird dabei berücksichtigt, ein komplett Schwarzes Gobo auf dem Laser mit der höchsten Adresse würde also alles überdecken, hat dieses in der Mitte einen Transparenten Bereich sieht man die anderen Gobos dahinter.


    Kommt das in etwas hin an das was du mit Maske meinst?


    PS.: hier ist mir jetzt aufgefallen, dass oben erwähnter Rand wohl eher als Fehler einzuordnen ist. Wenn man die Maske ganz groß Zoomt und ein weißes Gobo vom außen ins Bild hineinbewegt wird bleibt der oben erwähnte Rand weiß, weil die Maske diesen nicht verdeckt. Das wird in Nebel wohl schon störend sein.


    Hier noch das Masken Gobo:



  • Ja, genau so meine ich das - inklusive dem was du im P.S. bemerkst...
    Da wäre es toll wenn man wenn es Bildschirmbreite * (DMX Wert+1) / 256 oder ähnlich wäre...

  • neues Mini Update: der Rand sollte jetzt Weg sein und habe den Multiplikator eingebaut. Den Multiplikator habe ich jedoch so eingefügt, dass er sich auch auf Pan/Tilt auswirkt, da man sonst zwar die Textur größer als den Bildschirm skalieren kann, jedoch den Rand der Textur nicht mehr zurück auf den Bildschirm bekommt.
    Um so größer der Multiplikator um so mehr fällt auf, das diese Lösung nicht so Ideal ist, die 255 Werte eines DMX Kanals sind dann eben doch recht wenig um noch flüssige Bewegungen zu haben.
    Dieses Feature ist jetzt erstmal testweise, eventuell fällt mir noch eine bessere Lösung dazu ein, bzw. ich hoff ich brauch nicht mehr allzulang für das nächste größere Update wo dann hoffentlich die gif Animation funktioniert.


    Wer den Multiplikator nutzen will einfach Folgende Zeile in der config.txt ergänzen:

    Code
    SCAL_MULT=2.0 #Multiplikator Skalierung Schema: "x.x" eine Ziffer (0-9) dann Komma oder Punkt dann noch eine Ziffer (0-9)


    es sind alle Werte von 0.1 bis 9.9 möglich. DMX Wert 255 bedeutet Skalierung auf Bildschirmbreite*Multiplikator


    im Anhang diesesmal nur das Hauptprogramm, einfach in den bisherigen Ordner einfügen


    lasersim.zip


    PS.: es gibt auch intern keine Verbesserungen, hab nur schnell 2 Variablen für oben genannte Features hinzugefügt, wer diese nicht benötigt braucht nicht zu updaten.


    PPS.: Weiß jemand warum das Forum bei meinen Dateianhängen keinen so schönen Kasten mit Downloadzähler hinzufügt? :)