There are two main versions of the Universal Robots simulation software: **Polyscope** (the classic version running on a Virtual Machine) and **PolyscopeX** (the new web-based version running on Docker). Choose the one that fits your needs.

## Polyscope (VM based)

This is the standard simulator for e-Series and CB-Series robots. It runs inside a Virtual Machine using VirtualBox.

### Step-by-Step Installation

1.  **Download VirtualBox**
    Download the latest version of VirtualBox from the official website:
    [https://www.virtualbox.org/wiki/Downloads](https://www.virtualbox.org/wiki/Downloads)

2.  **Install VirtualBox**
    Run the installer. **Important:** Ensure you check all network features during installation (specifically "Host-Only Networking").

3.  **Configure Network Adapter**
    Before starting the Virtual Machine (VM), go to the VM settings:
    -   Select **Network**.
    -   Attached to: **Host-Only Adapter**.
    -   Name: Select the default VirtualBox Host-Only Ethernet Adapter.

![VirtualBox network configuration](/universal-robots/virtualbox-network-settings.png)

4.  **Launch the Simulator**
    Start the VM. Once the Linux desktop appears, you will find several shortcuts for different robot arm models (UR3, UR5, UR10, etc.). Double-click one to launch Polyscope.

5.  **Find IP Address**
    Once Polyscope is running, click the **Hamburger Menu** (top right corner) to see the IP address of the simulated robot. You will use this IP to connect your SDK.

---

## PolyscopeX (Docker based)

This is the new generation of software, running a web-based interface. The simulation is lightweight and runs in a Docker container instead of a full VM.

> **Note for experts:** If you are a "geek barbu" (a bearded geek), you probably already know how to pull and run a Docker image. For everyone else, follow the simple steps below.

### Step-by-Step Installation

1.  **Download Docker Desktop**
    Download and install Docker Desktop:
    [https://www.docker.com/products/docker-desktop/](https://www.docker.com/products/docker-desktop/)

2.  **Start Docker**
    Launch Docker Desktop and wait for the engine to start.

3.  **Run the Simulator**
    Open a terminal (Command Prompt or PowerShell) and run the following command found in the [official documentation](https://hub.docker.com/r/universalrobots/ursim_polyscopex):

    ```bash
    docker run --rm -it -p 80:80 -p 30001:30001 -p 30004:30004 --add-host "host.docker.internal:host-gateway" --env HOST_ARCH=amd64 --network bridge --privileged universalrobots/ursim_polyscopex:latest
    ```

    **What does this command do?**
    -   `-p 80:80`: Exposes the web interface on port 80 (access via `http://localhost`). *If port 80 is already in use, try `-p 8080:80` and access via `http://localhost:8080`.*
    -   `-p 30001:30001`: Exposes the Primary Interface (used for real-time control).
    -   `-p 30004:30004`: Exposes the RTDE interface (Real-Time Data Exchange).
    -   `--privileged`: Gives the container necessary permissions to run the simulation.

4.  **Access PolyscopeX**
    Open your web browser and go to [http://localhost](http://localhost) (or `http://localhost:8080` if you changed the port). You will see the new PolyscopeX interface.

5.  **Connect with SDK**
    You can now use the SDK to connect to the robot locally using IP address `127.0.0.1`.