Getting started

Run on URSim

URSim is Universal Robots' controller simulator, with the real PolyScope interface. It is the easiest way to try a robot program without hardware.

Requirements

  • Docker, with permission to run containers.
  • A project generated as in Install & run, with the default UR address 127.0.0.1:30004.

1. Start URSim

Repose pins URSim 5.25.1 (e-series, UR5e) in a compose file in the repose-bridges repository. Generated projects don't include it, so download it into a directory of its own and start it:

shell
mkdir ursim && cd ursim
curl -LO https://raw.githubusercontent.com/ReposeRobotics/repose-bridges/master/universal_robots/repose_ur/compose.yaml
docker compose up

Or run the same container directly, without the compose file:

shell
docker run --rm -it -e ROBOT_MODEL=UR5 \
  -p 127.0.0.1:6080:6080 -p 127.0.0.1:30004:30004 \
  -p 127.0.0.1:30002:30002 -p 127.0.0.1:29999:29999 \
  -v ursim-programs:/ursim/programs \
  universalrobots/ursim_e-series:5.25.1
6080PolyScope in the browser (noVNC)
30004RTDE: joint state and streamed commands
29999Dashboard server: power, brakes, program control
30002Secondary interface

All ports are bound to localhost only. See the compose file for the exact pinned setup.

2. Set up PolyScope

  1. Open http://localhost:6080/vnc.html and connect.
  2. Complete PolyScope's initial setup and confirm the safety configuration when asked.
  3. Go to Settings › System › Remote Control and enable Remote Control.
  4. Exit Settings, then use the Local selector in the top-right corner and switch it to Remote Control.

3. Run the program

In your project, select the UR5e in robot.ron and run:

robot.ron
(robot: ur5e)
shell
cargo run

The simulated arm in PolyScope moves all joints out by 5° and back, then the app releases the session.

URSim on another machine

If URSim runs on a remote server, the simplest setup is to run the app on that server too, so it reaches the controller on localhost. To use PolyScope from your own machine, tunnel the web interface:

shell
ssh -L 6080:localhost:6080 user@sim-host
# then open http://localhost:6080/vnc.html locally

To run the app on your own machine instead, forward all controller ports, not just the web interface:

shell
ssh -L 6080:localhost:6080 -L 30004:localhost:30004 -L 29999:localhost:29999 -L 30002:localhost:30002 user@sim-host

What has been verified

  • Verified on URSim: joint-state feedback, individual wrist moves, and a three-step streamed program.
  • Not yet verified end to end: the watchdog's behaviour when the host freezes, and the UR5e path on physical hardware.
  • Model scope: the UR5e profile's kinematics are nominal and its collision capsules approximate. They are fine for the simulator, but they are not a validated collision model for a real arm, its tool or its cell. Other UR models need their own profile.