Die Ingenieure bei Kinova haben Maple™ - das Spitzenprodukt von Maplesoft für die technische Berechnung und Dokumentation - dazu eingesetzt, die komplizierten Matrizengleichungen, die den komplexen Algorithmen zur Steuerung des Roboterarms JACO zugrundeliegen, abzuleiten und zu bearbeiten, um die Funktion des Arms zu verbessern.
Mit seinen untereinander verbundenen Segmenten und sechs Freiheitsgraden erreicht JACO einen sehr großen Bewegungsbereich.
JACO verfügt über sechs miteinander verbundener Segmente, wobei das letzte eine Hand mit drei Fingern ist, und arbeitet mit sechs Freiheitsgraden. Mit seinem Aktionsradius von 90 cm kann JACO an einem motorisierten Rollstuhl oder auf einem festen Sockel montiert werden. Der Anwender kann die Roboterhand mit einem Joystick im dreidimensionalen Raum bewegen, um Gegenstände zu greifen und zu bewegen und so Routineaufgaben auszuführen.
Das Kinova-Team für Roboteralgorithmen und -steuerung stand bei der Entwicklung der Steuerung für den Arm vor einer großen Herausforderung. Um den Roboterarm sicher zu bedienen, mussten komplexe Algorithmen mit großen Matrizengleichungen entwickelt werden, um die Kinematik und die vom Arm ausgeübten Kräfte zu berechnen.
Eine weitere Schwierigkeit dabei ist, dass diese Berechnungen auf einem Mikrocontroller in sehr kurzen Zeitabständen fortlaufend wiederholt werden müssen. Daher müssen die Algorithmen ständig und mit einer schnellen Rate aktualisiert werden, was zu einer sehr großen Matrix gleichzeitig zu berechnender trigonometrischer Gleichungen führt.
Diese Art mathematischer Herausforderungen ist genau das Richtige für Maple. Die Maple-Rechenengine mit ihrer besonders hohen Leistung bei symbolischen Berechnungen ermöglicht es, komplexe mathematische Probleme zu beschreiben, zu visualisieren und zu lösen. Maple enthält leistungsfähige Algorithmen und Werkzeuge für anspruchsvolle Berechnungen und die Lösung sehr umfangreicher Probleme, die über die Fähigkeiten anderer Softwaresysteme hinausgehen.
"Wir brauchten eine Software, die anerkannt robust und in der Lage ist, große Gleichungen und Matrixberechnungen vorzunehmen und symbolische Lösungen zu liefern. Vor allem aber brauchten wir eine Software, die sehr intuitiv zu bedienen ist. Maple ist die perfekte Software für diese Anforderungen", erklärte Dr. Alexandre Lecours, Projektmanager im Team für Roboteralgorithmen und -steuerung.
Mit Maple konnte das Team das Problem definieren und ein Programm zu seiner Lösung erstellen. Der erste Schritt bestand darin, die Eingaben für das Programm zu definieren, z.B. die Anzahl der Abschnitte, deren Länge und die Winkel der Gelenke. Nach der Definition der Beziehungen zwischen diesen Variablen konnte ein System trigonometrischer Gleichungen erstellt werden, um das zu lösende Problem darzustellen.
Anschließend wurden diese Gleichungen mit Hilfe der symbolischen Rechenengine von Maple analysiert und vereinfacht, um die Ausgabefunktion, die die Position der Hand berechnet, zu erzeugen.
Diese optimierte Ausgabefunktion wurde - immer noch in ihrer symbolischen Form - anschließend für den Einsatz in der Simulation und im Embedded-Controller des Arms in C++-Code umgewandelt. Dr. Lecours erklärte die Gründe für diesen Ansatz: "Wir hätten die Berechnung gleich in C++ durchführen können", so der Wissenschaftler. "Es gibt jedoch eine Reihe von Berechnungen in den Matrizen, die zu einer Multiplikation mit Null geführt hätten. Maple hat es uns ermöglicht, diese Multiplikationen vorab zu bestimmen und auszusondern, um zu einem reduzierten Satz von Gleichungen mit weniger Berechnungen zu kommen."
Da diese Berechnungen bei jeder Änderung für einen der Motoren bei den Bewegungen des Arms ständig neu ausgeführt werden müssen, sorgt ein möglichst optimierter Code für einen effizienteren Betrieb des Controllers. Dadurch, dass alle Berechnungen, die Null ergeben würden, unterdrückt werden konnten, kann der Controller die Position der Hand schneller bestimmen. Das ermöglicht eine präzisere Steuerung und für den Anwender ein angenehmeres Arbeiten.
Dr. Lecours und seine Kollegen setzen Maple weiterhin ein, um Embedded-Controller für ihre übrigen Roboterprodukte zu entwickeln. Sein Resümee: "Es gab keine andere Software, die uns dabei helfen konnte, dieses Problem symbolisch zu lösen. Maple war nicht nur intuitiver, auch der Maple-Code ist einfacher zu verstehen, als der Code in C++. So konnten wir unser Produkt schnell entwickeln und debuggen, was unsere Entwicklungszeit wesentlich verkürzt hat."