Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - rshiordia

#1
Thanks a lot Johanness!!!

I was completely unaware of the "Toggle External axis" option.
In your import_gcode example, I now see that the E1 value just grows and grows, so it's as though that value represents the actual length of plastic extruded.
I see how it would be very advantageous to have the robot deal with all the feeds and speeds while one only deals with that single number on PRC. That's actually great. I was not aware of what you meant by "position," but I think that's what it is. At the end of the code, E1's position is at some very large value, so that value is the actual length of plastic extruded.
However, since I don't have Kuka motors right now, that option is a bit off the table.
I feel that my easiest option (at least for my skill set) is to map the speed of E1 to an analog signal because I'm not aware of how the E1 position value would be sent via EtherCAT(I wouldn't know how to parse that on the arduino side, what type of protocol is the position being output in?).
What is easiest on the Arduino side is to use its analog-to-digital converter to control the speed of extrusion. So, an analog signal would be easier to deal with in Arduino for me. 
Can you share a bit more on this mapping process? What do you mean with "looking for the according KRL variable for the speed of E1." Would that variable's value be in the sps.sub ??? or is it found somewhere in the output of PRC

I have no idea how to do this mapping, so it looks like I need to read up on setting that up on Work Visual (never used it). Perhaps you can share some resources on how to start learning that?

Many thanks!
Rodrigo

#2
Hello all,

I'm writing to you with a question regarding the E1 value that is used in the 3d printing component of Kuka |PRC. I hope you can help if you have the time, or point me in the right direction.
I understand that E1 value is used to control the velocity of the extruder when 3d printing. (not the velocity of the motion of the extruder head, rather the actual extrusion rate from the extruder, e.g., how much plastic is coming out of the nozzle)
We've developed our 3d printing pellet extruder. Our extruder is a stepper motor controlled by an Arduino. So far, we've just had a single digital output on the robot, turning it on and off by inserting $OUT [14]=TRUE whenever we want to turn the extruder on and off. This is easy to do in PRC with the KRL as a text component.  We can turn it on and off directly now that we've figured out how to use the digital outputs of the robot. We have the output drive a relay that tells the Arduino to start or stop extruding, so the digital output is very isolated from the extruder electronically.

However, we are now developing a more complex setup where we want the robot to control the velocity of the extruder, the stepper that drives the extrusion needs to go slower or faster depending on the geometry, layer length, etc. This way we can extrude faster on corners or slower in short layers. I can tell that in other setups, this is being done with an E1 value that is kind of like an external axis value on the import G-Code 3d printing component. I think the AIBuild software also does this with the E1 value, but I'm not sure.



I'm a bit lost on what to do with that E1 value on the robot side. I have several questions regarding this:
1-Could we use KRL text like $OUT [14]=0.5 to use an analog output directly? I could just parse this in GH and use the output to directly drive my Arduino-based extruder (with proper connection to the voltage of Arduino).
 2- How to use the E1 value in other components other than the import gcode? LIN, PTP, etc always output E1, E2,... E4 to 0 when you don't have an external axis, so they are being used. I could parse it manually in Grasshopper, having the output from LIN motion and inserting whatever value I want on E1. Is this a good idea?
3-Regardless of the software side, I also wanted to ask you if you can point me in the right direction for the robot side requirements for such a setup:
    3.1- How to do the mapping of E1 to an analog output ( or the external axis output) on the robot? It looks like it has to do with the $config.dat file. What do I need to do on the robot side to use the E1 value to control the extruder speed?
    3.2 Can you share some more information on how to use and connect the analog outputs or external axis signals to the extruder? We have a KR30-3 and a KR10 Agilis Sixx for these applications, so I just wanted to know if you could share some quick tips on how to connect my extruder, which is Arduino-based. However, I can use the Arduino analog inputs (with a step-down module, I think) to control the extrusion speed.

My vision is to eventually have a LIN++ command on PRC that would take the "target as plane" and "speed" inputs, along with an extrusion rate. This would then output the KRL line with all the XYZ values and the E1 with the extrusion rate. On the robot, the E1 value would control how much plastic is coming out of the nozzle. This way I would be doing my slicing on GH as I've been doing for years, but with more control over extrusion rate. 



Many thanks!
Rodrigo
#3
I have found the problem:
When I divided the contours I got a list of points per contour. However, I inserted the first point at the end of each list, so that the step between layers would be at the start point of each contour.
If I disconnect this part of the definition, and use a list of points that does not repeat the fist point at the end, the error does not appear.
Perhaps PRC finds duplicate points????

Rodrigo.
#4
Hi Johannes,
This did not have any effect...
Disconnected tool axis offset AND safe plane from the simulation, and the error still happens at the step between layers.
Rodrigo.
#5
Hi everyone,
I have a set of contours which i've turned to toolpaths using SPL movement command. Between each layer, I've connected using LIN movement. If I used the spl movement across all contours, the step between each layer would be off and imprecise. If I used all LIN movments, I'd need too many points which my robot would not support htat many lines of code. (Ic could use many files but i'm lazy that way, besides, I'd never used SPL and this was a cool opportunity to try it out.
The simulation does not present unreachability or singularity problems, however when I run the simulation, at exactly the step between each layer the PRC component turns red and outputs: 1. Solution exception:Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

This seems to happen only at that point, and all other robot positions do not show any errors. All other slider positions show perfect.
I think I can run this code on our KR150 but just wanted tio understand what's going on?

Pictures and definition attached.
best. Rodrigo.
Mexico City.