Prerequisites
Yay, you're about to start developing with Python! 🐍
Using our Python SDK you can leverage existing python libraries, e.g. for machine learning.
Before you start developing you need to know which requirements your system should fulfill, understand the architecture of the Wandelbots NOVA SDK, learn more about specific frameworks, understand which components are used in our template app, and which legal requirements a robotic app should comply to. Then you can dive into the Python quickstart guide: The quickstart page guides you through the process of creating a new application using the Wandelbots CLI tool.
For advanced users, we provide a guide on how to use Jupyter notebooks for prototyping. This guide explains how to use Jupyter notebooks and how to interact with the API.
System requirements
Ensure that your system meets the following requirements:
- Python 3.9 or later installed. Download here (opens in a new tab).
- Operating systems: macOS, Windows (excluding WSL), or Linux.
Architecture
Wandelbots NOVA is a software product that makes it easy to interact with robots.
The main way to communicate with Wandelbots NOVA is a user-facing REST API.
The native way to communicate with that API is directly sending REST requests to the server hosting the Wandelbots NOVA installation.
To make the interaction with the server easier for the client, we offer a Python (opens in a new tab) and Typescript (opens in a new tab) package that abstracts the client-server-communication and lets you focus on writing what you actually want to write: cool robot applications.
Keep in mind, however, that a client-server-communication is happening in the background nonetheless.
All API endpoints that are available via REST are also available via the API client. The client can be found and downloaded from the Pypi Package registry (opens in a new tab) or the NPM registry (opens in a new tab). If you want to get an overview over all endpoints the Wandelbots NOVA API offers, open the API Reference on a Wandelbots NOVA cloud instance.
Wandelbots NOVA uses some robot-domain-specific terminology. We recommend to check out the glossary before starting development.
Prerequisite knowledge
For this guide, we assume you have a basic understanding of Python (opens in a new tab) and asyncio (opens in a new tab).
pyenv
As a general best practice we recommend the usage of pyenv (opens in a new tab) to keep your system clean when using multiple versions of python.
pyenv helps to provide and maintain several versions of python that do not interfere with each other.
This enables you to easily test your application with several python versions without crossdependencies or bloating your system.
poetry
Poetry (opens in a new tab) is an easy-to-use package and dependency management tool.
With poetry, all dependencies can be denoted in a single file and with a single command be installed.
We recommend using poetry for dependency management and all our sample and template applications rely on it to manage the dependencies.
fastapi
FastAPI (opens in a new tab) is a framwork that enables fast creation and deployment of a python-based server.
This way you can create a server that can be deployed to your IPC and connected to from to the outside.
Our template applications rely on FastAPI to speed up the development of a python server to interact with.
Of course you can also use other means to create a python server within your application.
Discover available components
If you prefer to jump into cold waters by your own, here's an overview on our available components. These are included in our example apps.
Component | Description | Location | Language |
---|---|---|---|
wandelbots (Python) | An opinionated Python client providing convenient interfaces and helpers to quickly get started with Wandelbots NOVA. We recommend to start with this api client first. | Github (opens in a new tab), PyPI (opens in a new tab) | Python |
wandelbots-api-client (Python) | An autogenerated Python client which has all stubs and types to communicate with the Wandelbots NOVA API. Use this, when building your own wrappers or abstractions around NOVA. | PyPI (opens in a new tab) | Python |
wandelbots-python-jupyter | Deploy an Jupyter notebook on Wandelbots NOVA. | Github (opens in a new tab) | Python |
geometricalgebra | A Python library providing mathematical utilities useful in robotics and elsewhere. | Github (opens in a new tab), PyPI (opens in a new tab) | Python |
gamepad-example | A sample program written in Python, demonstrating how to control a robot with a game pad and the Wandelbots NOVA API. | Github (opens in a new tab) | Python |
Legally required elements
When developing a robotic application, there are certain app elements that are common or even legally required. To support you in your development process, we've collected a set of common standards and legal requirements for robotic applications. Some of these elements are available in our storybook components (opens in a new tab).
Robot safety state and operating mode
A robotic app must visibly provide information on the robot's status, operating mode and errors at all times.
Standard | Example |
---|---|
DIN EN ISO 10218-1 | In the Wandelbots NOVA core app Robot Pad these standards are fulfilled by the status bar on the top of the screen. |
Operating modes must follow a standardized icon list.
Robot control
It must always be made clear by the UI which device is currently controlling the robot.
Standard | Example |
---|---|
DIN EN ISO 10218-1 | Status field in the UI |
Standard | Example |
---|---|
ISO 7000 | Automatic and manual modes have standardized symbols. |
Singularity
If a robot has reached or will reach a singularity on a planned path, the user must be informed.
Standard | Example |
---|---|
DIN EN ISO 10218-1 | Popups |
Switching between devices
Switching between control devices must be an active decision made by the user.
Standard | Example |
---|---|
DIN EN ISO 60204 | via a button in the UI |
Activation
Activating a robot can never be done automatically. It must be an active decision made by the user.
Standard | Example |
---|---|
DIN EN ISO 10218-1 | via a button in the UI |
Velocity
The robot's TCP velocity must be adjustable.
Standard | Example |
---|---|
DIN EN ISO 10218-1 | via a slider in the UI |
Authentication
Technical components must have limited access for unauthorized users.
Standard | Example |
---|---|
DIN EN ISO 60204 | Login credentials |
Emergency stop
Resetting an emergency stop must be an active decision made by the user. Never reset an emergency stop automatically.
Standard | Example |
---|---|
ISO 13850:2015 | manual action |
Resets of emergency stops can't result in machine reboots, actions or movements.
Standard | Example |
---|---|
ISO 13850:2015 | Interrupted movements have to be restarted after an e-stop has been triggered. |
Communication losses
Communication losses between components must result in a safety stop.
Standard | Example |
---|---|
DIN EN ISO 10218-1 | The ethernet connection gets lost and the robot immediately stops moving. |
Restored communication can't result in machine reboots, actions or movements.
Standard | Example |
---|---|
DIN EN ISO 10218-1 | Interrupted movements have to be restarted after a connection loss. |
Documentation
Robotic applications may fall under the EU Machinery Directive and EU Machinery Regulation. This Directive/Regulation also regulates the technical documentation including risk assessments, user instructions and UI texts. They also determine whether recertification of a machine is required after adding software to it. We strongly recommend consulting with a legal expert to ensure compliance with these regulations.