Midibridge

Als MidiBridge zur Steuerung der Roboter von der zentralen Ablaufsteuerung aus wird eine Raspberry Pi eingesetzt, auf der auch eine Instanz des Frameworks läuft. Zur Übersetzung der MIDI-Befehle zu den einzelnen Bewegungsabläufen wurde ein spezieller Gehirnabschnitt programmiert, der per XML konfiguriert wird. In der Startkonfiguration des Frameworks ist hierfür folgender XML-Abschnitt vorhanden:  

<!– Konfiguration des Node für die MidiBridge –> <nodeConfig>

<hostname>MidiRob</hostname> <name>MidiRob</name> <port>8080</port> <servicename>Roberry</servicename> <typ>Standard</typ> <anzahlsignalworker>5</anzahlsignalworker>

</nodeConfig>

<!– Konfiguration des Gehirnabschnitts –> <gehirnConfig>

<!– Der Gehirnabschnitt wird auf dem Node MidiRob ausgeführt –> <nodename>MidiRob</nodename> <!– Der Gehirnabschnit der MidiBridge ist unter dem Namen Midi2Bewegungsablauf implementiert –> <typ>Midi2Bewegungsablauf</typ> <!– Der Prozess soll automatisch gestartet werden –> <autostart>true</autostart> <!– Der Prozess ist für andere Prozesse unter dem Namen MidiBridge zu erreichen (auch wenn dieses derzeit noch nicht gebraucht wird) –> <name>MidiBridge</name>

</gehirnConfig>

Jetzt muss nur noch ein Mapping von den Midibefehlen zu den Bewegungsabläufen konfiguriert werden. Die Konfiguration der Bewegungsabläufe ist auf der Hauptseite des Frameworks beschrieben. <?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?> <!– Konfiguration des Mappings zwischen MIDI-Noten und Bewegungsabläufen der Roboter –> <mapMidiBewegungsablauf>

<!– ROBERRY –> <ablaeufe>

<!– Ein Anschlagen der Note C-2 auf dem MIDI-Kanal 2 startet den Bewegungsablauf 00_AllOff auf Roberry –> <channel>2</channel> <note>C-2</note> <nodename>Roberry001</nodename> <ablauf>00_AllOff</ablauf>

</ablaeufe> <ablaeufe>

<!– Die Note C#-2 auf dem Midikanal 2 startet den Bewegungsablauf 00_Startpos auf Roberry –> <channel>2</channel> <note>C#-2</note> <nodename>Roberry001</nodename> <ablauf>00_Startpos</ablauf>

</ablaeufe> <ablaeufe>

<!– Die Note D-2 auf dem Midikanal 2 startet den Bewegungsablauf 00_Hals_Startpos auf Roberry –> <channel>2</channel> <note>D-2</note> <nodename>Roberry001</nodename> <ablauf>00_Hals_Startpos</ablauf>

</ablaeufe>

<!– FLORI –> <ablaeufe>

<!– Die Note C-2 auf dem Midikanal 4 startet den Bewegungsablauf 00_AllOff auf Flori –> <channel>4</channel> <note>C-2</note> <nodename>Flori001</nodename> <ablauf>00_AllOff</ablauf>

</ablaeufe> <ablaeufe>

<!– Die Note C#-2 auf dem Midikanal 4 startet den Bewegungsablauf 00_Startpos auf Flori –> <channel>4</channel> <note>C#-2</note> <nodename>Flori001</nodename> <ablauf>00_Startpos</ablauf>

</ablaeufe> <ablaeufe>

<!– Die Note D-2 auf dem Midikanal 4 startet den Bewegungsablauf 00_LaserOn auf Flori –> <channel>4</channel> <note>D-2</note> <nodename>Flori001</nodename> <ablauf>00_LaserOn</ablauf>

</ablaeufe> <ablaeufe>

<!– Die Note D#-2 auf dem Midikanal 4 startet den Bewegungsablauf 00_AllOff auf Flori –> <channel>4</channel> <note>D#-2</note> <nodename>Flori001</nodename> <ablauf>00_LaserOff</ablauf>

</ablaeufe>

</mapMidiBewegungsablauf> Hiermit ist es für kleine Zwischeneinlagen sogar möglich Bewegungen der Roboter über die Keyboardanlage zu starten.