Grundlage
Offline-Version: Alle für die Darstellung benötigten Styles sind in dieser HTML-Datei eingebettet. Es werden keine CDN-Dateien geladen.
import DobotDllType as dType
DobotDllType.py kapselt die C/C++-API der DobotDll.dll und stellt deren Funktionen für Python bereit.
Diese Dokumentation konzentriert sich auf die Funktionen, die bereits praktisch verwendet wurden oder unmittelbar für die bisherigen Dobot-Programme wichtig sind.
1. dType.load()
Aufgabe
Lädt die Dobot-Bibliothek DobotDll.dll und liefert ein API-Objekt zurück.
Aufruf
api = dType.load()
Beispiel
import DobotDllType as dType
api = dType.load()
Das Objekt api wird anschließend bei fast allen Dobot-Funktionen als erstes Argument benötigt.
2. ConnectDobot()
Aufgabe
Stellt die Verbindung zwischen dem Python-Programm und dem Dobot Magician her.
Aufruf
dType.ConnectDobot(api, portName, baudrate)
| Parameter | Bedeutung |
|---|---|
api | API-Objekt aus dType.load() |
portName | COM-Port, z. B. "COM10" |
baudrate | Übertragungsgeschwindigkeit, gewöhnlich 115200 |
Beispiel
result = dType.ConnectDobot(api, "COM10", 115200)
Typischer Rückgabewert
[0, 'DobotSerial', '0.0.0']
if result[0] == dType.DobotConnect.DobotConnect_NoError:
print("Dobot verbunden.")
3. DisconnectDobot()
Aufgabe
Trennt die Verbindung zum Dobot.
dType.DisconnectDobot(api)
try:
# Dobot-Programm
pass
finally:
dType.DisconnectDobot(api)
4. GetPose()
Aufgabe
Liest die aktuelle Position und die Gelenkwinkel des Dobot aus.
pose = dType.GetPose(api)
[x, y, z, r, jointAngle1, jointAngle2, jointAngle3, jointAngle4]
pose = dType.GetPose(api)
print("X =", pose[0])
print("Y =", pose[1])
print("Z =", pose[2])
print("R =", pose[3])
print("J1 =", pose[4])
print("J2 =", pose[5])
print("J3 =", pose[6])
print("J4 =", pose[7])
| Index | Wert |
|---|---|
| 0 | X-Koordinate |
| 1 | Y-Koordinate |
| 2 | Z-Koordinate |
| 3 | Rotation R |
| 4 | Gelenkwinkel J1 |
| 5 | Gelenkwinkel J2 |
| 6 | Gelenkwinkel J3 |
| 7 | Gelenkwinkel J4 |
5. SetPTPCommonParams()
Aufgabe
Legt den allgemeinen Geschwindigkeits- und Beschleunigungsfaktor für PTP-Bewegungen fest.
dType.SetPTPCommonParams(api, velocityRatio, accelerationRatio, isQueued)
dType.SetPTPCommonParams(api, 20, 20, 0)
Damit werden Geschwindigkeit und Beschleunigung auf 20 % gesetzt.
6. GetPTPCommonParams()
Aufgabe
Liest die aktuell eingestellten allgemeinen PTP-Faktoren aus.
werte = dType.GetPTPCommonParams(api)
print(werte)
Typische Ausgabe: [100.0, 100.0].
7. SetPTPJointParams()
Aufgabe
Legt Geschwindigkeit und Beschleunigung der vier Roboterachsen für PTP-Bewegungen fest.
dType.SetPTPJointParams(
api,
v1, v2, v3, v4,
a1, a2, a3, a4,
isQueued
)
dType.SetPTPJointParams(
api,
200, 200, 200, 200,
200, 200, 200, 200,
isQueued=0
)
8. GetPTPJointParams()
werte = dType.GetPTPJointParams(api)
print(werte)
[
200.0, 200.0, 200.0, 200.0,
200.0, 200.0, 200.0, 200.0
]
Wert 0 bis 3: Geschwindigkeiten. Wert 4 bis 7: Beschleunigungen.
9. SetPTPCoordinateParams()
Aufgabe
Legt Geschwindigkeit und Beschleunigung für kartesische PTP-Bewegungen fest.
dType.SetPTPCoordinateParams(
api,
xyzVelocity,
rVelocity,
xyzAcceleration,
rAcceleration,
isQueued
)
dType.SetPTPCoordinateParams(
api, 200, 100, 200, 100, isQueued=0
)
10. GetPTPCoordinateParams()
werte = dType.GetPTPCoordinateParams(api)
Typische Ausgabe: [200.0, 100.0, 200.0, 100.0].
Reihenfolge: xyzVelocity, rVelocity, xyzAcceleration, rAcceleration.
11. SetPTPCmd()
Aufgabe
Führt eine PTP-Bewegung aus beziehungsweise trägt sie in die Befehlswarteschlange ein.
index = dType.SetPTPCmd(
api,
ptpMode,
x,
y,
z,
r,
isQueued
)[0]
Beispiel: lineare Bewegung
index = dType.SetPTPCmd(
api,
dType.PTPMode.PTPMOVLXYZMode,
200, 0, 50, 0,
isQueued=1
)[0]
Beispiel: nur Z ändern
pose = dType.GetPose(api)
x = pose[0]
y = pose[1]
r = pose[3]
index = dType.SetPTPCmd(
api,
dType.PTPMode.PTPMOVLXYZMode,
x, y, 50, r,
isQueued=1
)[0]
Damit bleiben X, Y und R unverändert; nur Z wird verändert.
12. SetHOMEParams()
Aufgabe
Legt eine benutzerdefinierte HOME-Position fest.
dType.SetHOMEParams(api, x, y, z, r, isQueued)
dType.SetHOMEParams(api, 200, 0, 80, 0, isQueued=0)
13. GetHOMEParams()
home = dType.GetHOMEParams(api)
print("HOME X:", home[0])
print("HOME Y:", home[1])
print("HOME Z:", home[2])
print("HOME R:", home[3])
14. SetHOMECmd()
Aufgabe
Startet die HOME-Funktion.
home_index = dType.SetHOMECmd(api, 0, 1)[0]
15. SetQueuedCmdClear()
Aufgabe
Löscht die Befehlswarteschlange des Dobot.
dType.SetQueuedCmdStopExec(api)
dType.SetQueuedCmdClear(api)
16. SetQueuedCmdStartExec()
Aufgabe
Startet die Ausführung der in der Queue gespeicherten Befehle.
dType.SetQueuedCmdStartExec(api)
17. SetQueuedCmdStopExec()
Aufgabe
Stoppt die Ausführung der Befehlswarteschlange.
dType.SetQueuedCmdStopExec(api)
18. GetQueuedCmdCurrentIndex()
Aufgabe
Liest den Index des zuletzt ausgeführten Queue-Befehls.
ziel_index = dType.SetPTPCmd(
api,
dType.PTPMode.PTPMOVLXYZMode,
200, 0, 50, 0,
isQueued=1
)[0]
dType.SetQueuedCmdStartExec(api)
while dType.GetQueuedCmdCurrentIndex(api)[0] < ziel_index:
dType.dSleep(100)
dType.SetQueuedCmdStopExec(api)
19. Hilfsfunktion warten_bis_fertig()
Diese Funktion stammt nicht direkt aus der API, ist aber für eigene Programme nützlich.
def warten_bis_fertig(api, dType, ziel_index):
dType.SetQueuedCmdStartExec(api)
while dType.GetQueuedCmdCurrentIndex(api)[0] < ziel_index:
dType.dSleep(100)
dType.SetQueuedCmdStopExec(api)
20. dSleep()
Aufgabe
Wartet eine bestimmte Anzahl Millisekunden.
dType.dSleep(500)
500 ms = 0,5 Sekunden
21. GetAlarmsState()
Aufgabe
Liest den aktuellen Alarmstatus des Dobot aus.
alarm_result = dType.GetAlarmsState(api)
alarm_bytes = alarm_result[0]
if any(alarm_bytes):
print("Alarm aktiv.")
else:
print("Kein Alarm aktiv.")
22. ClearAllAlarmsState()
Aufgabe
Versucht, gespeicherte Alarmzustände zu löschen.
dType.ClearAllAlarmsState(api)
dType.dSleep(300)
alarm_result = dType.GetAlarmsState(api)
if any(alarm_result[0]):
print("Es ist weiterhin ein Alarm aktiv.")
23. SetEndEffectorSuctionCup()
Aufgabe
Schaltet den Saugnapf ein oder aus.
Sauger einschalten
dType.SetEndEffectorSuctionCup(
api,
True,
True,
isQueued=0
)
Sauger ausschalten
dType.SetEndEffectorSuctionCup(
api,
True,
False,
isQueued=0
)
Typisches vollständiges Grundmuster
import DobotDllType as dType
api = dType.load()
result = dType.ConnectDobot(
api,
"COM10",
115200
)
if result[0] != dType.DobotConnect.DobotConnect_NoError:
print("Verbindung fehlgeschlagen.")
raise SystemExit
try:
dType.SetQueuedCmdStopExec(api)
dType.SetQueuedCmdClear(api)
dType.SetPTPCommonParams(
api,
20,
20,
0
)
pose = dType.GetPose(api)
x = pose[0]
y = pose[1]
z = pose[2]
r = pose[3]
print(
f"Position: "
f"X={x:.1f}, "
f"Y={y:.1f}, "
f"Z={z:.1f}, "
f"R={r:.1f}"
)
ziel_index = dType.SetPTPCmd(
api,
dType.PTPMode.PTPMOVLXYZMode,
x,
y,
z + 20,
r,
isQueued=1
)[0]
dType.SetQueuedCmdStartExec(api)
while dType.GetQueuedCmdCurrentIndex(api)[0] < ziel_index:
dType.dSleep(100)
finally:
dType.SetQueuedCmdStopExec(api)
dType.DisconnectDobot(api)
Empfohlener weiterer Aufbau
- Verbindung
- Status und Position
- Befehlswarteschlange
- HOME und Alarme
- Bewegung und Endeffektoren
Damit besteht bereits ein brauchbarer Kern einer deutschen Dokumentation zu DobotDllType.py, die sich an praktisch verwendeten Python-Befehlen orientiert.