Eva Python SDK
The Eva Python SDK provides convenient access to the Automata Eva API from applications written in Python 3. Documentation is available here.
* This SDK is currently in beta
Installation
Requires Python 3, not compatible with Python 2
We support Python 3.6 and later.
Pip
Make sure you have Python3 and pip installed, then run the following command:
$ pip install evasdk
# Or for a specific version, i.e the lastest compatible version 2.x.x:
$ pip install evasdk~=2.0.0
Pipenv
Make sure you have Python3 and Pipenv installed, then run the following command:
$ pipenv install evasdk
# Or for a specific version, i.e the lastest compatible version 2.x.x:
$ pipenv install evasdk~=2.0.0
Detail Instructions
If your not familiar with Python or for more detailed instructions please refer to our wiki:
Examples
The following section provides some getting started example code, for more detailed examples please go to our eva_examples repository.
Eva
The Eva object allows you to directly control an Eva robot. It provides lots of useful helper function for interacting with the robot.
Connecting
host = '<your_eva_IP_here>'
token = '<your_token_here>'
eva = Eva(host, token)
GoTo movement
eva = Eva(host_ip, token)
with eva.lock():
eva.control_wait_for_ready()
eva.control_go_to([0, 0, 0, 0, 0, 0], mode='teach')
Toolpath create and run
toolpath = {
"metadata": {
"version": 2,
"default_max_speed": 0.25,
"payload": 0,
"analog_modes": {
"i0": "voltage",
"i1": "voltage",
"o0": "voltage",
"o1": "voltage"
},
"next_label_id": 3
},
"waypoints": [{
"label_id": 1,
"joints": [0, 0.5235987755982988, -1.7453292519943295, 0, -1.9198621771937625, 0]
}, {
"label_id": 2,
"joints": [0.18392622441053394, 0.8259819316864014, -2.050006151199341, 0.1785774528980255, -1.6037521743774412, -0.549331545829773]
}],
"timeline": [{
"type": "home",
"waypoint_id": 0
}, {
"type": "trajectory",
"trajectory": "joint_space",
"waypoint_id": 1
}, {
"type": "trajectory",
"trajectory": "joint_space",
"waypoint_id": 0
}]
}
eva = Eva(host, token)
with eva.lock():
eva.control_wait_for_ready()
eva.toolpaths_use(toolpath)
eva.control_home()
eva.control_run(loop=1, mode='teach')
Please refer to the examples directory for more SDK usage examples.
evasdk.eva_http and evasdk.eva_ws
These can be used to interact directly with the HTTP and Websocket APIs. Useful when you don't want the managed websocket connection provided by the evasdk.Eva object.
Versioning
To determine which version of the SDK works with your Eva's software version number (found on the Choreograph config page), please reference the following table:
| SDK Version | Supported Eva Version |
|---|---|
| 1.0.0 | 2.0.0 - 2.1.2 |
| 2.0.0 | 3.0.0 - 3.0.1 |
| 3.0.0 and later | 3.1.0 and later |
For more information on how to install a particular version of the SDK, please refer to the Installation section. We use the Semver version numbering stratergy.
Logging
The SDK uses Debug and Error level logging exclusively. Each Eva instance will log using the name evasdk.Eva:<host_name_here>. If you wish to enable the debug logging:
logging.basicConfig(level=logging.DEBUG)
Bugs and feature requests
Please raise any bugs or feature requests as a Github issues. We also gratefully accept pull requests for features and bug fixes.
Testing
# to run all test files in tests directory:
$ pipenv run test
# or to run a single test file:
$ pipenv shell
$ pipenv run testd tests/<test-name>_test.py
# some test require testing against a real robot. Therefore you will be required to supply a ip and token via the `--ip` and `--token` arguments as well as pass the --runrobot flag to notify pytest that you wish to run the robot tests:
$ pipenv run test --runrobot --ip 172.16.16.2 --token abc-123-def-456
# Tests requiring the robot or long amounts of time will not run by default,
# these require flags to be enabled, a full list of flags is available with the help flag:
$ pipenv run test -h
Documentation
Find the documentation here.
We are using Sphinx to generate documentation, and the documentation is deployed with Read The Docs.
We have added a few extensions to Sphinx
- sphinx.ext.autodoc to automatically generate package documentation based off of Python docstrings.
- m2r2 to convert rST to MD, this is so we can include
README.mdto the online docs.
We have a GitHub Action in the build.yaml workflow that will do this automatically update the documentation and commit the documentation changes on pushing a branch to GitHub. For this we are using EndBug/add-and-commit.
Read The Docs has automation rules. We have one set up that will automatically build documentation for any semver tagged version of the project.
We need to pass the force flag -f to overwrite modules.rst, as otherwise Sphinx will skip over searching the evasdk directory.
To generate a local version of the documentation:
cd docs
make html
Then open the file docs/_build/html/index.html in your browser.
License
This code is free to use under the terms of the Apache 2 license. Please refer to LICENSE for more information.
Metadata
Release files for evasdk 5.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| evasdk-5.0.1.tar.gz | 24.6 kB | Without provenance | Details for evasdk-5.0.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| evasdk-5.0.1-py3-none-any.whl | Python 3 | none | any | Details for evasdk-5.0.1-py3-none-any.whl |
Total release size: 49.2 kB
Release files / evasdk-5.0.1.tar.gz
| Download URL | evasdk-5.0.1.tar.gz |
|---|---|
| Size | 24.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1bcab9b3fea1545dd327fe5e453dfe8bec65ff614aae10b94fbdbe6b880291f6
|
|
BLAKE2b-256 checksum How to use checksums |
7feee3b32f5f69132f113f6ee17ce687866132e64f0999679c416fc33120c80b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12
|
Release files / evasdk-5.0.1-py3-none-any.whl
| Download URL | evasdk-5.0.1-py3-none-any.whl |
|---|---|
| Size | 24.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1e74e6d055ae64fb6a2cfa2f4e4eba2ac076e6dbd59dc309f0c948bceba7f5e9
|
|
BLAKE2b-256 checksum How to use checksums |
98a34c6410c4b725958e76748f244d994fd984f28a1def968ead1ed6ebbb1a42
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12
|
Security for evasdk 5.0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.