Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
im Rahmen eines Hochschulprojektes ist es unsere Aufgabe einen Industrieroboter der Firma Denso mit Hilfe von LabView zu steuern. Ziel ist es, geometrische Formen mit dem Roboter zu zeichnen.
Bisher sind alle unsere Versuche mehr oder weniger in die Hose gegangen
Wir haben bereits mit dem Support Kontakt aufgenommen. Der hat uns zwar helfen können, doch jetzt stehen wir wieder vor einem erneuten Problem. Wir haben uns nun gedacht, dass wir parallel zum Support von NI noch Hilfe in diesem Forum suchen.
Genaue Problemdarstellung habe ich in einem Worddokument verfasst und es hochgeladen.
Ich bin nicht sicher, ob ihr mit diesem Ansatz wirklich zum Ziel kommt.
Was müsst/könnt ihr denn dem Roboter befehlen? Ich nehme mal an, etwas in der folgenden Art:
-Gehe zu Punkt (x,y)
-Stift absetzen/hochziehen
So, aus den Picture-VIs kommt aber keine Kette geometrischer Punkte heraus, die miteinander verbunden werden. Wenn man sich die VIs anschaut, werden da eine Reihe von Befehlen gespeichert. Die werden dann vpm Picture-Control umgesetzt.
Was nach "Picture to Pixmap" und "Unflatten Pixmap" rauskommt, ist ein 2D-Array mit Farbwerten, die den einzelnen Pixeln des Bildes entsprechen. Im Fall einen Schwarz-Weiß-Bildes enthält das z.B. nur die Info "0" für einen schwarzes Pixel und "1" für ein weißes Pixel.
Damit könnte man IMHO nur eine Punktgrafik erzeugen, die Information, welche Koordinate mit einer Linie mit einem anderen Punkt verbunden sein soll, ist hierbei komplett verloren gegangen.
Ist das wirklich das Ziel der Projektarbeit?
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Die Picturefunktionen sind für Euch nicht von Nutzen. Sie sind sammeln nur binär codierte Befehle mit einer fest definierten Struktur, wie Jens schon sagte. Das PictureDisplay färbt nun Pixel eines Rasters entsprechend der eingestellten Stifte, Farben und Formen. Auch nicht von Nutzen.
Einen Kreis muss man durch ein Polygon approximieren. Für die Buchstaben muss man irgendwoher die Koordinaten der Kontur bekommen: z. B. Buchstaben auf Millimeterpapier malen und Koordinaten ablesen. Oder ihr setzt Euch mit Postscript- oder TrueType-Zeichensätzen auseinander und lest deren Koordinaten ein.
Deine Annahme ist völlig richtig. Der Roboter soll ein Stift greifen und bei Koordinate x,y eine geometrische Form zeichnen, z.B. einen Kreis. Danach natürlich wieder den Stift zurücksetzen. Bis auf das Zeichnen ist ja auch alles kein Problem....
Dieselbe Theorie mit den geom. Punkten hab ich auch schonmal aufgestellt, nur konnte ich Sie aufgrund fehlenden Fachwissens nicht unserem Betreuer beweisen.
Ich hab nämlich im Vorfeld ein SubVI programmiert, welches mit einer Sinus- und Cosinusfunktion einen Kreis in einem x,y-Graphen darstellt. Soweit ich das verstanden habe, ist es ja hierbei so, dass jeder "Winkel-Punkt" zwischen 0° und 360° verbunden werden kann.
Ich hab es auch geschafft, dieses SubVI in unser "Hauptprogramm" einzubinden.
Ich konnte das auch wunderbar an den Roboter übertragen und der hat auch tatsächlich einen Kreis gezeichnet. Die x,y-Koordinate, die man ansteuert um den Kreis zu zeichnen wird aber gleichzeitig als Mittelpunkt des Kreises im x,y-Graphen angesehen. D.h. der Roboter steuert eine Koordinate an und zieht dann erst den Radius ab dieser Koordinate um danach den Kreis abzufahren. Soll heißen, wenn der Roboter einen Stift greift, zu dem eben erwähnten Mittelpunkt x,y fährt, dann den Radius von diesem Mittelpunkt aus zieht, dann wird dieser "Radius-Verfahrweg" ebenfalls abgebildet, bzw. gezeichnet.
Nun wussten wir nicht, wie wir dieses Problem umgehen können, also dass der Kreis ohne diesen "Mittel-Radius-Strich" gezeichnet wird. Also haben wir uns an unseren Betreuer gewandt, der uns dann wiederrum den Tip mit den Grafik-VIs gegeben hat.
Wenn ich das also richtig verstanden habe, dann ist der Ansatz mit den Grafik-VIs falsch. Sollten wir dann lieber den Ansatz mit dem oben beschriebenen SubVI weiterverfolgen? Nur wie werden wir diesen Strich los?
Vlt habe ich das ganze etwas unpraktisch ausgedrückt, deshalb habe ich noch ein paar Screenshots unseres Hauptprogrammes und des Kreisfunktion-SubVIs hochgeladen. Jeweils zwei Screenshots bilden zusammen das jeweilige Programm ab. Das SubVI ist in rot im Hauptprogramm abgebildet.
Ich hoffe, dass du mir weiterhelfen kannst.
Vielen Dank schonmal
30.12.2010, 00:07 (Dieser Beitrag wurde zuletzt bearbeitet: 30.12.2010 00:08 von jg.)
Bitte Screenshots als Bilder (am besten im PNG-Format) hochladen und nicht als Word-Dokument.
Erstens ist die Qualität dann besser, und zweitens braucht man nicht ein externes Programm, um sich die Bilder anzuschauen.
Oder noch besser, vielleicht die VI's hochladen. Mittelpunkt wegbekommen, hört sich so an, als ob nur der erste Punkt gelöscht werden muss.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
hab jetzt ein paar Bilder in png-Format hochgeladen.
Bei dem VI bin ich mir nicht sicher ob es das richtige ist. Ich kann es momentan leider nicht öffnen, weil ich erst nächste Woche wieder Zugang zum Roboter und den PC mit LabView hab.
Das Kreiserzeugungs-VI nach Möglichkeit auch hochladen.
Was mir auf Grund der Screenshots nicht klar ist: Wann erfolgt der Befehl, den Stift abzusetzen? Vor der For-Schleife? Dann ist klar, wieso du erst einen anderen Strich vom Mittelpunkt aus zeichnest. Natürlich musst du zuerst den ersten Punkt des Kreises anfahren, und erst dann den Stift absetzen.
Gruß, Jens
P.S.: Die einzelnen Sequenzen helfen dir wahrscheinlich ein wenig bei der Übersicht, sie sind aber überflüssig.
Versuche es mal mit einer State-Machine. Und/oder weiteren Sub-VIs: z.B. ein SubVI für Stift greifen/loslassen, eines für Stift absenken/hochfahren, eines für "Punkt anfahren mit Stift oben" etc. pp. Du wirst sehen, die Übersicht steigt ganz erheblich.
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
anbei hab ich noch das Kreiserzeugungs-VI hochgeladen. Die Version ist 2009 !
Der Befehl um den Stift abzusetzen erfolgt im Hauptprogramm mit dem VI "move by position.vi". Dabei wird auf eine Variable (in diesem Fall Variable 4) zugegriffen, deren Koordinaten im Vorfeld am Roboter geteacht wurden.
Könntest du mir anhand des Kreis-VIs zeigen, wie genau du das mit dem "Mittelpunkt löschen" gemeint hast?
' schrieb:Ich konnte das auch wunderbar an den Roboter übertragen und der hat auch tatsächlich einen Kreis gezeichnet. Die x,y-Koordinate, die man ansteuert um den Kreis zu zeichnen wird aber gleichzeitig als Mittelpunkt des Kreises im x,y-Graphen angesehen. D.h. der Roboter steuert eine Koordinate an und zieht dann erst den Radius ab dieser Koordinate um danach den Kreis abzufahren. Soll heißen, wenn der Roboter einen Stift greift, zu dem eben erwähnten Mittelpunkt x,y fährt, dann den Radius von diesem Mittelpunkt aus zieht, dann wird dieser "Radius-Verfahrweg" ebenfalls abgebildet, bzw. gezeichnet.
Nun wussten wir nicht, wie wir dieses Problem umgehen können, also dass der Kreis ohne diesen "Mittel-Radius-Strich" gezeichnet wird. Also haben wir uns an unseren Betreuer gewandt, der uns dann wiederrum den Tip mit den Grafik-VIs gegeben hat.
Das Problem ist einfach ein ablauftechnisches, mit dem "Kreis-VI" ist prinzipiell alles richtig (ein wenig umständlich programmiert, und die Eingänge Radius und Kreisumfang fehlen noch. Enthält auf jeden Fall nicht den Mittelpunkt als Koordinate.).
Wenn natürlich zuerst der Stift vom Robotor am Kreismittelpunkt abgesetzt wird, dann ist doch klar, dass zuerst der Radius gezeichnet wird.
Lösung: Änderung des Ablaufs. Erst Berechnung der Kreiskoordinaten. Dann ersten Punkt aus diesem Array nehmen, diesen anfahren und DORT den Stift absetzen. Dann weiter mit der For-Schleife...
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!