An extended Python library for controlling the Dobot Magician.
Install the driver from Silicon Labs.
Run:
pip install pydobotplus
from serial.tools import list_ports
from pydobotplus import Dobot, CustomPosition
available_ports = list_ports.comports()
print(f'available ports: {[x.device for x in available_ports]}')
port = available_ports[2].device
device = Dobot(port=port)
# Create a custom position
pos1 = CustomPosition(x=200, y=50, z=50)
# Move using direct coordinates
device.move_to(x=200, y=50, z=50)
# Move using custom position
device.move_to(position=pos1)
# Control the conveyor belt
device.conveyor_belt(speed=0.5, direction=1)
device.conveyor_belt_distance(speed_mm_per_sec=50, distance_mm=200, direction=1)
device.close()
-
Dobot(port, verbose=False) Creates an instance of Dobot connected to the given serial port.
- port: string with name of serial port to connect
- verbose: bool will print to console all serial communications
-
.get_pose() Returns the current pose of the Dobot, as a
Pose
named tuple (position and joints).- position: Position with (x, y, z, r) coordinates
- joints: Joints with (j1, j2, j3, j4) angles
-
.move_to(x=None, y=None, z=None, r=0, wait=True, mode=None, position=None) Queues a translation for the Dobot to the given coordinates or a
Position
object, keeps any unspecified parameters the same.- x: float x cartesian coordinate to move
- y: float y cartesian coordinate to move
- z: float z cartesian coordinate to move
- r: float r effector rotation
- wait: bool waits until the command has been executed before returning to the process - DO NOT TOUCH UNLESS YOU KNOW WHAT YOU ARE DOING
- mode: MODE_PTP movement mode (default is
MODE_PTP.MOVJ_XYZ
) - DO NOT TOUCH UNLESS YOU KNOW WHAT YOU ARE DOING - position: Position object with (x, y, z, r) coordinates
-
.move_rel(x=0, y=0, z=0, r=0, wait=True) Moves the Dobot relative to its current position, keeps any unspecified parameters the same.
- x: float relative x coordinate
- y: float relative y coordinate
- z: float relative z coordinate
- r: float relative r rotation
- wait: bool waits until the command has been executed before returning to the process
-
.speed(velocity, acceleration) Changes the velocity and acceleration at which the Dobot moves to future coordinates.
- velocity: float desired translation velocity
- acceleration: float desired translation acceleration
-
.suck(enable) Enables or disables suction.
- enable: bool enables/disables suction
-
.grip(enable) Enables or disables the gripper.
- enable: bool enables/disables gripper
-
.get_alarms() Returns a set of current alarms.
- returns: set of
Alarm
enums
- returns: set of
-
.clear_alarms() Clears all current alarms.
-
CustomPosition(x=None, y=None, z=None, r=None) Initializes a custom position object.
- x: float x coordinate
- y: float y coordinate
- z: float z coordinate
- r: float effector rotation - NOT USED ON MAGICIAN
-
MODE_PTP Enum class for various PTP modes such as
JUMP_XYZ
,MOVJ_XYZ
,MOVL_XYZ
, etc. - DO NOT TOUCH UNLESS YOU KNOW WHAT YOU ARE DOING -
DobotException Custom exception class for handling Dobot-related errors.
-
.set_color_sensor(enable=True, version=1) Enables or disables the color sensor.
- enable: bool enables/disables the sensor
- version: int sensor version
-
.get_color() Returns the RGB values detected by the color sensor.
- returns: list with RGB values
-
.set_ir(enable=True, port=PORT_GP4) Enables or disables the IR sensor on the specified port.
- enable: bool enables/disables the sensor
- port: int port number
-
.get_ir(port=PORT_GP4) Returns the state of the IR sensor on the specified port.
- port: int port number
- returns: bool state of the sensor
-
.conveyor_belt(speed, direction=1, interface=0) Sets the speed and direction of the conveyor belt.
- speed: float speed of the conveyor belt (range: 0.0 to 1.0)
- direction: int direction of the conveyor belt (1 for forward, -1 for backward)
- interface: int motor interface (default is 0)
-
.conveyor_belt_distance(speed_mm_per_sec, distance_mm, direction=1, interface=0) Moves the conveyor belt at a specified speed for a specified distance.
- speed_mm_per_sec: float speed in millimeters per second (must be <= 100)
- distance_mm: float distance in millimeters
- direction: int direction of the conveyor belt (1 for forward, -1 for backward)
- interface: int motor interface (default is 0)