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/9e/18/31943ca9d28fda1b3461f566e724584c8fd8a9168f2d3607cd5b593ba768/dobotwrapperpy-1.3.0.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.3.0",
"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": "1952aeb8275e0499dedd6e962a5d75d1be378805e41f918980f251ebb9ba59cc",
"md5": "5c353f122e0c607ab8326ed1c1d9b2ef",
"sha256": "5d2af111c68eca58b8a04c454aae1d949157c95ec6274a120ce573b1359fb607"
},
"downloads": -1,
"filename": "dobotwrapperpy-1.3.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "5c353f122e0c607ab8326ed1c1d9b2ef",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 40310,
"upload_time": "2025-07-29T09:44:15",
"upload_time_iso_8601": "2025-07-29T09:44:15.690456Z",
"url": "https://files.pythonhosted.org/packages/19/52/aeb8275e0499dedd6e962a5d75d1be378805e41f918980f251ebb9ba59cc/dobotwrapperpy-1.3.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9e1831943ca9d28fda1b3461f566e724584c8fd8a9168f2d3607cd5b593ba768",
"md5": "fcde0f3732b30232de99b72d83e6e181",
"sha256": "c2a9db861a50fa410e6eb2d03b182e2cadd11ee4016d9c22c262a5f5f7ca47a8"
},
"downloads": -1,
"filename": "dobotwrapperpy-1.3.0.tar.gz",
"has_sig": false,
"md5_digest": "fcde0f3732b30232de99b72d83e6e181",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 41493,
"upload_time": "2025-07-29T09:44:17",
"upload_time_iso_8601": "2025-07-29T09:44:17.212939Z",
"url": "https://files.pythonhosted.org/packages/9e/18/31943ca9d28fda1b3461f566e724584c8fd8a9168f2d3607cd5b593ba768/dobotwrapperpy-1.3.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-29 09:44:17",
"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"
}