Steuerung und Programmierung


Die Programmierung und Steuerung umfasst die Implementierung eines bestimmten Verhaltensmusters, welchem die Roboter folgen. 
Hierbei haben nicht nur der Aufbau des Programms selbst und die kabellose Datenübertragung via Bluetooth eine zentrale Position, sondern auch die Strategie der simultanen Steuerung von mehreren Robotern.

Programmierung

Der Roboter-Buggy Formula AllCode wird in diesem Experiment via Bluetooth über die Programmierumgebung MATLAB® gesteuert. 
Hierfür stellt Matrix auf der Homepage jeweils passende Skripte mit Funktionen zur Steuerung der Roboter zur Verfügung.

Aus der großen Auswahl an Funktionen, die Matrix zur Verfügung stellt, spielen die Funktionen SetMotors, Left bzw. Right und ReadIR die zentrale Rolle.

 
Die Funktion SetMotors benötigt zwei Parameter ( zwischen -100 und 100 ), um die Geschwindigkeit der zwei Motoren zu definieren, welche die Räder antreiben. Mit den Funktionen Left bzw. Right und einem Parameter für einen Winkel in Grad ( zwischen 0 und 360 ) wird die Fahrtrichtung manipuliert. Die Funktion ReadIR benötigt einen Parameter ( 0 -7 ), um zu definieren, welcher Infrarotsensor ausgelesen werden soll. Der Rückgabewert dieser Funktion ist das Abstandsmaß für diesen bestimmten Sensor zu einem Hindernis. Dieser kann zwischen 0 und 4095 liegen, wobei gilt: je höher der Wert, desto näher das Hindernis. Hierbei ist zu beachten, dass die Sensoren dunklere Gegenstände nur schlecht bzw. gar nicht detektieren. Somit variiert der Rückgabewert bei Veränderungen der Umwelt, wie z.B. Farbe, Lichtverhältnisse, Tageszeit etc. 

Die Programmierung erfolgt mit Hilfe einer Endlosschleife, in der durchgehend die Rückgabewerte der Sensoren abgefragt und mit einem Schwellenwert verglichen werden. Hierbei hängt der zu wählende Schwellenwert von den aktuellen Lichtverhältnissen, der Farbe der Hindernisse und dem Abstand, in dem die Roboter detektieren sollen, ab. 
Da die Farbe konstant bleibt und der gewünschte Abstand vorher festgelegt wird, spielen die Lichtverhältnisse die wesentliche Rolle. In empirischen Versuchen wurde festgestellt, dass bei einem Schwellenwert zwischen 100 und 300 ( je nach Lichtverhältnis ) ein Abstand von ca. 2 cm detektiert wird. 
Bei Erkennung eines Hindernisses weichen die Roboter diesem Hindernis aus, indem sie die Fahrtrichtung ändern ( siehe Downloadlink Sourcecode ).


Damit die Roboter auch Hindernisse aufräumen, werden lediglich die Sensoren 0-1 und    3-4, d.h. die linke und die rechte Seite, abgefragt ( siehe Abb. 1 ). Der Roboter ist somit vorne blind ( Sensor 2 ) und schiebt Hindernisse, die frontal vor dem Roboter liegen, vor sich her. ( Rückseite wird nicht benötigt und würde nur dazu führen, dass sich die Roboter an bestimmten Stellen im Kreis drehen. )

MATLAB® 



Für das Experiment müssen mehrere Roboter zeitgleich angesteuert werden. Jedoch kann mit MATLAB® lediglich ein Roboter über ein Skript angesteuert und gleichzeitig nur ein Skript zur selben Zeit ausgeführt werden. Mit Hilfe der Parallel Computing Toolbox von MATLAB® kann dies umgangen werden, denn damit ist es möglich mehrere Skripte parallel auszuführen. Da der Erwerb dieser Toolbox mit weiteren Kosten verbunden ist, wird das Prinzip nachgestellt, indem das Programm mehrmals geöffnet und die jeweiligen Skripte parallel in jedem Fenster ausgeführt werden. Hierbei ist sicherzustellen, dass die verwendete Hardware ausreichend leistungsstark ist.

Bluetooth


Der Computer ( Master ) und die Roboter ( Slaves ) interagieren fortlaufend miteinander      ( siehe Abb. 2 ). Durch diese Kommunikation mit mehreren Robotern entsteht ein Mehr-Punkt-Piconet. Zwar kann ein Bluetooth-fähiges Gerät mit bis zu acht Geräten eine aktive Verbindung aufbauen, jedoch können lediglich nur bis zu drei Datenströme simultan übertragen werden. Daher kann ein Master bzw. Computer nur mit bis zu drei Slaves bzw. Robotern parallel kommunizieren. Folglich ist der Anzahl der zeitgleich steuerbaren Robotern über einen Computer eine Grenze gesetzt. 

Da ein Master gleichzeitig in einem weiteren Piconet als Slave fungieren kann, können sich mehrere ( bis zu 10 ) Piconets zu einem Scatternet verbinden. Dadurch wäre es möglich eine größere Anzahl an Robotern parallel zu steuern. Des Weiteren besteht auch die Möglichkeit die Bluetooth-Module der Roboter durch Bluetooth/WLAN-Module zu ersetzen und somit über eine WLAN-Verbindung eine große Anzahl an Robotern zu steuern.


Die Erstellung eines Scatternets, sowie der Austausch der Bluetooth-Module übersteigen die vorgegebenen Ressourcen. Jedoch ist es für das Experiment notwendig eine Anzahl von acht Robotern zeitgleich anzusteuern. Hierfür wird auf eine Steuerung über drei Computer ausgewichen ( siehe Abb. 3 ).




Zusammenfassend werden acht Roboter über drei Computer und jeweils identischen Skripten gesteuert. Somit folgt jeder Roboter dem gleichen simplen Muster, indem es zwar Hindernissen ausweicht, jedoch kleine frontal liegende Hindernisse bewegt bis es auf ein größeres Hindernis stößt, diesem ausweicht und damit das kleine Hindernis verliert und zu einem Teil des größeren Hindernisses macht.