Universal_Robots_Client_Library icon indicating copy to clipboard operation
Universal_Robots_Client_Library copied to clipboard

Running docker sim on ARM based Systems

Open becketps opened this issue 7 months ago • 8 comments

Affected Client Library version(s)

All ARM based Systems

What combination of platform is the Client Library running on.

Linux

How did you install the Client Library

Build the library from source

Which robot platform is the library connected to.

URSim in docker

Robot SW / URSim version(s)

10.9.0

How are you using the Client Library

Others

Issue details

Summary

Short introduction to the issue and how it impact you and why

I wanted to start the polyscope X docker container with this script

https://github.com/UniversalRobots/Universal_Robots_Client_Library/blob/master/scripts/start_ursim.sh

I ran ./start_ursim.sh -v 10.9.0 -m ur15 to install and running the docker container on an Jetson AGX Orin PC.

It pulled the docker image but it did not pull everything and the service does not start. Can you please help me finding a solution for an ARM System like the AI Accelerator?

I also installed Docker engine which works fine for other docker container.

Relevant log output

./start_ursim.sh -v 10.9.0 -m ur15
ROBOT_MODEL: ur15
ROBOT_SERIES: polyscopex
URSIM_VERSION: 10.9.0
Unable to find image 'universalrobots/ursim_polyscopex:0.14.47' locally
0.14.47: Pulling from universalrobots/ursim_polyscopex
6e771e15690e: Pulling fs layer 
e908642e05b5: Pulling fs layer 
4f4fb700ef54: Pulling fs layer 
921ebed4db9f: Waiting 
17e39b077a4c: Waiting 
3a55093f8762: Waiting 
4d4a4a535b8c: Pull complete 
8aa4121a3e10: Pull complete 
9d159dcc3a2a: Pull complete 
57c2b2213d30: Pull complete 
988965604792: Pull complete 
b76eefe96f3a: Pull complete 
78bf806e19af: Pull complete 
5378ef726913: Pull complete 
8f09d35ff668: Pull complete 
d1ad1a9ed82e: Pull complete 
571a4501afd3: Pull complete 
b606ea87b5dc: Pull complete 
fa205a4f970a: Pull complete 
712f76785bd6: Pull complete 
e500ebfb3730: Pull complete 
58dde21864c5: Pull complete 
dd49c5a84df6: Pull complete 
9cdbed2e3b26: Pull complete 
e869071b600d: Pull complete 
c74bb1206395: Pull complete 
6e8170feb756: Pull complete 
443cbf78b27d: Pull complete 
e4b6cdb139ef: Pull complete 
Digest: sha256:9904a17cbaf09c4174127afc8fd00c9123bd3391765ef98c47e61212fa63d400
Status: Downloaded newer image for universalrobots/ursim_polyscopex:0.14.47
08b61f8ffbad645830e3df95fdf123fc16202378d89e96dd7e5b7bc82c45ed93
Downloading External Control URCapX version 1.0.0
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 21.1M  100 21.1M    0     0  8612k      0  0:00:02  0:00:02 --:--:-- 12.1M
Starting URSim. Waiting for UrService to be up.............................................................................................................................................................................................................................

Accept Public visibility

  • [x] I agree to make this context public

becketps avatar Aug 02 '25 19:08 becketps

Thank you for bringing that up. The image itself expects an env variable specifying the host architecture if it's not AMD64. We're not supporting that in our start script, yet.

A first hacky workaround would be to modify the script for you locally adding -e HOST_ARCH=arm64 here.

Could you please check whether that works for you? Then we could add a flag for this. We could also setup automatic parsing of the output of arch with falling back to user input if a) the command isn't available or b) the output is an unknown string (as there are more arch strings out there than x86_64 and aarch64)

urfeex avatar Aug 04 '25 14:08 urfeex

unfortunately both methods does not work.

On the starting skript I added the -e HOST_ARCH=arm64 and executed it. But it did not pull everything and does not continue.

The second method which failed was

docker run --rm -it
--platform linux/amd64
--add-host "host.docker.internal:host-gateway"
--env HOST_ARCH=arm64
--network bridge
--privileged
-p 80:80
universalrobots/ursim_polyscopex:0.15.78 exec /usr/local/bin/run-docker.sh: exec format error

In general no ip was shown where the ursim runs on.

becketps avatar Aug 04 '25 22:08 becketps

The PolyScope simulator apparently only works on AMD64 and MAC ARM64.

urfeex avatar Aug 05 '25 08:08 urfeex

Ok can you inform me when you have something for the Jetson, Is it the same Situation on the AI Accelerator which has this jetson included?

Is there a possiblity to use one normal pc running this Polyscope Simulator and controlling it via the Jetson?

becketps avatar Aug 05 '25 09:08 becketps

Is there a possiblity to use one normal pc running this Polyscope Simulator and controlling it via the Jetson?

Yes, @becketps that should work.

urrsk avatar Aug 12 '25 07:08 urrsk

Thanks for the reply, do you have a hint how to set it up? I struggle in the moment with the connection between the jetson and the pc. kind regards

becketps avatar Aug 12 '25 07:08 becketps

What exactly are you struggling with? If you just want to use it with the ROS driver, it should work out of the box when starting through the start_ursim script. The start script by default exposes ports 30001-30004 to the outside.

If you want to access the PolyScope UI, you'll also have to forward port 80.

Starting with this repo's start script:

./start_ursim.sh -f "-p 30001-30004:30001-30004 -p 80:80" -v 10.10.0

Or the plain docker command:

docker run --rm \
  -v $HOME/.ursim/polyscopex/ur5e/programs:/ur/bin/backend/applications \
  -e ROBOT_TYPE=UR5 \
  -p 30001-30004:30001-30004 \
  -p 80:80 \
  --privileged \
  --name ursim \
  universalrobots/ursim_polyscopex:10.10.0

If your start that on a machine with the IP address 1.2.3.4, you can access the PolyScope UI by opening http://1.2.3.4 in a web browser. Make sure that that is not redirecting you to https://1.2.3.4.

To start the ROS driver with this, use

ros2 launch ur_robot_driver ur_control.launch.py ur_type:=ur5e robot_ip:=1.2.3.4

urfeex avatar Sep 04 '25 11:09 urfeex

Thanks for the hint but I connected the Jetson via Ethernetcable to the PC. On the PC I did the process you mention above. Then I tried to reach the ur_sim from the jetson but did not succeed yet even when beeing in the same network.

becketps avatar Sep 10 '25 11:09 becketps