This is a question about PolyScope X behaviour rather than a library bug, but it directly shapes how DashboardClient can be used on PolyScope X, so I hope this is the right place to ask. Happy to move it to Discussions or a support ticket if you prefer.
Context
Our installations run without a teach pendant and without any operator-facing PolyScope UI. The arm is driven entirely through the Robot API and RTDE: at startup our software uploads/updates its .urpx control program, loads it, plays it, and then controls the arm via RTDE registers.
Two things make the browser dependency below a blocker rather than an inconvenience:
- No pendant. Nothing renders the PolyScope X frontend at the robot unless we run something that does.
- Unattended updates. Installations are updated remotely. When an update changes the control program, the new .urpx has to reach the controller with nobody on site — so every update would depend on an embedded browser session being alive and healthy at that moment, with no one there to intervene.
Running a full Chromium purely to satisfy one REST call is also a serious cost in verification, footprint and security-update cadence.
The behaviour
Loading a program through the Robot API is not headless: robot-api forwards the load to the polyscopex-services remote-program service, which drives the rendered Angular application to actually open the program. With no browser rendering the frontend against the controller, the load never completes.
The same applies to querying which program is currently loaded, and to updating an already-installed program. Uploading a program, listing programs, robot mode, program state and play/pause/resume/stop are not affected.
Questions
- Roadmap — is there a plan to make program loading work without a rendered frontend, i.e. handled by the backend services alone? If so, roughly which PolyScope X release?
- Design rationale — what is the reason for routing the load through the rendered frontend rather than the backend? Knowing the constraint would help us pick a workaround that won't break later.
- Library-side — commandLoadProgramWithResponse() reports success for a load that has only been accepted and may not have been carried out. Is there a status or diagnostic endpoint that would let a client distinguish "queued" from "executed" or "failed", rather than polling commandGetLoadedProgramWithResponse() until a timeout?
Environment
- Robot: UR8 Long, PolyScope X 10.13
- Also observed on universalrobots/ursim_polyscopex:10.13.0
- Client: ur_client_library (C++), DashboardClient with ClientPolicy::POLYSCOPE_X, plus RTDE
- Remote control enabled
Happy to provide details, logs or a reproducer if that helps.
This is a question about PolyScope X behaviour rather than a library bug, but it directly shapes how DashboardClient can be used on PolyScope X, so I hope this is the right place to ask. Happy to move it to Discussions or a support ticket if you prefer.
Context
Our installations run without a teach pendant and without any operator-facing PolyScope UI. The arm is driven entirely through the Robot API and RTDE: at startup our software uploads/updates its .urpx control program, loads it, plays it, and then controls the arm via RTDE registers.
Two things make the browser dependency below a blocker rather than an inconvenience:
Running a full Chromium purely to satisfy one REST call is also a serious cost in verification, footprint and security-update cadence.
The behaviour
Loading a program through the Robot API is not headless: robot-api forwards the load to the polyscopex-services remote-program service, which drives the rendered Angular application to actually open the program. With no browser rendering the frontend against the controller, the load never completes.
The same applies to querying which program is currently loaded, and to updating an already-installed program. Uploading a program, listing programs, robot mode, program state and play/pause/resume/stop are not affected.
Questions
Environment
Happy to provide details, logs or a reproducer if that helps.