This library provides an SDK for the Wandelbots NOVA API.
The SDK will help you to build your own apps and services on top of NOVA and makes programming a robot as easy as possible.
wandelbots-nova_simple_welding.mov
- A running Nova instance (get access at wandelbots.com)
- Valid Nova API credentials
- Python >=3.10
See the examples for usage of this library and further examples: utilizing rerun as a visualizer
# Add the package to your pyproject.toml
wandelbots-nova = { version = ">=0.12", extras = ["nova-rerun-bridge"] }# Download the latest robot models (depends on gltf-transform)
npm install -g @gltf-transform/cli
poetry run download-models# Add credentials and instance to .env file
NOVA_API="https://your-instance.wandelbots.io"
NOVA_ACCESS_TOKEN="your-access-token"from nova_rerun_bridge import NovaRerunBridge
from nova import Nova
# Connect to your Nova instance (or use .env file)
nova = Nova(
host="https://your-instance.wandelbots.io",
access_token="your-access-token"
)
bridge = NovaRerunBridge(nova)
# Setup visualization
await bridge.setup_blueprint()
# Setup robot
cell = nova.cell()
controller = await cell.ensure_virtual_robot_controller(
"ur",
models.VirtualControllerTypes.UNIVERSALROBOTS_MINUS_UR10E,
models.Manufacturer.UNIVERSALROBOTS,
)
# Connect to the controller and activate motion groups
async with controller[0] as motion_group:
home_joints = await motion_group.joints()
tcp_names = await motion_group.tcp_names()
tcp = tcp_names[0]
# Get current TCP pose and offset it slightly along the x-axis
current_pose = await motion_group.tcp_pose(tcp)
target_pose = current_pose @ Pose((1, 0, 0, 0, 0, 0))
actions = [
jnt(home_joints),
ptp(target_pose),
jnt(home_joints),
]
# Plan trajectory
joint_trajectory = await motion_group.plan(actions, tcp)
# Log a trajectory
await bridge.log_trajectory(joint_trajectory, tcp, motion_group)To use the library, first install it using the following command
pip install wandelbots-novaWe recommend installing the library with the nova-rerun-bridge extra to make usage of the visualization tool rerun.
See the README.md for further details.
pip install "wandelbots-nova[nova-rerun-bridge]"Or add to your pyproject.toml:
wandelbots-nova = { version = ">=0.12", extras = ["nova-rerun-bridge"] }You need to download the robot models to visualize the robot models in the rerun viewer. This needs the NPM package ltf-transform installed on your machine. You can download the models by running the following command:
npm install -g @gltf-transform/cli
poetry run download-modelsImport the library in your code to get started.
from nova import NovaThe SDK also includes an auto-generated API client for the NOVA API. You can access the API client using the api module.
from nova import apiCheckout the 01_basic and 02_plan_and_execute examples to learn how to use the library.
In the this directory are more examples to explain the advanced usage of the SDK. If you want to utilize rerun as a visualizer you can find examples in the nova_rerun_bride examples folder.
To install the development dependencies, run the following command
poetry installpoetry run ruff format
poetry run ruff check --select I --fixdocker run --rm -it -v $(pwd):/data cytopia/yamllint -d .yamllint .When having feature branches or forks, or might be helpful to test the library as dependency in other projects first. Poetry allows to pull the library from different sources. See the Poetry Doc for more information.
Poetry Version < 2:
wandelbots-nova = { git = "https://github.com/wandelbotsgmbh/wandelbots-nova.git", branch = "fix/http-prefix" }Poetry Version >=2
wandelbots-nova @ git+https://github.com/wandelbotsgmbh/wandelbots-nova.git@fix/http-prefix- Copy the Template: Make a copy of the provided
.env.templatefile and rename it to.envwithcp .env.template .env. - Fill in the Values: Open the
.envfile in a text editor and provide the necessary values for each variable. The table below describes each variable and its usage.
| Variable | Description | Required | Default | Example |
|---|---|---|---|---|
NOVA_API |
The base URL or hostname of the NOVA server instance. | Yes | None | https://nova.example.com or http://172.0.0.1 |
NOVA_USERNAME |
The username credential used for authentication with the NOVA service. | Yes* | None | my_username |
NOVA_PASSWORD |
The password credential used in conjunction with NOVA_USERNAME. |
Yes* | None | my_password |
NOVA_ACCESS_TOKEN |
A pre-obtained access token for NOVA if using token-based authentication. | Yes* | None | eyJhbGciOi... |
Note on Authentication: You can authenticate with NOVA using either username/password credentials or a pre-obtained access token, depending on your setup and security model:
- If using username/password: Ensure both
NOVA_USERNAMEandNOVA_PASSWORDare set, and leaveNOVA_ACCESS_TOKENunset.- If using an access token: Ensure
NOVA_ACCESS_TOKENis set, and leaveNOVA_USERNAMEandNOVA_PASSWORDunset.Only one method should be used at a time. If both methods are set, the token-based authentication (
NOVA_ACCESS_TOKEN) will typically take precedence.