Hochregal (EV3)

Aus Informatik
Version vom 2. Mai 2016, 07:55 Uhr von Nils Köhne (Diskussion | Beiträge) (Das Programm)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Ziel des Projektes

Viele Unternehmen verwenden, sofern sie noch ein Lager besitzen, zum verwalten eben jener Roboter, die mittels Sensorik und verschiedenen Algorithmen die Waren in die Hochregale der Lager transportieren.

Dieses Projekt befasst sich mit eben solchen Robotern und es wird versucht eine eigenständige und adequarte Lösung für eben jenes Problem zu erstellen. Hierfür wird ein Bausatz für einen EV3 Lego Mindstormroboter verwendet.

Es gibt verschiedene Ansätze um einen solchen Roboter zu verwirklichen. So kann die Bewegung am Boden mittels Schienen und Zahnrädern geschehen, was eine sehr große Genauigkeit zur Folge hätte, aber auch die Bewegungsmöglichkeiten des Roboters Stark reduziert, sodass ich diese Idee verworfen habe. Eine andere Möglichkeit ist den Roboter mit einem Fahrgestell und zwei Motoren auszustatten, wodurch die Bewegungsmöglichkeiten am Boden sich im Gegensatz zu der Idee mit den Schienen sich extrem erweitert haben. Auch wenn dadurch ein Teil der Genauigkeit aufgegeben werden musste, entschied ich mich für diese Idee.

Um in der Vertikalen zu agieren, kann ebenfalls eine Schiene verwendet werden, wobei dadurch die Stabilität bei größeren Höhen und bei höheren Gewichten ein Problem darstellt, sodass ich mich für einen Flaschenzugkonstrukt entschied, auch wenn hier ebenfalls das akkurate befördern unter dieser Entscheidung leidet.

Erste Schritte

-Bau eines Fahrgestells
-Bau von einer Gabelstablergabel
-Bau eines Mechanismuses zum hochfahren aus einer Zahnradschiene und einem Flaschenzug

Das Programm

Das Programm besteht aus zwei Teilen, einer rein programmtechnischen Ebene und einer technisch-informatische-Schnittstelle. In der letzteren werden die Motoren und Sensoren gesteuert.
UML.png

Einraeumen.jpg Das Einsortieren geschieht über einen dem Hashing ähnlichen Algorithmus. Der Integerwert der Farbe des Gegenstandes wird durch die Höhe und die Breite moduliert, wodurch die Position im Feld bestimmt wird. Wenn Höhe und Breite gleich sind, wird die Höhe mit der moduliert wird um 1 reduziert;

   int x,y;
   x = farbe % breite;
   if (hoehe%breite==0 || breite%hoehe==0) {
     y = farbe%(hoehe-1);    
   }else{
     y = farbe%hoehe;
   }
   int i=0;
   int j=0;
   while (hochregal[x][y]!=0&&i<hoehe*breite) {
     while (hochregal[x][y]!=0&&j<hoehe) { 
       y++;
       j++;
       i++;
       y=y%hoehe;
     }
     if (hochregal[x][y]!=0) {
       x++;
       x=x%breite;
       i++;
       j=0;
     } // end of if
   }

Das Fahren

Das Fahren wird über eine fesgelegte Fahrtroute realisiert, bei der nur eine Strecke mit variabeler Länge mit einbezogen wird. Die Fahrtroute besteht aus mehreren Viertelkreisen, wie in der Skizze zu sehen ist. Bewegung.png


Das Regal

Regalfach.jpg


Regal totale.jpg


Der Roboter

Roboter frontale.jpg


Roboter draufsicht.jpg


Roboter-seitenansicht.jpg

Das Fahrgestell


Fahrgestell.jpg

Gabel


Gabell.jpg

Schiene


Schiene.jpg

Erweiterungen

Es wäre mit dem Programm möglich ein beliebig großes Regal zu verwalten, jedoch ist die Höhe durch die Schiene begrenzt. Wenn mehrere Regale verwaltet werden sollten, so müsste der Algorithmus angepasst werden, sodass der Roboter sich allein im zweidimensionalen Raum mit Objekten zurecht findet, sodass Berührungssensoren unvermeitlich werden. Auch bestünde die möglichkeit mehrere Roboter die Lager zu Verwalten, was eine Roboter-Roboter-Kommunikation benötigt.


Probleme

Probleme traten beim Bau in der Stabilität als auch bei der Höhentransport auf. So musste die Position des Rechnerstein mehrfach angepasst werden, um den Schwerpunkt zu verlagern. Um den Höhentransport zu realisieren gab es zwei Möglichkeiten, ein Seilzug oder eine Schiene, beide mit ihren Vor- und Nachteilen. So riss beim Test des Roboters der Faden des Seilzuges, sodass dieser ausschied für den weitere Verlauf.