I am trying to tool path a pelletized plastic extruder (i.e. 3D printing) application via Python API for a Universal Robots UR10e (running Polyscope 5.11). I have modified the UR post-processor to overcome the default maximum program line limitations however the robot itself seems unable to cope with programs (*.urp) much larger than 5000 lines - either the program doesn't load, the robot hangs or we get a 'ValueStack Full Capacity' error. Unfortunately, for our purposes we desire programs with at least 50,000 (if not more) lines. We also require a smooth motion between waypoints which rules out running the program on the robot directly from RDK. Has anyone else come across this issue or can someone suggest a pathway forward? I am assuming that RoboDK's 'run on robot' functionality is the same as remotely running UR Scripts via socket? I would also add that the UR10e seems worse than its predecessor (UR10 CB series) as the workflow above was developed and tested on an older CB which could load larger programs albeit with long wait times.
Did you try the default Universal Robot post-processor generating .script file?
Those might be smaller and more digestible for the controller.
Using the "Run on robot" wouldn't work in this case as there's a handshake between RoboDK and the controller at the end of each move, and therefore a brief stoppage. Not ideal for 3D printing.
Thank you for your reply. Yes we have tried script files which are indeed about 40% smaller however still face similar waypoint limitations. Is there a way via Python API to send 'packets' of commands or create a master program that calls 5-10 smaller programs? I would like to avoid our current hack which is we simple create multiple programs for each job that we must manually open and run. I feel our current approach invites too much opportunity for human error - i.e. someone loads/runs a program we have already run and crashes through the part! I believe an external context like ROS may offer ways to overcome our issues but I must confess I am very hesitant / reluctant to open that can of worms!
Yeah, I don't think we ever did that for UR, but it's something we do regularly for Fanuc, we call that a "Dripfeed".
If you go to "Tools"->"Options"->"Program" you should see an option "Maximum number of lines per program".
Try activating that and see if the program is indeed split into pieces. If it's not the case, we can add that feature to the post-processor. I can't remember if it's done or not for the UR.
This will generate a "Main" with program calls to all the pieces of the program.
We then create a Python script using the FTP transfer feature of the robot (UR as it, so that's great) and we push the Main and the first 2 pieces.
We then monitor when the first piece is done (therefore the controller starts executing the second one), we delete it, and we push the third piece. And so on and so forth.
You can take a look at the FANUC RJ3 Dripfeed post-processor with a large program (you can use your UR station and just select this post, no need to create a station with a Fanuc robot) to see what it looks like.
If you own a professional license of RoboDK, please, send us a request to "Help->Request Support" for this specific request.
We have an educational license (University of Canberra, Australia), will RDK still support our request?
You can send an email to firstname.lastname@example.org and ask for the post.
You would have to add the feature yourself.