Python library for Dobot Magician
===
Based on Communication Protocol V1.1.5 (_latest version [here](https://www.dobot.cc/downloadcenter.html?sub_cat=72#sub-download)_)
This is a Fork of Github Repo: [here](https://github.com/luismesas/pydobot?tab=readme-ov-file)
Documentation: [documentation](https://andreishark.github.io/dobotWrapperPy/)
Installation
---
Install driver from https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers.
```bash
pip install dobotWrapperPy
```
Example
---
```python
from serial.tools import list_ports
import dobotWrapperPy
available_ports = list_ports.comports()
print(f'available ports: {[x.device for x in available_ports]}')
port = available_ports[0].device
device = dobotWrapperPy.Dobot(port=port, verbose=True)
(x, y, z, r, j1, j2, j3, j4) = device.pose()
print(f'x:{x} y:{y} z:{z} j1:{j1} j2:{j2} j3:{j3} j4:{j4}')
device.move_to(x + 20, y, z, r, wait=False)
device.move_to(x, y, z, r, wait=True) # we wait until this movement is done before continuing
device.close()
```
Methods
---
* **Dobot(port, verbose=False)** Creates an instance of dobot connected to given serial port.
* **port**: _string_ with name of serial port to connect
* **verbose**: _bool_ will print to console all serial comms
* **.pose()** Returns the current pose of dobot, as a tuple (x, y, z, r, j1, j2, j3, j4)
* **x**: _float_ current x cartesian coordinate
* **y**: _float_ current y cartesian coordinate
* **z**: _float_ current z cartesian coordinate
* **r**: _float_ current effector rotation
* **j1**: _float_ current joint 1 angle
* **j2**: _float_ current joint 2 angle
* **j3**: _float_ current joint 3 angle
* **j4**: _float_ current joint 4 angle
* **.move_to(x, y, z, r, wait=False)** queues a translation in dobot to given coordinates
* **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 command has been executed to return to process
* **.speed(velocity, acceleration)** changes velocity and acceleration at which the dobot moves to future coordinates
* **velocity**: _float_ desired translation velocity
* **acceleration**: _float_ desired translation acceleration
* **.suck(enable)**
* **enable**: _bool_ enables/disables suction
* **.grip(enable)**
* **enable**: _bool_ enables/disables gripper
* **.wait(ms)** adds a waiting period to the internal queue of messages
* **ms**: _int_ number of milliseconds to wait
Raw data
{
"_id": null,
"home_page": "https://github.com/andreishark/dobotWrapperPy",
"name": "dobotWrapperPy",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "dobot, magician, robotics, minitechnicus",
"author": "Minitechnicus",
"author_email": "dev@minitechnicus.org",
"download_url": "https://files.pythonhosted.org/packages/4c/e5/16d07b0fae6acd998702440362b1b2ac70760462f7e1478b3f39567800bc/dobotwrapperpy-1.2.1.tar.gz",
"platform": null,
"description": "Python library for Dobot Magician\n===\n\nBased on Communication Protocol V1.1.5 (_latest version [here](https://www.dobot.cc/downloadcenter.html?sub_cat=72#sub-download)_)\n\nThis is a Fork of Github Repo: [here](https://github.com/luismesas/pydobot?tab=readme-ov-file)\n\nDocumentation: [documentation](https://andreishark.github.io/dobotWrapperPy/)\n\nInstallation\n---\n\nInstall driver from https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers.\n\n```bash\npip install dobotWrapperPy\n```\n\nExample\n---\n\n```python\nfrom serial.tools import list_ports\n\nimport dobotWrapperPy\n\navailable_ports = list_ports.comports()\nprint(f'available ports: {[x.device for x in available_ports]}')\nport = available_ports[0].device\n\ndevice = dobotWrapperPy.Dobot(port=port, verbose=True)\n\n(x, y, z, r, j1, j2, j3, j4) = device.pose()\nprint(f'x:{x} y:{y} z:{z} j1:{j1} j2:{j2} j3:{j3} j4:{j4}')\n\ndevice.move_to(x + 20, y, z, r, wait=False)\ndevice.move_to(x, y, z, r, wait=True) # we wait until this movement is done before continuing\n\ndevice.close()\n```\n\nMethods\n---\n\n* **Dobot(port, verbose=False)** Creates an instance of dobot connected to given serial port.\n * **port**: _string_ with name of serial port to connect\n * **verbose**: _bool_ will print to console all serial comms\n\n* **.pose()** Returns the current pose of dobot, as a tuple (x, y, z, r, j1, j2, j3, j4)\n * **x**: _float_ current x cartesian coordinate\n * **y**: _float_ current y cartesian coordinate\n * **z**: _float_ current z cartesian coordinate\n * **r**: _float_ current effector rotation\n * **j1**: _float_ current joint 1 angle\n * **j2**: _float_ current joint 2 angle\n * **j3**: _float_ current joint 3 angle\n * **j4**: _float_ current joint 4 angle\n* **.move_to(x, y, z, r, wait=False)** queues a translation in dobot to given coordinates\n * **x**: _float_ x cartesian coordinate to move\n * **y**: _float_ y cartesian coordinate to move\n * **z**: _float_ z cartesian coordinate to move\n * **r**: _float_ r effector rotation\n * **wait**: _bool_ waits until command has been executed to return to process\n* **.speed(velocity, acceleration)** changes velocity and acceleration at which the dobot moves to future coordinates\n * **velocity**: _float_ desired translation velocity\n * **acceleration**: _float_ desired translation acceleration\n* **.suck(enable)**\n * **enable**: _bool_ enables/disables suction\n* **.grip(enable)**\n * **enable**: _bool_ enables/disables gripper\n* **.wait(ms)** adds a waiting period to the internal queue of messages\n * **ms**: _int_ number of milliseconds to wait\n",
"bugtrack_url": null,
"license": null,
"summary": "Python library for Dobot Magician For Minitechnicus Courses",
"version": "1.2.1",
"project_urls": {
"Download": "https://github.com/andreishark/dobotWrapperPy",
"Homepage": "https://github.com/andreishark/dobotWrapperPy"
},
"split_keywords": [
"dobot",
" magician",
" robotics",
" minitechnicus"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "659a603e29ce2af2fca1152cc57d6115db5c105069dc669642fa9a7ccfdb8298",
"md5": "56afe356620e58abdcecc09820c5e9f2",
"sha256": "92f520a74c06f73909bbd47c4f086f92feb70c6dac47ab23f6eef94f24595c40"
},
"downloads": -1,
"filename": "dobotwrapperpy-1.2.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "56afe356620e58abdcecc09820c5e9f2",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 53613,
"upload_time": "2025-07-13T12:20:57",
"upload_time_iso_8601": "2025-07-13T12:20:57.314438Z",
"url": "https://files.pythonhosted.org/packages/65/9a/603e29ce2af2fca1152cc57d6115db5c105069dc669642fa9a7ccfdb8298/dobotwrapperpy-1.2.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4ce516d07b0fae6acd998702440362b1b2ac70760462f7e1478b3f39567800bc",
"md5": "01376a7d7f023fa49a538183c92c40b4",
"sha256": "1d07616eed71ca2dd3906e3b8c039071a725b8741b3e4bbcfda67b8c4b1a76df"
},
"downloads": -1,
"filename": "dobotwrapperpy-1.2.1.tar.gz",
"has_sig": false,
"md5_digest": "01376a7d7f023fa49a538183c92c40b4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 48610,
"upload_time": "2025-07-13T12:20:58",
"upload_time_iso_8601": "2025-07-13T12:20:58.957773Z",
"url": "https://files.pythonhosted.org/packages/4c/e5/16d07b0fae6acd998702440362b1b2ac70760462f7e1478b3f39567800bc/dobotwrapperpy-1.2.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-13 12:20:58",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "andreishark",
"github_project": "dobotWrapperPy",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "attrs",
"specs": [
[
"==",
"25.3.0"
]
]
},
{
"name": "Automat",
"specs": [
[
"==",
"25.4.16"
]
]
},
{
"name": "CacheControl",
"specs": [
[
"==",
"0.14.3"
]
]
},
{
"name": "certifi",
"specs": [
[
"==",
"2025.4.26"
]
]
},
{
"name": "charset-normalizer",
"specs": [
[
"==",
"3.4.2"
]
]
},
{
"name": "ConfigArgParse",
"specs": [
[
"==",
"1.7"
]
]
},
{
"name": "constantly",
"specs": [
[
"==",
"23.10.4"
]
]
},
{
"name": "docutils",
"specs": [
[
"==",
"0.21.2"
]
]
},
{
"name": "filelock",
"specs": [
[
"==",
"3.18.0"
]
]
},
{
"name": "hyperlink",
"specs": [
[
"==",
"21.0.0"
]
]
},
{
"name": "idna",
"specs": [
[
"==",
"3.10"
]
]
},
{
"name": "incremental",
"specs": [
[
"==",
"24.7.2"
]
]
},
{
"name": "iniconfig",
"specs": [
[
"==",
"2.1.0"
]
]
},
{
"name": "lunr",
"specs": [
[
"==",
"0.7.0.post1"
]
]
},
{
"name": "msgpack",
"specs": [
[
"==",
"1.1.0"
]
]
},
{
"name": "mypy",
"specs": [
[
"==",
"1.16.1"
]
]
},
{
"name": "mypy_extensions",
"specs": [
[
"==",
"1.1.0"
]
]
},
{
"name": "packaging",
"specs": [
[
"==",
"25.0"
]
]
},
{
"name": "pathspec",
"specs": [
[
"==",
"0.12.1"
]
]
},
{
"name": "platformdirs",
"specs": [
[
"==",
"4.3.8"
]
]
},
{
"name": "pluggy",
"specs": [
[
"==",
"1.6.0"
]
]
},
{
"name": "pydoctor",
"specs": [
[
"==",
"24.11.2"
]
]
},
{
"name": "pyserial",
"specs": [
[
"==",
"3.5"
]
]
},
{
"name": "pytest",
"specs": [
[
"==",
"8.3.5"
]
]
},
{
"name": "requests",
"specs": [
[
"==",
"2.32.3"
]
]
},
{
"name": "setuptools",
"specs": [
[
"==",
"80.8.0"
]
]
},
{
"name": "Twisted",
"specs": [
[
"==",
"24.11.0"
]
]
},
{
"name": "types-pyserial",
"specs": [
[
"==",
"3.5.0.20250326"
]
]
},
{
"name": "typing_extensions",
"specs": [
[
"==",
"4.13.2"
]
]
},
{
"name": "urllib3",
"specs": [
[
"==",
"2.4.0"
]
]
},
{
"name": "zope.interface",
"specs": [
[
"==",
"7.2"
]
]
}
],
"lcname": "dobotwrapperpy"
}