As of Jan 2025, Universal Robots E-Series Offline Simulator is a software written in Java with some x86 32 bits binary (URControl). If it was solely in Java, it could run on ARM processors just by having the right Java JVM on ARM, but the x86 32 bits binary requires emulation of the x86 processor for the ARM computers. VirtualBox, VMWare and Parallels did not have any x86 emulation at that time. We tried many possibilities such as using the UTM VM software on Mac with QEMU x86 emulation, but it was way way too slow. We tried also UTM with Apple Virtualization and Rosetta emulation, but it almost worked (URSim started, but got stuck). We had more success with Docker and it was pretty easy once we found the solution to use the Docker image provided by Universal Robotics.
Therefore these instructions are based on running the Docker image provided by Universal Robotics, tell docker it is a amd64 image, and let Apple Rosetta do the x86 emulation. The performance, while far from a native ARM application, was sufficient. Hence the instructions below.
- Install Rosetta on your Mac, which does Intel x86 emulation on ARM:
- In Terminal:
softwareupdate --install-rosetta --agree-to-license
- In Terminal:
- Install Docker
- either Docker Desktop for Mac - Apple Silicon. Install and launch it. (No need to have a user logged into the Docker network)
- or in MacOS Terminal>
brew install docker
- In the Docker Terminal window (button on the bottom right of the main window) or in the MacOS Terminal if you use brew, type (in one line):
docker run --rm -it -p 5900:5900 -p 6080:6080 -v "${HOME}/Documents/programs:/ursim/programs" —platform=linux/amd64 universalrobots/ursim_e-series
- the x86 to ARM emulation is done by the underlying Rosetta but we tell Docker
that the image is an amd64 with the
--platform
argument. One can use the exact same instructions here for Mac Intel, Windows or Linux by just not adding the--platform
argument. - the -p arguments are used to expose ports from the docker to the host computer(aka your mac). 5900 is for VNC. 6080 is for http.
- the -v argument is to map a directory within the docker with a directory on the mac.
- now that the URSim software is launched in docker, we access it using a remote screen sharing program VNC.
- Find the IP address of your Mac: Settings->Wifi (or Network)->Details->TCP/IP->IP Address. Example: 192.168.1.242
- Run a VNC client. If you don't have one, you can download and install RealVNC Viewer for Desktop for MacOS
- in the VNC client, connect to
192.168.1.242:5900
. Replace 192.168.1.242 by your IP address. - URSim should show on your VNC client screen.
Docker are lightweight ephemeral instances. When a docker instance is terminated (by the user typing Ctrl-C or accidently), all files are gone and cannot be retrieved. When launching a new docker instance, it starts a fresh new one. Therefore, all user files, profiles, state of the software are lost when an instance is terminated. To mitigate that, one can add directory sharing between the docker instance and the host (your Mac) or use Docker volumes. The former is what is proposed in these instructions (-v "${HOME}/Documents/programs:/ursim/programs") which maps the Mac directory Documents/programs as /ursim/programs into the docker instance, a directory known by the URSim software. Therefore, before terminating your docker instance, make sure all the files you need next time are saved in the shared directory (within docker, per the instructions above, this is the /ursim/programs directory). One can also put files on the Mac directory (Documents/programs) such as URSim programs and they will be seen by the URSim simulator in the docker instance.
Instead of using VNC to access the URSim software, a web browser, such as Safari or Chrome, can be used by going to the url: http://192.168.1.242:6080
. Replace 192.168.1.242 by your IP address.
Note that if the host computer (your mac) moves to a different network, such as when a laptop is using a different Wifi network, then the IP address changes. Therefore, while your docker may be still running, you will need to find your new IP address and reconnect your VNC client or web browser to that new IP address.
This procedure seemed to work on MacOSX Sonoma 14.2, but the URSim software hang. On that laptop running MacOSX Sonoma, we upgraded it to MacOSX Sequoia 15.2 and without reinstalling anything, it just worked.
Additional information for more tailored docker setup is available at the URSIM docker image information
We tried to make a VM version, without luck. Only UTM was able to do emulation with Rosetta, following these instructions. We also tried the Debian preconfigured VM for Rosetta and installed URSim and adjusting many parameters in the script, again without luck. It almost worked, as Polyscope loaded but freezed, most likely because URControl crashed. We think it could be possible to make it run under a VM, but software being binary, it is like a black box and difficult to troubleshoot. It would be easier if Universal Robots update its software for modern environments.
Please send any comments on these instructions to mailto:[email protected] or create issues or pull request on this repo.
Thanks to Julie Blanchet and Guillaume Blanchet for hints and testing of these instructions.