Posts by Darkbound

    There are a few ways to achieve what you want.


    1. Don't use offsets, just teach points for each motion you need.

    2. Create a new tool frame that is rotated they way you need it to be in order to give you a tool axis to rotate around

    3. Use matrix multiplication to calculate a new frame or position.

    From the three options that you stated I think that the only option that will work is the third option, the rest will not work because I want use that offset as way for operators to do minor adjustments, because the parts that are being loaded into the machine are irregular so sometimes tiny modifications are needed , so I guess thats why creating a new frame will not work nor teaching points for each motion, because its just like fine-tuning of a point so my question here is:

    Is there a way to do matrix multiplication on the robot itself or do I need to write a Karel script to do this?

    And I am capable of doing that..

    It is a common misconception that w, p, and r are axis rotations around x,y, and, z like experienced when jogging. They are in fact not. They are Euler angles and don't always play nicely with rotational frame offsets.


    Tool offsets are a much better solution for rotational offsets.

    I tried with Tool_Offset and it is behaving the exact same way. Plus, since my tool frame is already rotated, I dont have an axis around which to rotate it in the vertical (XZ) plane. Both Tool_Offset and Frame Offset when changing P are rotating around the Tool Y axis and not around the world(or current frame) Y axis.


    As far as setting the frame and the shift+coord thing from your previous post, yes that is exactly what I am doing, I have an instruction that is setting the frame at the top of my program, I just screenshoted that to show my current frames.


    I still cant figure out how to rotate around the world Y axis (as it behaves when jogging) by setting a single offset.

    I have an issue where I want to be able to offset a point, but mainly the rotations around XYZ, so WPR.


    L P[1] 500mm/sec FINE ACC30 Offset, PR[1]


    P[1] coordinates are:

    X: 796.821

    Y: -2281.020

    Z: 404.333

    W: -175.031

    P: 58.643

    R: 94.256


    This the point in question, the PR[1] offset, I am just changing the P component on it, so PR[1]:

    X: 0

    Y: 0

    Z: 0

    W: 0

    P: 15

    R: 0


    However, when that is applied the robot actually turns 15 degrees around the TOOL X axis, and not around the WORLD Y axis.


    XYZ changes work just fine and they are being applied according to the world frame.


    I have attached a short video to show my issue.


    I guess my question boils down to, how do I tell the robot "hey, take this point (P[1]) and apply P(Pitch) offset calculated around the WORLD frame"?


    External Content youtu.be
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

    Hey guys, I am having some trouble doing math with XYZWPR variables.

    I have two XYZWPR variables, say pos1 and pos2.

    At first I tried to subtract them and get the result into a 3rd XYZWPR variable like so:

    Code
    VAR
    pos1, pos2, pos3: XYZWPR
    
    BEGIN
    pos3 = pos2 - pos1
    END

    But I got an error saying:

    Operator expected POSITION data type for left operand.


    Any idea how to properly do math with that datatype?

    Is it possible to somehow open and read/edit an already compiled karel file (.pc)? Back into .kl? Or once it is compiled into .PC file its done and the contents cant be read/modified? Im asking mostly because I want to know how "safe" my .pc files will be from pirating if I install them on robots that I do not own.

    Is there a way to retrieve the robot and/or controller serial numbers with Karel? Or any other unique identifier of a robot?

    I have a few Karel programs that I want to lock to a particular robot and prevent people spreading them on other robots, so I want to add a check for something unique, something that a user cant change through the controller?


    I found two system variables 'FNO' and 'PRODUCT_ID' but the values of both of these variables can be changed.

    What if I have multiple active alarms at the same time?

    How would I know which of them are active, I already managed to retrieve the full list of alarma, I dont know how to determine which are the active ones at the moment of retrieval

    I was able to successfuly retrieve the full list of alarms from the history using ERR_DATA, but how do I get the currently active alarms? What function do I use for it, or do I use ERR_DATA in some special way?


    EDIT: I found the file that keeps the currently active alarms, ERRACT.LS, I can write a KAREL program that Reads that file and prints the errors from there, but I'm pretty sure that's not the best way to go about this. There should be something more "elegant"?

    Hey guys, I am expecting to soon receive Kuka robots at my facility, but don't have any at the moment, so I still know nothing about them. I have a tool developed for my Fanuc robots that uses their webserver to communicate with them, so I was wondering if I will be able to also integrate the Kukas in it, if Kukas have anything like that? Is there a webserver, can you do http requests?

    Hey guys, for a project that I am working on, I need to be able to do a RESET with Karel, is that even possible?

    Also not just a RESET, but also the RES_1CH, because sometimes we get error about abnormal fence status and it cant be resetted just by a RESET, but first we have to reset channel 1.

    How can I do that with Karel? At least any pointers as to what I should be looking for?