Kraftzwerk – die 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.