Dobot Magician – PTP-Modi

Deutsche Übersicht der in DobotDllType.py definierten PTP-Bewegungsarten für SetPTPCmd().

1. Grundlagen

PTP bedeutet Point to Point, also eine Bewegung von einem Ausgangspunkt zu einem Zielpunkt. Der gewählte PTP-Modus bestimmt, wie der Dobot dieses Ziel anfährt und wie die vier Zahlenwerte x, y, z und r interpretiert werden.

index = dType.SetPTPCmd(
    api,
    dType.PTPMode.PTPMOVLXYZMode,
    x,
    y,
    z,
    r,
    isQueued=1
)[0]
Wichtig: Die Parameternamen der Python-Funktion heißen immer x, y, z und r. Bei den ANGLE-Modi stehen diese vier Werte jedoch nicht für kartesische Koordinaten, sondern für Gelenkwinkel.

Die drei wichtigsten Bewegungsprinzipien

MOVJ

Die Gelenke werden so bewegt, dass das Ziel erreicht wird. Der Werkzeugpunkt muss dabei nicht auf einer Geraden zum Ziel laufen.

Start ● ╲ ╲ mögliche Bahn ╲ ● Ziel

MOVL

Der Werkzeugpunkt wird auf einer linearen Bahn zum Ziel geführt.

Start ●──────────────● Ziel

JUMP

Typische Pick-and-Place-Bewegung: anheben, überführen und wieder absenken. Die JUMP-Parameter werden separat eingestellt.

┌───────────┐ Start ●┘ └● Ziel

2. Übersicht aller PTP-Modi

Wert Python-Name Prinzip Parameter Typischer Einsatz
0 PTPJUMPXYZMode JUMP absolute X/Y/Z/R-Zielwerte Pick-and-Place mit Anheben und Absenken
1 PTPMOVJXYZMode MOVJ absolute X/Y/Z/R-Zielwerte schnelles Anfahren eines freien Zielpunkts
2 PTPMOVLXYZMode MOVL absolute X/Y/Z/R-Zielwerte geradliniges Absenken, Anheben oder Verschieben
3 PTPJUMPANGLEMode JUMP absolute Gelenkwinkel JUMP-Bewegung mit Zielvorgabe im Gelenkraum
4 PTPMOVJANGLEMode MOVJ absolute Gelenkwinkel gezieltes Anfahren einer Gelenkstellung
5 PTPMOVLANGLEMode MOVL absolute Gelenkwinkel seltener Spezialfall; vor Einsatz testen
6 PTPMOVJANGLEINCMode MOVJ, relativ Änderungen der Gelenkwinkel relative Gelenkbewegung
7 PTPMOVLXYZINCMode MOVL, relativ relative Änderung von X/Y/Z/R schrittweises lineares Verfahren
8 PTPMOVJXYZINCMode MOVJ, relativ relative Änderung von X/Y/Z/R relative XYZ-Bewegung mit MOVJ-Bahnplanung
9 PTPJUMPMOVLXYZMode JUMP + MOVL SDK-/Firmwareabhängig dokumentiert Spezialmodus; vorsichtig testen

3. Die PTP-Modi im Detail

0 – PTPJUMPXYZMode

JUMPabsolutkartesisch

Das Ziel wird als absolute kartesische Position X, Y, Z, R angegeben. Der Dobot führt eine JUMP-Bewegung aus.

Geeignet für: Pick-and-Place-Aufgaben, bei denen ein Hindernis oder ein Werkstück sicher überfahren werden soll.

1 – PTPMOVJXYZMode

MOVJabsolutkartesisch

Das Ziel wird als absolute Position X, Y, Z, R angegeben. Der Controller berechnet eine Gelenkbewegung zum Ziel. Die Bahn des Werkzeugpunkts ist nicht zwingend gerade.

Geeignet für: schnelle Fahrten zwischen freien Punkten.

2 – PTPMOVLXYZMode

MOVLabsolutkartesisch

Das Ziel wird als absolute Position X, Y, Z, R angegeben. Der Werkzeugpunkt bewegt sich linear zum Ziel.

Geeignet für: kontrolliertes Absenken oder Anheben des Saugnapfs sowie geradlinige Bewegungen.

Für das Absenken auf die Arbeitsplatte ist dieser Modus besonders sinnvoll, wenn X, Y und R unverändert bleiben und nur Z geändert wird.

3 – PTPJUMPANGLEMode

JUMPabsolutGelenkwinkel

Das Ziel wird im Gelenkkoordinatensystem angegeben. Die vier übergebenen Zahlenwerte stehen für die Zielstellung der Gelenke.

Obwohl die Python-Funktion die Argumente weiterhin x, y, z, r nennt, sind sie in diesem Modus als Gelenkwerte zu verstehen.

4 – PTPMOVJANGLEMode

MOVJabsolutGelenkwinkel

Der Dobot fährt eine absolute Gelenkstellung an. Die Zielvorgabe erfolgt über die Gelenkwinkel.

Geeignet für: Aufgaben, bei denen eine bestimmte Roboterkonfiguration beziehungsweise Gelenkstellung gewünscht ist.

5 – PTPMOVLANGLEMode

MOVLabsolutGelenkwinkel

Die offizielle API-Beschreibung ordnet diesen Modus MOVL zu, während das Ziel im Gelenkkoordinatensystem angegeben wird.

Dieser Modus ist für Einsteiger weniger anschaulich. Die tatsächliche Bahn sollte mit geringer Geschwindigkeit und großem Sicherheitsabstand praktisch überprüft werden.

6 – PTPMOVJANGLEINCMode

MOVJrelativGelenkwinkel

Die Werte geben keine absoluten Gelenkstellungen an, sondern Änderungen gegenüber der aktuellen Gelenkstellung.

Beispiel: Ein Wert von +5 bedeutet sinngemäß, dass der betreffende Gelenkwinkel um 5° verändert wird.

7 – PTPMOVLXYZINCMode

MOVLrelativkartesisch

Die Werte werden als relative Änderung der aktuellen kartesischen Position verwendet. Die Bewegung erfolgt linear.

# Z relativ um 5 mm absenken
dType.SetPTPCmd(
    api,
    dType.PTPMode.PTPMOVLXYZINCMode,
    0,      # ΔX
    0,      # ΔY
    -5,     # ΔZ
    0,      # ΔR
    isQueued=1
)
Die ältere englische Dobot-API-Dokumentation enthält bei diesem Modus eine sprachlich widersprüchliche Formulierung. Der Python-Name PTPMOVLXYZINCMode kennzeichnet ihn jedoch eindeutig als inkrementellen XYZ-Modus. Vor sicherheitskritischem Einsatz sollte das Verhalten am eigenen Dobot mit kleinen Bewegungen geprüft werden.

8 – PTPMOVJXYZINCMode

MOVJrelativkartesisch

Das Ziel ergibt sich aus einer relativen Änderung von X, Y, Z, R. Die Bahnplanung erfolgt nach dem MOVJ-Prinzip.

Der Werkzeugpunkt muss deshalb zwischen Start und Ziel nicht auf einer geraden Linie laufen.

9 – PTPJUMPMOVLXYZMode

JUMP + MOVLSpezialmodus

Dieser Modus ist im Python-SDK als Kombination aus JUMP und MOVL benannt. Die ältere offizielle englische API-Dokumentation beschreibt die Parameter jedoch nicht vollständig widerspruchsfrei.

Deshalb sollte dieser Modus nicht allein aufgrund des Namens für eine produktive Bewegung verwendet werden. Zuerst mit geringer Geschwindigkeit, großem Sicherheitsabstand und kleinen Bewegungen testen.

4. Python-Beispiele

Absolute lineare Z-Bewegung

pose = dType.GetPose(api)

x = pose[0]
y = pose[1]
z = pose[2]
r = pose[3]

neue_z = 20.0

index = dType.SetPTPCmd(
    api,
    dType.PTPMode.PTPMOVLXYZMode,
    x,
    y,
    neue_z,
    r,
    isQueued=1
)[0]

Absolute XYZ-Bewegung mit MOVJ

index = dType.SetPTPCmd(
    api,
    dType.PTPMode.PTPMOVJXYZMode,
    220,
    50,
    80,
    0,
    isQueued=1
)[0]

Relative lineare Z-Bewegung

index = dType.SetPTPCmd(
    api,
    dType.PTPMode.PTPMOVLXYZINCMode,
    0,
    0,
    -5,
    0,
    isQueued=1
)[0]
Bei isQueued=1 wird der Befehl in die Warteschlange eingereiht. Die Queue muss gestartet sein, zum Beispiel mit dType.SetQueuedCmdStartExec(api).

5. Praktische Empfehlungen

Aufgabe Empfohlener Modus Warum?
Saugnapf senkrecht absenken PTPMOVLXYZMode Geradlinige, kontrollierte Bewegung
Saugnapf schrittweise um wenige Millimeter bewegen PTPMOVLXYZINCMode Relative lineare Bewegung
Freien Zielpunkt schnell anfahren PTPMOVJXYZMode Gelenkoptimierte Bewegung
Werkstück aufnehmen und an anderer Stelle ablegen PTPJUMPXYZMode Typische Pick-and-Place-Bewegung
Bestimmte Gelenkstellung anfahren PTPMOVJANGLEMode Direkte Vorgabe der Gelenkstellung
Sicherheit: Neue oder unklare Bewegungsmodi zuerst mit niedriger Geschwindigkeit, freiem Arbeitsraum und ausreichend Abstand zur Arbeitsplatte testen. Besonders bei inkrementellen Befehlen kann eine wiederholte Ausführung den Arm schrittweise weiter bewegen.

6. Quellen und Hinweis zur Dokumentation

Die Namen und Zahlenwerte der zehn Python-Modi stammen aus DobotDllType.py. Die grundsätzliche Zuordnung der PTP-Modi zu JUMP, MOVJ, MOVL, kartesischen Zielwerten, Gelenkwerten und Inkrementen wird in der offiziellen Dobot-Magician-API-Beschreibung dokumentiert.

Offizielle API-Beschreibung:
Dobot Magician API Description V1.2.3

Verwendete Python-Definition von DobotDllType.py:
DobotDllType.py auf GitHub

Stand dieser Zusammenstellung: Juli 2026. Bei älteren Dobot-SDKs können Dokumentation, Firmware und Python-Wrapper an einzelnen Stellen unterschiedlich oder missverständlich formuliert sein. Maßgeblich für ein konkretes Projekt ist deshalb immer auch die tatsächlich verwendete Version von DobotDllType.py und der Dobot-Firmware.