Precise continuous movement for laser cutting

  • Hello!


    We have a Fanuc M-20iA with a laser cutting head. We generate the robot path using RoboDK. The problem is that it has all the movements with the FINE option so the robot stops a lot.

    In the RoboDK simulation the movement is continous.

    I tried using CNT, but then the cuts are not precise. For example the circle becomes an ellipse, like an egg.


    Is there any way to have precise robot movement but without stopping at points?

  • CNT0 will not fix this, the robot will still decelerate to 0 velocity.



    What version of controller do you have? Starting with v9.30p04, there is a new option called spline motion. This will do exactly what you need it to do, but I don't know if RoboDK supports it.


    Since it's from Fanuc, it is of course a paid option.



    What is the distance between your points?


    You could try to decrease distance between points, which should allow you to increase the CNT value. You will need to maintain a very high CNT value to get steady speed.



    Could you post a picture of your tool path from RoboDK?

  • What version of controller do you have? Starting with v9.30p04, there is a new option called spline motion. This will do exactly what you need it to do, but I don't know if RoboDK supports it.

    The controller is an R30-iB with a software version of v8.30p65


    What is the distance between your points?

    Depends of the CAD file we want to cut. It can range from 1 mm to 1000 mm


    You could try to decrease distance between points, which should allow you to increase the CNT value. You will need to maintain a very high CNT value to get steady speed.

    RoboDK generates the code and the points for each CAD file. Unfortunatelly, I can't decrease the distances nor set the CNT value manually for every point.

    For example this is one piece we cut last week.

    The small holes are 3mm in diameter. Those are made out of 2 circular movements. So it stops twice per circle.

    The big holes are 22mm long, the diamater on the sides are 6.5mm. This hole is made out of 2 circular and 2 linear movements. Thats 4 stops for the big holes each.


    RoboDK generates 103 points for this one piece. Thats 103 fine movements, so 103 stops for the robot.

    We use Nitrogen gas for the laser cutting and at every stop it gets wasted. We can't turn off and on the gas and the laser at every point because it leaves a mark and would ruin the piece.



    I will do a search for this Spline Motion. Thank you for the suggestion!

  • At what speed does your laser need to feed at? If you slow your feedrate while increasing your cnt does it reduce the undercut?

  • At what speed does your laser need to feed at? If you slow your feedrate while increasing your cnt does it reduce the undercut?

    It depends on the material thickness we cut but it ranges from 30mm/s to 150mm/s.


    I noticed that the robot has a welding option installed. Can I maybe use a welding parameter for better accuracy?

  • RoboDK generates the code and the points for each CAD file. Unfortunatelly, I can't decrease the distances nor set the CNT value manually for every point.

    This would be a somewhat janky solution, but I've done it before: export the program as an ASCII file (.LS), and write a script (I tend to use Python) that adds CNT values and specific speeds to every point. Then import back into the robot (assuming your robot has the ASCII Upload option).

  • You might be able to use the corner region (CR) termination option for that era of controller. Another option would be to try out the corner distance (CD) termination option. Both are option of course.

    RoboDK generates the code and the points for each CAD file. Unfortunatelly, I can't decrease the distances nor set the CNT value manually for every point.

    You can modify the post for this, but you did state that CNT was producing poor cut quality.

    Code: Fanuc_R30iA.py
        # set default CNT value (all motion until smooth value is changed)
        # CNT_VALUE = 'CNT5' # 5% smoothing (set CNT1-CNT100)
        CNT_VALUE = "FINE"    

    Check out the Fanuc position converter I wrote here! Now open source!

    Check out my example Fanuc Ethernet/IP Explicit Messaging program here!

  • This would be a somewhat janky solution, but I've done it before: export the program as an ASCII file (.LS), and write a script (I tend to use Python) that adds CNT values and specific speeds to every point. Then import back into the robot (assuming your robot has the ASCII Upload option).

    I've had to do this also.


    I like to call it my Post-Post Processor. Not ideal, but if you only need to do it every so often it will get 'er done :uglyhammer2:


    I've never used RoboDK, but from what Nation stated, if it is possible to spit out more points, I would go for it. I would start with a point every mm and go from there.

  • I've never used RoboDK, but from what Nation stated, if it is possible to spit out more points, I would go for it. I would start with a point every mm and go from there.

    I haven't used RDK to create paths, but from the description of the issue, I'd guess that it outputs points on the path. And you're not going to get accurate robot motion along curves that way without Spline-type motion, or (as you suggest) lots of closely-spaced points with small CNT values.

  • Don't have my computer at hand right now, but looking at the RoboDK documentation, looks like it is possible to adjust a parameter to generate more or less points in the path.


    Laser Cutting - RoboDK Documentation


    Quote

    Note: In the Advanced Settings tab, you can find the Linear Tolerance that will control the number of points you will send to RoboDK. The smaller the number is, the higher the number of points and therefore the precision of the path.

  • Hi guys,

    I'm a bit late to the show, I'm sorry. For those more active on the forum, feel free to tag me in next time.


    First of all, RoboDK can create "FINE" and "CNT" motion.
    From your Curve Follow Project or your Robot Machining project.
    Here's where:



    Are you working with a NC file from a CAM software or the points extracted from either the 3D model or imported from a CAD software?

    In the first case, the point distance will be set by the CAM software. You can change the tolerance there.
    If it's extracted from the 3D model imported in RoboDK, you can change the CAD Import Settings to increase or decrease the number of points. I love to have high number of points at this stage.
    You can do the same with the CAD plugin by changing the "Linear tolerance" parameters.


    Then you can right-click the curve in RoboDK -> "Split curve" -> "Set point spacing" to define the distance between the point of a curve section.



    Another method is to go to "Tools"->"Options"->"Programs" and set a "Minimum distance between point" for your linear motion.


    Hope it helps.

    Jeremy

    RoboDK - Simulation and Offline programming software for industrial and collaborative robots.

    Visit us at RoboDK.com
    Take a look at our tutorial videos on our YouTube channel.

  • Sorry for the late reply, I've been a bit busy. I did a lot of testing. The more points I have, the more accurate the cut with CNT.


    massula

    That note in your quote might be in the Fusion360 software. We don't use that. I don't have Linear Tolerance in RoboDK.


    Jeremy RoboDK

    We use AlphaCam to import the DXF file, after Nesting we apply a Rough/Finish Machine Style and then click on the "Launch Robot Integration" button. This will open RoboDK with the tool path.


    In RoboDK I see a lot of points but in the generated program there are only a few points.


    In the "Tools"->"Options"->"Programs" there is no "Minimum distance between point" setting.
    I only have min/max step size and min/max arc size.

    I tried to set the max arc size to 1mm, but... For example I have a circle with 1mm radius. The circumference is 2*radius*pi = 2*1*3,14 = 6,28 mm This should be 7 arcs at least, with the 1 mm max arc size set. But in the generated program I got only 2 circular movements.


    Circles with 5, 10, 20, 40 mm diameters are all generated with 37 circular movements each.


    I don't exactly understand how this arc size works.


    One more thing: Is there a way in the post processor to know the size of the full circle? For larger circles I could increase the speed.

  • Hi there,


    Let see how we can help you with this.
    Can you provide your .rdk file?
    Can you also provide the NC file out of Alphacam? (I think you should find it in your Temp folder just after you press "launch robot integration" from Alphacam (type %temp% in a file explorer window to reach your temp folder automatically).


    Jeremy

    RoboDK - Simulation and Offline programming software for industrial and collaborative robots.

    Visit us at RoboDK.com
    Take a look at our tutorial videos on our YouTube channel.

  • I just found the problem.


    Someone created a custom post-processor for this project, which is very cool. (The post-processor translate from the simulation (RoboDK Language) to the robot language (.LS in this case))

    But they didn't implement the Rounding section.


    We currently read this:


    Code
    def setZoneData(self, zone_mm):
        """Changes the zone data approach (makes the movement more smooth)"""
        self.CNT_VALUE = 'FINE'


    While we should see something like this:


    Code
    def setZoneData(self, zone_mm):
        """Changes the zone data approach (makes the movement more smooth)"""
        if zone_mm <= 0:
            self.CNT_VALUE = 'FINE'
        else:
            self.CNT_VALUE = str(int(min(100,max(1,zone_mm)))) + ' %'


    Using a custom post-processor is the best way to generate exactly the type of code you are looking for.
    But you need to be careful to no remove feature while adding new ones, which was the case here.

    RoboDK - Simulation and Offline programming software for industrial and collaborative robots.

    Visit us at RoboDK.com
    Take a look at our tutorial videos on our YouTube channel.

Advertising from our partners