A visualization extension for wandelbots-nova that enables real-time 3D visualization of robot trajectories using rerun.io.
nova_rerun_bridge.mp4
- A running Nova instance (get access at wandelbots.com)
- wandelbots-nova Python package
- Valid Nova API credentials
Check out the minimal example:
# Install the package
poetry install
# Download required robot models
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()
# Log a trajectory
await bridge.log_trajectory(joint_trajectory, tcp, motion_group)
- π€ Real-time 3D robot visualization (see a list of supported robots)
- π― Trajectory playback and analysis
- π₯ Collision scene visualization
- β±οΈ Motion timing analysis
- π Continuous monitoring mode
The python library can be used to feed data to the rerun desktop app. The library is built on top of the nova python library and provides a simple interface to feed data to the rerun desktop app. See the minimal example on how to use the library.
# Log simple motion
await bridge.log_trajectory(joint_trajectory, tcp, motion_group)
# Log collision scenes
await bridge.log_collision_scenes()
# Start streaming robot state
await bridge.start_streaming(motion_group)
# Stop streaming all robot states
await bridge.stop_streaming()
# Log planned actions
await bridge.log_actions(actions)
Adjust the NOVA_API
and NOVA_ACCESS_TOKEN
in the .env
file to your instance URL (e.g. https://unzhoume.instance.wandelbots.io
) and access token. You can find the access token in the developer portal.
Check out our example repository for more detailed examples.
The bridge can be configured through environment variables:
- RECORDING_INTERVAL: Set visualization update interval (default: 0.1s)
After installing the library, you need to download the robot models:
# If installed via poetry
poetry run download-models
# If installed via pip
python -m nova_rerun_bridge.models.download_models
This will download the robot models into your project folder. You can use the library without downloading the models, but you will not be able to visualize the robot models in the rerun viewer.
Code formatting and linting is done with [ruff]
poetry run ruff check scripts/. --fix
poetry run ruff format
To build the package locally, run the following command
poetry build
This will create a dist/ directory with the built package (.tar.gz and .whl files).
nova-rerun-bridge = { git = "https://github.com/wandelbotsgmbh/nova-rerun-bridge.git", branch = "feature/branchname" }
The easiest way to try it out is to install the app on your nova instance. Use the nova cli tool and run:
nova catalog install rerun
nova catalog install nova-rerun-bridge
The nova rerun bridge will be installed on your nova instance and automatically collect all planned motions (see nova_rerun_bridge/polling/populate.py
). If you click on the rerun bridge app, it will start a download of a nova.rrd file. You can open this file with the rerun desktop app or the installed rerun app on the ipc and see the visualization.
-
use the kubeconfig from your nova instance and run
export KUBECONFIG=kubeconfig
-
you can use skaffold to build the image and change the deployment
skaffold dev --cleanup=false --status-check=false
- rerun is able to run behind reverse proxy and the viewer can connect via web
- rerun sdk is not able to connect to rerun which is hosted behind reverse proxy
brew install socat
socat TCP4-LISTEN:6666,fork SYSTEM:"curl -X POST -d @- http://172.30.2.224/some/rerun/sdk/"
{ echo "load_module /usr/lib/nginx/modules/ngx_stream_module.so;"; cat /etc/nginx/nginx.conf; } > temp_file && mv temp_file /etc/nginx/nginx.conf
This project is licensed under the Apache 2.0 License - see the LICENSE file for details.