1. Home
    1. Dashboard
    2. Search
  2. Forum
    1. Unresolved Threads
    2. Members
      1. Recent Activities
      2. Users Online
      3. Team Members
      4. Search Members
      5. Trophys
  3. Articles
  4. Blog
  5. Videos
  6. Jobs
  7. Shop
    1. Orders
  • Login or register
  • Search
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Blog Articles
  • Products
  • More Options
  1. Robotforum - Support and discussion community for industrial robots and cobots
  2. Forum
  3. Industrial Robot Support and Discussion Center
  4. KUKA Robot Forum
Your browser does not support videos RoboDK Software for simulation and programming
Visit our Mainsponsor
IRBCAM
Robotics Channel
Robotics Training
Advertise in robotics
Sponsored Ads

Help with Kuka Kr120 r2700 EA baseframe for milling

  • mike rhodes
  • July 20, 2023 at 2:39 AM
  • Thread is Unresolved
  • mike rhodes
    Trophies
    1
    Posts
    1
    • July 20, 2023 at 2:39 AM
    • #1

    Hello Robot professionals,

    Please be nice to me as I am in my first year of robotics programming for a Kuka Milling cell. I have figured out the inputs and outputs for my robot, and they are running perfectly with my spindle, I am trying to figure out when I define a planar surface using the 3 point method, my robot does not follow this. Let me paint a picture, I need to mill out a rectangle 0.5" deep, but the robot cuts this in an uneven angle. If I have an imaginary "box" in space, how do I get my Kuka to mill exactly perpendicular to that surface.

    Please be nice,

    I was thrown into this position.

    Mike

  • HawkME July 20, 2023 at 2:42 AM

    Approved the thread.
  • Online
    Leon
    Reactions Received
    32
    Trophies
    5
    Posts
    463
    • July 20, 2023 at 12:39 PM
    • #2

    Well lets start with the basics. which control are you using. preferably with the software version. This is clearly stated in the topic "Read first".

    Have you correctly calibrated your tool?

    If you have then you can continue with base calibration. Measuring a base works best on a big surface. you start with x,y zero. then move to a positive point on the x-axis (as far as you can from zero). and last move to a positive point in the X/y plane. Again the further from zero the better.

    to check if tool and base are calibrated correctly, you can manually select them and then jog over the surface. Your tool TCP (tool center point) should move parallel to the surface when jogging in x and y.

    In your program check if you have the right tool and base selected.

    Every problem has a solution, that isn't the problem. The problem is the solution.

  • MIKERHODES
    Reactions Received
    4
    Trophies
    1
    Posts
    17
    • July 20, 2023 at 5:38 PM
    • #3

    Okay, I have followed the instructions correctly then. When I have that baseframe selected, the tcp of the robot perfectly follows the path I require.

    So when I start a milling program, I just have to make sure this base is selected? for some reason when I run my program the base frame changes to a ?

    Maybe I need to write something into my program to tell the robot to load that baseframe. Is this correct?

    Thank you for your response, I look forward to hearing from you!

  • panic mode
    Reactions Received
    1,264
    Trophies
    11
    Posts
    13,031
    • July 20, 2023 at 5:41 PM
    • #4

    no... you do not "select base" yourself. your program needs to select and use that base.

    in fact that is not enough. you also need to have program select correct tool as well.

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • Online
    SkyeFire
    Reactions Received
    1,038
    Trophies
    12
    Posts
    9,375
    • July 20, 2023 at 8:04 PM
    • #5

    Depends on how you're writing your program. We kind of need to see a sample.

    On KUKAbots, there are two different ways to write KRL code. "Raw" KRL code, where you type out entire commands, and "Inline Forms" (ILFs), where you create commands (mostly motions and other simple commands) using the menus on the pendant.

    A motion programmed using ILFs "bundles" a command to set the active Base. That command is retentive -- that is, once a command to set the active Base has been executed, that Base stays active until another Base is activated.

    This all works fine when using "raw" KRL or using ILFs. But it can get tricky if you start mixing both types of code in the same program.

  • MIKERHODES
    Reactions Received
    4
    Trophies
    1
    Posts
    17
    • July 20, 2023 at 9:22 PM
    • #6

    Here is an example of a milling project where I had to recess back a panel in a large piece of granite. I did the 3 point method and the TCP ran perfectly parallel to the surface, but I am not sure how to incorporate my tool tcp and my base frame in the code. I am using a Professional version of RoboDK I purchased.


    &ACCESS RVP
    &REL 1
    &PARAM TEMPLATE = C:\KRC\Roboter\Template\vorgabe
    &PARAM EDITMASK = *
    DEF RECESSED_PAN_1_T ( )

    ; GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
    ; INTERRUPT ON 3

    ;FOLD Initialise and set default speed
    BAS (#INITMOV,0)
    BAS (#VEL_PTP,100)
    BAS (#ACC_PTP,20)
    $VEL.CP=0.2
    BAS (#TOOL,0)
    BAS (#BASE,0)
    ;ENDFOLD

    ;;FOLD STARTPOS
    ;$BWDSTART = FALSE
    ;PDAT_ACT = PDEFAULT
    ;BAS(#PTP_DAT)
    ;FDAT_ACT = {TOOL_NO 0,BASE_NO 0,IPO_FRAME #BASE}
    ;BAS(#FRAMES)
    ;;ENDFOLD

    $ADVANCE = 5

    ;FOLD ---- Quickly skip BCO ----
    ; PTP $AXIS_ACT
    ;ENDFOLD

    ;FOLD ---- GO HOME ----
    ; PTP {A1 0.000, A2 -90.000, A3 90.000, A4 0.000, A5 0.000, A6 0.000, E1 0, E2 0, E3 0, E4 0, E5 0, E6 0}
    ;ENDFOLD

    ; Program generated by RoboDK v5.5.3 for KUKA KR 120 R2700 HA on 05/07/2023 16:44:03
    ; Using nominal kinematics.
    $APO.CPTP = 1.000
    $APO.CDIS = 1.000
    Wait for StrClear($LOOP_MSG[])
    $LOOP_CONT = TRUE

    Wait for StrClear($LOOP_MSG[])
    $LOOP_CONT = TRUE

    SPINDLE_FWD(4400)
    $VEL.CP = 1.00000
    ; ---- Setting reference (Base) ----
    ; BASE_DATA[2] = {FRAME: X -1.905,Y 1918.810,Z 835.684,A -0.000,B -10.001,C -0.001}
    $BASE = {FRAME: X -1.905,Y 1918.810,Z 835.684,A -0.000,B -10.001,C -0.001}
    ; $BASE = BASE_DATA[2]
    ; --------------------------
    ; ---- Setting tool (TCP) ----
    $TOOL = {FRAME: X -24.372,Y 0.610,Z 511.476,A 180.000,B -30.000,C 0.000}
    ; --------------------------
    ; Show TOOL TCP
    PTP {A1 -95.31830,A2 -95.12420,A3 105.88400,A4 14.69880,A5 50.60840,A6 -9.09005,E1 0.00000} C_PTP
    LIN {X -3.108,Y -122.042,Z 15.000,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    $VEL.CP = 1.00000
    LIN {X -3.108,Y -122.042,Z 5.000,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    $VEL.CP = 0.00556
    LIN {X -2.979,Y -122.006,Z 3.974,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    LIN {X -2.603,Y -121.896,Z 3.016,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    LIN {X -2.005,Y -121.714,Z 2.192,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    LIN {X -1.229,Y -121.463,Z 1.555,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    LIN {X -0.329,Y -121.153,Z 1.149,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    LIN {X 0.631,Y -120.797,Z 1.041,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    ; Splitting circular movement in 133 (instruction 41:MoveC 31)
    LIN {X 0.604,Y -120.727,Z 2.038,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    LIN {X 0.568,Y -120.635,Z 3.033,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    LIN {X 0.525,Y -120.522,Z 4.025,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    LIN {X 0.474,Y -120.388,Z 5.014,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    LIN {X 0.414,Y -120.233,Z 6.000,A 90.000,B 0.000,C 180.000,E1 0.00000} C_DIS
    LIN {X 0.347,Y -120.057,Z 6.981,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    LIN {X 0.271,Y -119.860,Z 7.958,A 90.000,B 0.000,C 180.000,E1 0.00000} C_DIS
    LIN {X 0.187,Y -119.643,Z 8.930,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    LIN {X 0.096,Y -119.404,Z 9.897,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    LIN {X -0.003,Y -119.146,Z 10.857,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    LIN {X -0.111,Y -118.866,Z 11.811,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    LIN {X -0.226,Y -118.567,Z 12.758,A 90.000,B 0.000,C 180.000,E1 0.00000} C_DIS
    LIN {X -0.348,Y -118.247,Z 13.697,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    LIN {X -0.479,Y -117.908,Z 14.628,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    LIN {X -0.616,Y -117.549,Z 15.550,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    LIN {X -0.762,Y -117.170,Z 16.464,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    LIN {X -0.915,Y -116.771,Z 17.368,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    LIN {X -1.075,Y -116.354,Z 18.262,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    LIN {X -1.242,Y -115.918,Z 19.146,A 90.000,B 0.000,C 180.000,E1 0.00000} C_DIS
    LIN {X -1.417,Y -115.463,Z 20.018,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    LIN {X -1.599,Y -114.989,Z 20.880,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS
    LIN {X -1.788,Y -114.498,Z 21.729,A 90.000,B 0.000,C 180.000,E1 0.00000} C_DIS
    LIN {X -1.983,Y -113.988,Z 22.567,A 90.000,B 0.000,C -180.000,E1 0.00000} C_DIS

  • MIKERHODES
    Reactions Received
    4
    Trophies
    1
    Posts
    17
    • July 20, 2023 at 9:36 PM
    • #7

    This is just the first part of the program, it goes on for another 2000+ lines with a spindle and water stop.

  • panic mode
    Reactions Received
    1,264
    Trophies
    11
    Posts
    13,031
    • July 20, 2023 at 10:00 PM
    • #8

    at the begin of your program you have

    BAS (#TOOL,0)
    BAS (#BASE,0)

    they set nullframe as tool and base. so robot is moving using WORLD instead of base and using FLANGE instead of tool. no wonder you are seeing things as they are.

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • MIKERHODES
    Reactions Received
    4
    Trophies
    1
    Posts
    17
    • July 20, 2023 at 10:04 PM
    • #9

    Thank you so much!!!

  • MIKERHODES
    Reactions Received
    4
    Trophies
    1
    Posts
    17
    • July 20, 2023 at 10:06 PM
    • #10

    I will redo this this from scratch again using your advise. I really appreciate you guys chiming in on a beginners issues.


    Back to the drawing board for me.

    I will post again soon with an update. any other tips would be appreciated in the mean time.

  • panic mode
    Reactions Received
    1,264
    Trophies
    11
    Posts
    13,031
    • July 20, 2023 at 11:24 PM
    • #11

    actually i see the base is later also assigned using, but every said still applies - to use Cartesian coordinate system you need correctly measured tool and base.

    $BASE = {FRAME: X -1.905,Y 1918.810,Z 835.684,A -0.000,B -10.001,C -0.001}

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • hermann
    Reactions Received
    404
    Trophies
    9
    Posts
    2,595
    • July 21, 2023 at 6:21 AM
    • #12

    Seems that you use cad/cam tool. There you have configured a base and tool, which is set in the lines $tool=.. and $base=..

    There you have to change the values to the values you measured on the real robot. Or you can change the lines to, let's say bas(#tool, 1) and bas(#base, 2) if you have calibrated tool no 1 and base no 2 on your robot.

  • Online
    SkyeFire
    Reactions Received
    1,038
    Trophies
    12
    Posts
    9,375
    • July 21, 2023 at 2:56 PM
    • #13
    Quote from MIKERHODES

    ; ---- Setting reference (Base) ----
    ; BASE_DATA[2] = {FRAME: X -1.905,Y 1918.810,Z 835.684,A -0.000,B -10.001,C -0.001}
    $BASE = {FRAME: X -1.905,Y 1918.810,Z 835.684,A -0.000,B -10.001,C -0.001}
    ; $BASE = BASE_DATA[2]
    ; --------------------------
    ; ---- Setting tool (TCP) ----
    $TOOL = {FRAME: X -24.372,Y 0.610,Z 511.476,A 180.000,B -30.000,C 0.000}
    ; --------------------------

    Display More

    It would have helped if you had mentioned this program was generated by RoboDK.

    Anyway, these lines are where the program sets the active TCP and Base. In your RoboDK simulation, you must have a base/reference frame and a tool frame active, and RDK is simply transcribing those values into the program.

    If you then hand-taught a TCP and/or Base on the real robot, you need a way to bring the real robot and RDK into alignment -- either you need to copy the real robot's TCP and Base XYZABC values into the RDK configuration, or you need to change the $TOOL= and $BASE= lines in the program to use the hand-taught Tool and Base. For example, if you hand-taught Tool 5 and Base 7, you would replace the RDK output with:

    $TOOL=TOOL_DATA[5]

    $BASE=BASE_DATA[7]

    Because when you teach a Tool or Base on the pendant through the menu system, the XYZABC values are saved into the TOOL_DATA and BASE_DATA arrays.

  • MIKERHODES
    Reactions Received
    4
    Trophies
    1
    Posts
    17
    • July 21, 2023 at 2:57 PM
    • #14

    This is really great information for me. Thank you again for all of these tips, I know all of you have been at the point where the robot does one thing and it absolutely does something else! Great tips on this thread.

  • MIKERHODES
    Reactions Received
    4
    Trophies
    1
    Posts
    17
    • July 21, 2023 at 3:03 PM
    • #15
    Quote from SkyeFire

    It would have helped if you had mentioned this program was generated by RoboDK.

    Anyway, these lines are where the program sets the active TCP and Base. In your RoboDK simulation, you must have a base/reference frame and a tool frame active, and RDK is simply transcribing those values into the program.

    If you then hand-taught a TCP and/or Base on the real robot, you need a way to bring the real robot and RDK into alignment -- either you need to copy the real robot's TCP and Base XYZABC values into the RDK configuration, or you need to change the $TOOL= and $BASE= lines in the program to use the hand-taught Tool and Base. For example, if you hand-taught Tool 5 and Base 7, you would replace the RDK output with:

    $TOOL=TOOL_DATA[5]

    $BASE=BASE_DATA[7]

    Because when you teach a Tool or Base on the pendant through the menu system, the XYZABC values are saved into the TOOL_DATA and BASE_DATA arrays.

    Display More

    This is absolutely the case! I was pointing the robot to the start point by connecting to the robot and copying these values. The job ran perfectly but the job was not following the correct base frame. So the workpiece was not completely level with the table, this then made the cut not perfectly flat. We hand finished it with a grinder. THANKY YOU! I am new to RoboDK and I have talked with Albert Nubiola MANY times, I just don't was to keep bugging the poor guy, he is not here to teach everyone, he is running a company. I LOVE ROBODK though. Best purchase of software we have made so far. Worth EVERY PENNY.

    Images

    • SETUP.jpg
      • 157.09 kB
      • 1,920 × 1,040
      • 3

Advertising from our partners

IRBCAM
Robotics Channel
Robotics Training
Advertise in robotics
Advertise in Robotics
Advertise in Robotics

Job Postings

  • Anyware Robotics is hiring!

    yzhou377 February 23, 2025 at 4:54 AM
  • How to see your Job Posting (search or recruit) here in Robot-Forum.com

    Werner Hampel November 18, 2021 at 3:44 PM
Your browser does not support videos RoboDK Software for simulation and programming

Tag Cloud

  • abb
  • Backup
  • calibration
  • Communication
  • CRX
  • DCS
  • dx100
  • dx200
  • error
  • Ethernet
  • Ethernet IP
  • external axis
  • Fanuc
  • help
  • hmi
  • I/O
  • irc5
  • IRVIsion
  • karel
  • kawasaki
  • KRC2
  • KRC4
  • KRC 4
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • robodk
  • roboguide
  • robot
  • robotstudio
  • RSI
  • safety
  • Siemens
  • simulation
  • SPEED
  • staubli
  • tcp
  • TCP/IP
  • teach pendant
  • vision
  • Welding
  • workvisual
  • yaskawa
  • YRC1000

Thread Tag Cloud

  • abb
  • Backup
  • calibration
  • Communication
  • CRX
  • DCS
  • dx100
  • dx200
  • error
  • Ethernet
  • Ethernet IP
  • external axis
  • Fanuc
  • help
  • hmi
  • I/O
  • irc5
  • IRVIsion
  • karel
  • kawasaki
  • KRC2
  • KRC4
  • KRC 4
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • robodk
  • roboguide
  • robot
  • robotstudio
  • RSI
  • safety
  • Siemens
  • simulation
  • SPEED
  • staubli
  • tcp
  • TCP/IP
  • teach pendant
  • vision
  • Welding
  • workvisual
  • yaskawa
  • YRC1000

Tags

  • Kuka Milling RoboDK
  1. Privacy Policy
  2. Legal Notice
Powered by WoltLab Suite™
As a registered Member:
* You will see no Google advertising
* You can translate posts into your local language
* You can ask questions or help the community with your knowledge
* You can thank the authors for their help
* You can receive notifications of replies or new topics on request
* We do not sell your data - we promise

JOIN OUR GREAT ROBOTICS COMMUNITY.
Don’t have an account yet? Register yourself now and be a part of our community!
Register Yourself Lost Password
Robotforum - Support and discussion community for industrial robots and cobots in the WSC-Connect App on Google Play
Robotforum - Support and discussion community for industrial robots and cobots in the WSC-Connect App on the App Store
Download