Koordinaten auf Kreisbogen berechnen

  • Hallo.


    Ich habe 3 Punkte im Raum. Jetzt muß ich durch diese 3 Punkte ein Kreisbogen legen. 1 Punkt


    = Startpunkt, 2 Punkt = Mittelpunkt des Kreisbogen und 3 Punkt = Endpunkt.


    Auf diesen Kreisbogen muß ich nun n-Punkte berechnen. Kennt jemand eine schnelle Formel


    dazu?
    Jeder Punkt besteht aus X,Y und Z.


    Gruß Betze

  • ANZEIGE
  • Hallo Betze,


    'eine' schnelle Formel wird hier nicht reichen, das Problem stellt sich eher 'nicht trivial' dar.


    Wieviel Mathematik bringst Du denn mit?


    Mein Ansatz wäre, ein wobj zu bestimmen das im Kreismittelpunkt seinen Ursprung hat und dessen (z.B.) xy-Ebene in Kreisebene liegt. Damit ist die Problematik auf ebene Geometrie reduziert und die n Punkte sind sehr viel leichter berechenbar.


    Sind die 3 'Kreispunkte' statisch oder wechseln die mit jedem Bauteil?
    Was wir denn überhaupt gemacht auf der Kreisbahn?


    Grüße

  • Hallo,


    hier hatten wir schon mal so etwas ähnliches:


    http://www.roboterforum.de/rob…nterpolation-t7392.0.html


    Eine fertige Formel, besonders für 3D, kriege ich jetzt auch auf die Schnelle nicht zusammen. Sollte sich aber mit Websuche und Formelsammel finden lassen.


    Grüße


    Urmel



    [Nachtrag]


    Ok, hab nochmal drüber nachgedacht, man kann es folgendermassen machen:


    Gegeben sind der Startpunkt (S), der Endpunkt (E) und der Mittelpunkt (M) des Kreisbogens.
    Daraus kann man zwei Vektoren bilden, einen von M nach S, einen von M nach E.
    Mit dem Kreuzprodukt aus den beiden kriegt man einen dritten Vektor, der senkrecht auf den beiden anderen steht, das ist die Drehachse.


    Man hat dann also die Drehachse und einen Vektor vom Mittelpunkt zum Startpunkt. Den kann man jetzt mittels Drehmatrix oder Quaternion, je nachdem was der Roboter hat, entsprechend um einen Winkel weiterdrehen, so kriegt man seine Punkte.

    Einmal editiert, zuletzt von Urmel ()


  • Ich hatte das aber so verstanden das die drei Punkte auf dem Kreisbogen liegen.


    Dann geht es auch, nur etwas komplizierter.


    Die drei Punkte bilden ein Dreieck, der Kreis ist der Umkreis des Dreiecks. Der Mittelpunkt des Kreises liegt im Schnittpunkt der Mittelsenkrechten des Dreiecks.


    :-| :???: :huh: :denk: :kopfkratz: :zwink: :) :mrgreen:

  • Hallo,
    vielen Dank für die ausgiebiegen Antworten. Bin leider erst jetzt dazu gekommen ins Forum zu schauen. Der Ansatz von Urmel gefällt mir. Werde es morgen, falls ich es schaffe, einmal ausprobieren dieses umzusetzen. Halte euch auf den laufenden.


    Vielen Dank noch mal an alle :danke:


    Gruß Betze

  • Hallo,


    hätte da was, habe ich vor drei Wochen gemacht.


    x' = (x-u) cos(beta) - (y-v) sin(beta) + u
    y' = (x-u) sin(beta) + (y-v) cos(beta) + v


    Im Programm stellt sich das folgendermassen dar:


    PROC CallStackJoint()
    VAR num nVersatzD_R1;
    VAR num nVersatzX_R1;
    VAR num nVersatzY_R1;
    VAR num nVersatzZ_R1;


    !Erster Platz
    IF diSPS_goPos_1 = high THEN
    nJointPlatz:=0;
    nVersatzX_R1:= ((nAbstand_R1)*(Cos(315)));
    nVersatzY_R1:= ((nAbstand_R1)*(Sin(315)));
    nVersatzD_R1:= nAbstand_R1;
    !Zweiter Platz
    ELSEIF diSPS_goPos_2 = high THEN
    nJointPlatz:=1;
    nVersatzX_R1:= ((nAbstand_R1)*(Cos(337.5)));
    nVersatzY_R1:= ((nAbstand_R1)*(Sin(337.5)));
    nVersatzD_R1:= nAbstand_R1;
    !Dritter Platz
    ELSEIF diSPS_goPos_3 = high THEN
    nJointPlatz:=2;
    nVersatzX_R1:= ((nAbstand_R1)*(Cos(0)));
    nVersatzY_R1:= ((nAbstand_R1)*(Sin(0)));
    nVersatzD_R1:= nAbstand_R1;
    .
    .
    .
    etc


    TEST nJointPlatz
    CASE 0,1,2,3,4,5,6,7,8,9,10,11:
    wTeil_Bestück.oframe.trans:=[(nVersatzX_R1-nVersatzD_R1),nVersatzY_R1,nVersatzZ_R1];
    ENDTEST


    Ich hoffe das hilft weiter! Bei mir funtioniert es sehr gut.
    Du nimmst ein Werkobjekt auf und hast ja vom Kreis den Mittelpunkt, sowie den Versatz in Winkelgrad von dem Punkt auf dem Kreis.
    Hier im Programm wares es von Punkt zu Punkt 22,5 Grad.


    :zwink:


    MFG
    CSH

Hilfe und Support für ABB Roboter Programmierung, Konfiguration, Inbetriebnahme finden Sie hier im ABB Roboter Forum. ABB Rapid Programmierung ist einfach, die Roboterforum Community hilft sehr gerne.

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