# Wandelbots Nova (Pro)

{% hint style="warning" %}
This interface is currently in Beta and included in realvirtual.io Professional since Version 6.1.0
{% endhint %}

## Overview

This documentation provides a guide for utilizing the Wandelbots NOVA Interface within the realvirtual.io framework for automation concept design, virtual commissioning, and 3D-HMI. This interface facilitates seamless communication and control of robotic systems through the Wandelbots NOVA API.

<figure><img src="https://260262196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpYxFg97YnJX96UzNNTSd%2Fuploads%2Fgit-blob-65351b74a810109a38d78e5d6174a6423e990031%2FWandelbotsNova.png?alt=media" alt=""><figcaption><p>Wandelbots NOVA Interface</p></figcaption></figure>

<figure><img src="https://260262196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpYxFg97YnJX96UzNNTSd%2Fuploads%2Fgit-blob-12fd11010f1c1ab4674fe8c843655d5cddf89ae6%2FWandelbotsNovaWeb.png?alt=media" alt=""><figcaption><p>NOVA controlling the Demo scene</p></figcaption></figure>

Wandelbots NOVA provides additional value in allowing users to leverage the robot program they have created and let it run on the phyiscal robot using Wandelbots NOVA.

**Features:**

* **Signal Handling:** Import and manage input/output signals dynamically.
* **Robot Motion Control:** Supports jogging, target creation, and program execution.
* **Teach Mode:** Real-time robot teaching with a dedicated mode for setting targets within the Unity Editor.
* **Program Execution:** Execute robotic programs with built-in templating and monitoring of current robot position.

## Installation and Requirements

Wandelbots NOVA requires an installation, whether used locally or hosted.

"Check out the Wandelbots NOVA documentation for further information."

(The docs are currently not public. )

Contact Wandelbots to get more information and access to Wandelbots NOVA. (<https://www.wandelbots.com/contact>)

## Robot Preparation

The demo scene includes a **Fanuc CRX-10iA\_L Robot** prefab, which serves as a basis for configuring other robots. To prepare a new robot, certain requirements must be met to ensure compatibility with the Wandelbots NOVA Interface and the realvirtual.io framework.

### Requirements for Configuring a New Robot

* **Robot Prefab**
  * Use the **Fanuc CRX-10iA\_L Robot prefab** as a starting template.
  * Adjust dimensions, structure, or components based on the specific robot you are configuring.
* **Drives for Robot Axis**
  * Every axis pivot point of the robot must include a **Drive** component.
  * The Drive positive direction needs to point in the positive axis jog direction.
* **Target Parent Setup**
  * The **0 point** of the **Target parent** GameObject must align with the robot's **0 point** (base of the robot).
  * This ensures accurate positioning and motion planning.
* **Hierarchy and Pivot Points**
  * Maintain a clean and structured hierarchy for the robot parts.
  * Ensure pivot points for each axis are correctly positioned relative to the physical robot's design.
* **TCP (Tool Center Point)**
  * Define the robot's TCP as a separate GameObject attached to the robot.
  * The TCP represents the point of interaction for tools or end effectors.
* **Robot Targets**

  * Ensure all targets are created under the specified **Robot Target Root**.
  * Targets should be defined relative to the TCP for precise motion control.
  * Targets needs to be in a parent correctly defining the logical 0 point of the robot as shown in this picture:

  <figure><img src="https://260262196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpYxFg97YnJX96UzNNTSd%2Fuploads%2Fgit-blob-9dbd01c5c05a5bec251fb4d8f189ff57b9261584%2FWandelbotTargets.png?alt=media" alt=""><figcaption><p>Robot Targets 0 Point</p></figcaption></figure>

{% hint style="warning" %}
After preparing the robot in the Unity Editor, it is crucial to save its **0 Position** by pressing "**Save 0 Pos**" before starting any operations. This step ensures that you can revert the robot to its default position if issues arise during the teaching process in Unity Editor mode.
{% endhint %}

## Importing and Managing Signals

To import signals, click the **Import Signals** button in the Wandelbots NOVA Interface. This will load all available signals, including standard ones. For better performance, delete any unneeded signals to reduce overhead and keep the setup efficient.

## Teaching the Robot in Unity Editor

The Wandelbots interface allows teaching robot targets directly in the Unity Editor without switching between Edit and Play modes. You can use the **NOVATarget Prefab**, placing it under the **Target Root**, to define positions for the robot.

### Target modes

Selecting or moving a target makes the robot automatically jump to the specified position, which works in **Pose Mode** or **Joint Mode**.

* **Pose Mode:** Defines a target pose (position and orientation). The robot moves to the nearest solution during runtime, though multiple solutions can be previewed in the Editor.
* **Joint Mode:** Defines a specific joint configuration (axis angles). This fixed solution is transferred to the robot program, ensuring precise movements.
* **Fixed Solution:** Generated when saving a position in **Teach Mode**, locking the robot to an exact configuration without allowing pose changes.

### NOVATarget Properties

<figure><img src="https://260262196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpYxFg97YnJX96UzNNTSd%2Fuploads%2Fgit-blob-dad848d53491a9f5741a154bb782203f16b8ab24%2FWandelbotNovaTarget.png?alt=media" alt=""><figcaption><p>Robot Target</p></figcaption></figure>

* **Follow In Edit Mode:** Allows the robot to follow target movements in the Editor.
* **Display Axis:** Toggles visibility of target coordinate axes.
* **Display Gripper Ghost:** Shows a transparent gripper representation at the target.
* **Hide Axis Gripper On:** Hides axis and gripper visuals during specific operations.
* **Axis:** Assigns the axis visual (GameObject).
* **Gripper Ghost:** Assigns the gripper ghost visual (GameObject).
* **Target Mode:** Defines the interaction mode:
  * **Pose Mode:** Moves to a pose using the nearest solution.
  * **Joint Mode:** Fixes specific joint angles.
  * **Fixed Solutions:** Locks the robot to an exact pose.
* **Solution:** Displays and changes the current solution.
* **Pose:** The current Pose in Wandelscript format.
* **Joints:** The current Joint solution in Wandelscript format.
* **Update Solutions:** Recalculates available solutions.
* **Move to Target:** Moves the robot to the defined target.

### Teach Mode

In **Teach Mode**, the robot automatically aligns with the current **Wandelbots NOVA Status**. This mode allows precise control over the robot's positioning and target creation.

* **Speed Control:** Define maximum linear and rotational speeds for movements (in mm/s or Degrees / s).
* **Jogging:** Adjust all linear and rotational axes manually.
* **Create Target:** Use the **Create Target** button to generate a **NOVATarget** in the **Fixed Solution** configuration, ensuring the robot is locked to the exact saved position.

<figure><img src="https://260262196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpYxFg97YnJX96UzNNTSd%2Fuploads%2Fgit-blob-d514a06e1869253a3778a9b6da0da233347b8bb7%2FWandelbotsTeachMode.png?alt=media" alt=""><figcaption><p>Teach Mode</p></figcaption></figure>

## Robot Programms

Wandelscript offers a high-level programming language to control robots. It is easy to learn and use, especially if you're familiar with Python. Wandelscript is a domain-specific language that is designed to be used with Wandelbots NOVA. You can find some Wandelscript examples here: <https://github.com/wandelbotsgmbh/wandelscript-examples>

### Wandelscript Templates

You can create a standard robot program with placeholders (e.g., `{Targetname}`) to streamline the integration of robot targets. This approach allows dynamic target updates without manually modifying the robot program.

<figure><img src="https://260262196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpYxFg97YnJX96UzNNTSd%2Fuploads%2Fgit-blob-9955b7f72562f67d25fe36130c7d586d5951482c%2FWandelbotWandelscript.png?alt=media" alt=""><figcaption><p>Example Wandelscript template with Placeholders</p></figcaption></figure>

* **Placeholder Use:** Define placeholders like `{Targetname}` in the program template.
* **Automatic Target Insertion:** When starting the robot program via realvirtual, all targets (joint or pose definitions) will be inserted automatically into the program.
* **Dynamic Updates:** Adjust targets in the Unity Editor without manually adapting the program.
* **Program Definition:** One program can be assigned in the interface properties.
* **Start Program:** Press the **Start Program** button to execute the robot program automatically.

### Starting Programms with Signals

The **WandelscriptRunner** component enables execution of different robot program templates via the **WandelscriptInterface**. Assign a robot program to **Wandelscript**, a **PLCOutput** to **Start Wandelscript** to trigger the program, and optionally configure **Wandelscript Is Running** and **Wandelscript Finished** with **PLCInput** signals to monitor the program's execution status. This allows dynamic triggering and management of robot programs through PLC signals.

<figure><img src="https://260262196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpYxFg97YnJX96UzNNTSd%2Fuploads%2Fgit-blob-df653ed4a9191f770e3efe49e301aa98a48e280b%2FWandelscriptRunner.png?alt=media" alt=""><figcaption><p>Wandelscript Runner</p></figcaption></figure>

## Interface Properties

#### **Active**

Defines in which modes the interface should be acive. Check[ Connection Status](https://doc.realvirtual.io/basics/runtime-ui#connection-status) for more information.

#### **Wandelbots Server**

URL of the Wandelbots NOVA server. Can be a local or a cloud instance (e.g. `http://172.20.125.85`) for local instance.

#### **Motion Group**

Identifier for the robot's motion group (e.g. `1@fanuc`)

#### **Username**

The username used for authentication with the Wandelbots server.

#### **Password**

The password used for authentication with the Wandelbots server.

#### **Access Token**

Token for authentication, overriding `Username` and `Password`. Must be used for cloud instances.

#### **Cell**

Identifier for the robotic cell (standard is `cell`).

#### **Debug Mode**

Enables detailed debug logging in the Unity console. Turn it on on connection problems.

#### **Cycle Time (ms)**

Time interval for state updates from the server (standard 20ms).

#### **Start Program On Simulation**

Automatically starts the program when the simulation begins.

#### **Loop Program**

Enables looping of the executed program.

#### **Program Timeout (s)**

Timeout period for program execution.

#### **Program Template**

Text asset containing the template code for the robot program.

#### **Program Executed**

Text asset where the executed program code is saved.

#### **Robot Target Prefab**

Prefab used for creating new robot targets in Teach Mode.

#### **TCP**

GameObject representing the robot's Tool Center Point.

#### **Robot Target Root**

Parent GameObject for all created robot targets.

#### **Coordinate System Prefab**

Prefab for visualizing the robot's coordinate system in Teach Mode.

#### **Controller**

Name of the robot controller (read-only).

#### **Inputs**

Number of inputs available in the robot controller.

#### **Outputs**

Number of outputs available in the robot controller.

#### **Program Is Running**

Indicates if a program is currently running.

#### **Teach Mode**

Indicates if Teach Mode is currently active.

1.
