Tool mode motion incorrect, need hints on diagnostics & correction

  • I teach a Robotics course with four Kawa RS03N arms with E76 controllers. No student damage, fresh batteries and re-zeroed. We use a simple Tool-Z axis pointer tool for most exercises.

    One robot started recently (after good behavior) to exhibit Tool Mode motion that is not oriented correctly. Wither NULL Tool or Aux Function T1 = {0, 0, 128, 0, 0, 0} invoked I get this motion on pressing the TP buttons:

    • Press +X: TCP moves +Tool-Z
    • Press +Y: TCP moves -Tool-X
    • Press +Z: TCP moves -Tool-Y

    Behavior is like the Tool Coord Sys has a RX(+90) and then a RZ'(+90) rotations.

    This occurs with any Tool transform invoked.

    Base Mode motion moves correctly in all axes.

    I've checked various things:

    • QTOOL = OFF
    • no other tool definitions active
    • BASE Coordinate System has not been modified

    I have requested help in diagnosing this directly from Kawasaki and have not gained any traction with those guys.

    Can anyone suggest a diagnostic path to figure this out?

  • Place your Ad here!
  • Wow...……:icon_eek:

    From what you wrote though in terms of the direction of the axes you mentioned, it is in line with Kawasaki left hand rule, which leads me to think some 'tinkering' may have gone on.

    The obvious question is in what way did this issue suddenly appear:

    - During normal use, whilst using it.

    - During reloading of data or upgrading/downgrading of firmware.

    - During a re-zeroing exercise.

    - Are you using Fixed Tool option and is it currently highlighted in the Teach Screen (FLIN).

    - During some maintenance on the arm or controller.

    - After a power cycle.

    Some additional checks I would recommend as confirmations to eliminate zeroing or even incorrect motors (swapped minor axis connections):

    - All joints when individually driven in joint mode go in the correct direction (as per the arrow indications) and to their set software limits.

    - Using Base mode and BASE NULL confirm the robot travels in the correct direction relative to the left hand rule including rx, ry and rz.

    - If the above yield correct results, it does indeed point to a tool coordinate issue in my opinion.

    You have tried to null the tool in a way I would recommend, and I would put my exploratory head on and:

    - Get all the joints to zero degrees.

    - Perform a full file save.

    - Hardware Initialization by use of the dipswitches on the 1TA/1VA (CPU board) and rebooting but do not load any data into it.

    - Then set the ZROBOT function to match your robot model (via the keyboard).

    - Re-zero again.

    - See if the issue has been resolved.

    - If it has, take a full file save again with the joints at zero degrees, use winmerge or other txt comparison application to compare the before/after file saves.

    - This should highlight any data differences and may just reveal not why, but what has possibly changed which may connect into the moment it occurred.

    If the above initialization fails to resolve it, then it could only point to some corruption within the AS/SV firmware then, which would be very strange indeed.

    If you can get a full file save and send it over, I can put it into KROSET and see if it replicates it?

    Would be interested to hear how this evolves for sure......


    There had been at one time a previous AS tool transform definition invoked.

    But all AS tool defs were deleted.

    The invoked tool transform was retentive, and I was too fatigued & distracted to remember / recognize that.

    Kawasaki guy mentioned this as a possibility, and this condition was verifed by using the Teach Pendant Keyboard to enter the TOOL command, which displayed the current active tool transform. It matched the motion I was seeing.

    But, my question remains: if switch QTOOL was set to OFF, then why was the previously-set AS tool definition still active when Tool Mode Interpolation was selected for manual movement?

    The comment at the bottom of the QTOOL selection states the tool def will be used for teaching if ON, and not active if OFF.

    I suppose that it is a mystery of Japanese logic and design.

  • Ah right, when you mentioned QTOOL OFF and also NULL TOOL, I assumed you were referring to using this as AS Tool reference, what you experienced makes complete sense now and thinking about it, I could have highlighted this for you...……..:wallbash:

    I can give you a breakdown into this now.

    Kawasaki Generically with ALL Controllers has 2 Types of Tool/Fixed Tool Coordinate selection:

    - Aux 0304 or Aux 0305 T1-T9 values for Tool and Fixed Tool (if enabled).

    - AS Commands TOOL or FTOOL (if enabled) which write to an address reserved called T0.

    - QTOOL Function controls whether to apply T1-T9 (ON) or T0 (OFF) values to the Tool Coordinate system.

    Therefore you could address T0 at any point by use of the TOOL or FTOOL command just by typing it in.

    - If QTOOL was OFF, then that would be your current tool.

    - If QTOOL was ON, then it would make no difference as it would be accessing T1-T9 would of still set T0 (unknowingly).

    So by action of toggling QTOOL ON/OFF, you then invoke either T1-T9 or T0.

    By the sounds of it you may have set an AS Tool at some point, but totally forgotten about it.

    By action of toggling Qtool, you then invoke the retained value of T0.

    This is part of a known bug, which they have never addressed.

    What they further did.....:hmmm:…. is that they removed the 'indications' for this in the E Controller that were present in the D Controller.

    Along with a 'lack' of clear documentation relating to Qtool On and Off functionality.

    This is not a good selling point, as you are training, could place you in an embarrassing position.

    In D Controller:

    When you simply toggled Qtool Off/On.

    - Tool interpolation icon would change between T0 and T1-T9.

    - Fixed tool interpolation (if enabled) would change between F0 and T1-T9.

    - A clear visual of which Tool address was currently selected (ie if Qtool is on or Off).

    In E Controller this does not occur - T0 never is displayed, irrespective of whether Qtool is On or Off:

    - Tool interpolation icon only ever displays T1-T9.

    - Fixed tool interpolation (if enabled) icon only ever displays T1-T9.

    - Therefore no indication of T0 at all (ie no indication of whether Qtool is on or off).

    - Resulting with incorrect motion for the T'x' displayed if Qtool is Off.

    Ask your Kawasaki guy about this, if he truly knows the Controller, he will confirm it.

    If he doesn't then ask him to test it on both D and E Controllers either on live systems or in KROSET.

    It is possible this is also present in F Controller too (I have not tested).

    KHI really do need to resolve this...……...….:pfeif:

    The underlying rule I adopt is:

    BLOCK Programming = QTOOL ON:

    - Use Aux 0304 and Aux 0305 to Set Tool or Fixed Tool Coordinates.

    - Use Tool interpolation/Ftool interpolation and select T1-T9.

    AS Programming = QTOOL OFF:

    - Use Tool or Ftool commands to set Tool or Fixed Tool Coordinates via keyboard or program.

    - Ignore T'x' value in Tool/Ftool Interpolations.

    - If you require to change tools, re-execute another Tool or Ftool Command in keyboard/program.

    If you are intending on swapping between BLOCK and AS mediums I recommend:

    - Use BLOCK Steps for motion instructions (QTOOL ON).

    - Use AS for all logic and non motion instructions.

    Glad you've resolved this though...….but like you say...Mystery of Japanese logic and design......

  • HI guys,


    I need a moment to understand deeply this matter.

    For certain reasons and necessity I didn't have a TOOL setted, I programming everything in AS and use QTOOL OFF(in a pc program I run this command to turn the tool off).

    This means that every line and step is written in a ghost tool T0?

    How i can check this tool?

    If I change a program writing TOOL T1 what could happen?

    Thanks a lot for any response

  • If you have QTOOL OFF and you set TOOL T1, the robot is moving with the T1 TOOL. Type tool command while the robot is in repeat and teach mode, see if there is any difference.

    If you didnt have any problems in the past with the TOOL, then you are using correct the tool function, dont worry.

  • Quote


    I need a moment to understand deeply this matter

    Hmmm.....I may started something I did not wish too...……………:away:

    If you have used D Controller you will understand what I mean about T0, it is not a ghost.

    If you have KROSET, please try D Controller and watch Tool Interpolation Icon no.

    QTOOL OFF - will change it to T0.

    QTOOL ON - will change it to T1-T9.

    On E Controller (maybe also F Controller, but I have not tested) you will not see T0, only T1-T9.

    QTOOL is function to tell Controller either to use BLOCK Tool (T1-T9) or use AS Tool (T0).

    For certain reasons and necessity I didn't have a TOOL setted

    You will ALWAYS have a Tool Value set otherwise the robot could not be moved in Base/Tool Modes.

    It will either be using values set in T1-T9 (Aux func 0304) or the T0 purely depending on QTOOL setting.

    I do not wish to confuse topic, so I will start a new topic tomorrow with video of KROSET showing D Controller and E Controller and effect of QTOOL.

    What Tygerdawg has experienced is the QTOOL functionality and the 'warning signs' of QTOOL change all because there are 2 areas to select Tool to use and very easy to make mistake/confusion.

    This is why it is paramount to always set and check correct TCP for application, as incorrect TCP can cause collision, damage or possible injury.

  • Hi guys

    I was going to start a new topic, but thought it would be relevant to include in the current one.

    Attached is a small video clip demonstrating Qtool and it's purpose.

    You will see just how 'confusing' this is...….and this is something Kawasaki has never really 'locked out' and 'restricted' and therefore often a simple change can lead to confusing results.

    I cannot explain the 'reasons' behind it, nor will I try and justify whether Kawasaki is right or wrong in what they have delivered.

    The key is to read up on AS Tool Command, Tool Aux Func 0304 and QTOOL and understand the function of QTOOL.

    I can only try and open the door of understanding what is going based on what I have discovered and I leave it up to you to draw your own conclusions and if you feel really strongly about this, then recommend you to contact KHI directly.

    The first part shows the D Controller and displaying the 'indicator' presence of T0 relating to Qtool being OFF and T1-T9 when Qtool is ON.

    It also shows the Tool Command being used to view the current tool values selected and the relative motion relating to it.

    The second part shows the E Controller and this 'indicator' of T0 not displayed irrespective of Qtool being On or Off.

    It also shows the Tool Command being used to view the current tool values selected and the relative motion relating to it.

    So for those that have only ever used an E Controller, my referral to T0 becomes a 'WTF' moment..…….:bur2:....…...and please accept my apologies.....:blumen:

    I hope the video can at least provide some headway into Qtool and the effects it has when used, on purpose or by accident and also highlight T0 is not a ghost.

    There is no 'right or wrong' way to use Qtool, except the wrong way could result with incorrect taught locations, cause collisions, damage or even injury.

    The key thing to remember, if you are intending to toggle QTOOL in your application, then you need to guarantee the correct Tool TCP value is applied and not assume nothing changes.

    QTOOL ON and BLOCK Programming automatically does this.

    QTOOL OFF and Tool Command automatically does this.

    The act of just toggling QTOOL is not a guarantee of correct TCP values are loaded, you need to ensure either by BLOCK step Tool No. or by Tool Command in addition as per the manual.

    Finally to address 'If I change a program writing TOOL T1 what could happen?

    - As you've typed it, is a variable name you are asking the robot to look up in the .TRANS register and then apply it to the TOOL NULL (Centre of JT6).

    - If T1 exists as a .TRANS variable, it will apply those values to the TOOL NULL, this creating/setting a TCP.

    - If T1 does not exist in the .TRANS variable register, then it will return an 'undefined variable error'.

    - The T1 name, as you've written has no connection to T1 value in Aux Func 0304, unless you have created the variable name T1 using the values from T1 in Aux Func 0304.

    - ie something like POINT T1 = TOOL (whilst QTOOL is ON and you have T1 currently selected and active).

    Please start a new topic if you wish to continue this discussion, as I think in hindsight, I should not have touched upon this in this topic...…:icon_redface:

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account
Sign up for a new account in our community. It's easy!
Register a new account
Sign in
Already have an account? Sign in here.
Sign in Now

Advertising from our partners