Literatur gesucht! Bahnplanung 6-gelenkiger Roboterarm zur Kollisionsvermeidung

  • So, jetzt habe ich mein Anliegen ja schon direkt in einen aussagekräftigen Titel gepackt :beerchug: Ich denke, das Problem mit der Kollisionsvermeidung ist eigentlich allgemein bekannt, und nun stehe ich auch davor. Es gibt sicherlich gute Literatur dazu, hat einer von euch Fachleuten da ein paar Tipps für mich?


    Um mein Problem nochmal ein wenig zu beschreiben: Ein sechsgelenkiger Roboter setzt ESD-Impulse an mehreren Stellen ab. Als Schnittstelle zwischen (grafischer) Punkte-Koordinaten-Eingabe und Robotersteuerung dienen die Koordinaten, die der Roboter dann abfährt.
    Anhand der Koordinaten möchte ich vor der eigentlichen Bewegung berechnen, ob sich der Roboter in einem (von mir eventuell vorher festgelegten) verbotenen Bereich aufhalten würde.
    Die GUI für den Roboter ist (leider) in Visual Basic geschrieben, dass dann einfach die Bewegungsbefehle über die serielle Schnittstelle an das Steuergerät schickt.


    Später komme ich wahrscheinlich noch zu dem Problem, dass ich die Stellung bzw. Bewegung des Roboters gerne grafisch in VB darstellen würde, so als 3D-Grafik, vielleicht OpenGL oder so. Wenn ich die Stellungen aller sechs Gelenke auslese, habe ich doch die eindeutige Position oder sehe ich das falsch? Hat vielleicht schonmal jemand versucht, ohne großartige Simulationssoftware eine Roboterstellung- bzw Bewegung selbst darzustellen?


    Viele Grüße und danke für etwaige Antworten,
    Veit

  • ANZEIGE
  • Hallo,


    zunächst eine Bitte: In die "Info"-Rubrik bitte nur Themen posten, die mit dem Forum an sich zu tun haben.



    Dein Problem ist nicht ganz einfach. Das geht schon mehr in Richtung CAD als in Richtung Roboterprogrammierung. In VB ist das sicher eine mathematische Herausforderung.


    Im Prinzip mußt du 3D Modelle des Roboters und seiner Umgebung erstellen und alle diese Komponenten auf Kollisionen testen.


    Grüße


    Urmel


    [Nachtrag]


    Fürs erste folge mal den unteren Links in diesem Beitrag:
    http://www.roboterforum.de/rob….0.html;msg15304#msg15304


    Ansonsten kenne ich zur Kollisionserkennung nur Sachen aus dem Bereich Spieleprogrammierung:


    http://www.elsevier.com/wps/fi…5/description#description
    http://www.elsevier.com/wps/fi…2/description#description
    http://www.elsevier.com/wps/fi…7/description#description
    http://www.elsevier.com/wps/fi…6/description#description


    Zu OpenGL oder DirectX gibt es jede Menge, auch online.


    Für VB.net wäre noch interessant


    http://msdn2.microsoft.com/de-…otics/default(en-us).aspx

    Einmal editiert, zuletzt von Urmel ()

  • nun die sache hat ein problem. Selbst wenn du dir ein programm schreibst was eine bewegung eines 6achsen roboters berechnen kann, muss das nicht heissen, dass du damit die bahn von zb einen kuka genau berechnen kannst.
    und ich glaube nich, dass du von dem hersteller seine rechnenformeln bekommst.
    besonders schwierig wird es dann bei komplizierten bewegungen oder wenn du in der nähe einer singularitäten kommst. oder wahrscheinlich schon beim verfahren joint oder linear.
    da merkt man schon, dass es kleine unterschiede bei den verschiedenen roboterherstellern gibt.
    es sei denn, du übergibst den roboter die punkte die er anfahren muss, dann kannst du sowas absichern.
    dein vorhaben würde daher nur eine hilfe für die eingabe sein, aber keine richtige absicherung.
    ich habe in meinem studium mit http://www.easy-rob.com/ gearbeitet. damit konnte man das machen was du vorhast. nur weiss ich da auch nicht, wie genau die berechneten bewegungen waren.
    man konnte dort auch eigene roboter erstellen, dafür braucht man nur die länge aller achsen und deren arbeitsraum. und danach hat man noch die koordinaten systeme reingelegt. und schon hatte man einen roboter, der verfahren werden konnte.
    die rechenformeln gibt es auch bei wikipedia http://de.wikipedia.org/wiki/D…Hartenberg-Transformation


    edit:
    ich seh gerad, dass du ja schreibst, dass der roboter seine fahrbefehle über eine seriele schnittstelle steht. dann müsste doch in diesem visuabl basic programm die brechnenung drinnen stehen und du kannst die dort einfach herausnehmen.

    Einmal editiert, zuletzt von Dos6.22 ()


  • nun die sache hat ein problem. Selbst wenn du dir ein programm schreibst was eine bewegung eines 6achsen roboters berechnen kann, muss das nicht heissen, dass du damit die bahn von zb einen kuka genau berechnen kannst.


    Das ist in der Tat so, daran sollte man dabei denken.



    edit:
    ich seh gerad, dass du ja schreibst, dass der roboter seine fahrbefehle über eine seriele schnittstelle steht. dann müsste doch in diesem visuabl basic programm die brechnenung drinnen stehen und du kannst die dort einfach herausnehmen.


    Wenn es sich um den Roboter aus diesem Thread
    http://www.roboterforum.de/rob…oboter_rv3sb-t3878.0.html
    handelt, wahrscheinlich nicht.


    Man kann einem Mitsubishi einfach Koordinaten schicken und er berechnet den Weg dahin selbst.


    Allerdings kann man, wenn man mit Ethernet arbeitet, auch das Problem mit der Wegberechnung umgehen, weil man den Roboter in Interpolationstakt aus einem externen C++-Programm ansteuern kann. Dann kann man seine eigene Bahninterpolation verwenden.

  • Hallo,


    ich weiß nicht warum, aber ich habe nur eine Mail-Benachrichtigung bekommen, obwohl ich nach dem ersten Antwort-Beitrag direkt schon in diesen Thread geschaut habe. Habe die anderen zwei Antworten somit erstmal verpasst.
    Also danke nochmal für's Thread-verschieben, ich wusste in der Tat nicht genau wohin mit meiner Anfrage.


    Zum Thema:
    Ja, die Sache hat nun den wirklich den Haken, auf den ich nach ein wenig Recherche jetzt auch gekommen bin. Also der PC liefert an das Steuergerät jetzt nur die Koordinaten und die Bewegungsform und das Steuergerät rechnet den Rest um. Jetzt könnte ich mittels Inverser Kinematik ja die Bewegung der Gelenke vielleicht ausrechnen (Stichwort Denavit und Hartenberg und Rückwärtstransformation zur Berechnung wenn ich das richtig verstanden habe), aber das heißt ja nicht, dass sich der Roboter auch in genau dieser Form bewegen wird, was?
    Dann habe ich also keine Möglichkeit, die Bewegungen des Roboters voraus zu berechnen oder? Anfragen beim Hersteller kann ich ja mal, ob der mir die Algorithmen rausrückt, aber ob der das tatsächlich macht... (es handelt sich beim Roboter wie gesagt um einen RV-3SB von Mitsubishi).


    Zitat

    Allerdings kann man, wenn man mit Ethernet arbeitet, auch das Problem mit der Wegberechnung umgehen, weil man den Roboter in Interpolationstakt aus einem externen C++-Programm ansteuern kann. Dann kann man seine eigene Bahninterpolation verwenden.


    Mittlerweile kann der Roboter auch über Ethernet gesteuert werden. "Seine eigene Bahninterpolation verwenden" heißt dann, dass ich quasi selber den Weg von Koordinatenpunkt zu Koordinatenpunkt vorher berechne und die Gelenke sozusagen einzeln (gleichzeitig) ansteuere? Dann übernehme ich doch die Aufgabe des Steuergeräts oder nicht? Also anstatt dass das Steuergerät die Bewegung von Punkt A nach B berechnet, mache ich das selber. Doppelt gemoppelt sozusagen.


    Puh, ganz schön komplex das alles. Danke schonmal für eure Antworten, und wenn jemand noch Hinweise für mich hat, nur her damit, wie man sieht bin ich recht neu in dieser Thematik.


    Gruß,
    Veit

  • Hallo !



    "Seine eigene Bahninterpolation verwenden" heißt dann, dass ich quasi selber den Weg von Koordinatenpunkt zu Koordinatenpunkt vorher berechne und die Gelenke sozusagen einzeln (gleichzeitig) ansteuere? Dann übernehme ich doch die Aufgabe des Steuergeräts oder nicht?


    Es ist ein wenig anders.


    Das Steuergerät arbeitet mit einem festen Interpolationstakt, bei deinem Roboter sind das 140 Hz.
    Du kannst Dir das genauso vorstellen, wie auf dem Computermonitor die Linien in einzelne Pixel zerlegt werden. Wenn der Roboter z.B. eine Kreisbewegung plant, zerlegt er den Kreis in ganz viele einzelne Schritte, die er jeweils im Interpolationstakt anfährt.


    Bei Mitsubishi gibt es dazu eine Besonderheit in Form des Befehls MXT. Das steht für "Move External". Dieser plant die Bewegung nicht selber, sondern holt sich in jedem Interpolationstakt über eine Netzwerkverbindung das Ziel für den nächsten Schritt.


    Es gibt ein paar Situationen wo man das gut gebrauchen kann:


    Man hat z.B. sehr komplexe Kurven z.B. aus dem CAD oder man will Interpolationsarten wie Bezier- oder Spline-Interpolation verwenden, die der Roboter gar nicht kennt.


    Oder die Bewegung steht noch gar nicht fest, z.B. wenn der Roboter sich über eine Kamera oder einen Sensor seinen Weg suchen muss.


    Den Roboter kann man in diesem Modus sowohl in XYZ- als auch in Gelenkwinkeln bewegen, das Steuergerät tut also schon noch einiges ...


    Im Ethernethandbuch ist übrigens ein Beispiel für VC++, das den Roboter über die PC-Tastatur bewegt. Ist aber ziemlich grottiger Spagethicode, die erste Übung für jeden Anfänger ist es, das ordenlich neu zu schreiben. :icon_rofl:

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden