Posts by dcrb

    A lot of trigonometry.


    Two points define a line y=ax + b y=mx+n y-y1=m(x-x1)

    Then you can find if they intercept the robot.

    For example, using y-y1=m(x-x1) I think if X and X1 are negative it will be an impossible linear move because you are going through the robot

    Well I didn't try any trigonometry and it may be useful for some situations but in this case the problem isn't going through the robot. I'm always working on the same side of the robot.


    I basically work in a cubic box of 200mm x 200mm x 200mm on one side of the robot. Problem is while I can reach for example point (100,100,100) with a linear move with the initial TCP orientation, when I later change the orientation a bit (for example 30 degrees in W), then there are points I'm not able to reach anymore by linear moving.

    Despite not being able to reach them, the CHECK_EPOS doesn't give status <> 0 so the robot tries to move there and then gives the MOTN-018 Position not reachable (G:1) or the SRVO-115 Limit error (G:1, A:6) which makes you have to reset the program on the teachpendant which is not acceptable for my application

    Hey there,


    My issue is quite simple: I am using a set number of registers and declaring them at the begining in the CONST section. I would like to be able to put them all inside an array instead of having N different constants.


    I know I can put those values in an array by doing the following code and assigning it one by one but I'm wondering is if you can do it in one line as you can do in most languages, with something like: ARRAY=[1,5,8,4,7,12] (for example). Is that possible in Karel?



    EDIT: Posted in the wrong section by mistake, sorry.

    You'll need to use Karel for this. There are two specific built in procedures, CHECK_EPOS, where you have to give it the position, the uframe, the utool, and the group number. There is also the IN_RANGE built in which uses the current uframe, utool, and group.

    A small question regarding these functions: what those functions do is simply check if the given point is within the robot range right? It doesn't allow you to check if that point is reachable from the current point by moving linear does it?


    Supposing it does not, is there any way to check if a given point is reachable from the current point by a linear move?

    pdl The CHECK_EPOS and IN_RANGE functions were exactly what I was looking for, thanks!


    Fabian Munoz Thank your for your input as well. Yes, I use PRs and at the moment I check if it's off limit just like you said. There's a disadvantage in that though: I work mostly on a main plane where I move linearly in X/Y/Z and the robot has quite a good range there. But sometimes I have to change the end-effector orientation and when I do that, the area the robot can reach moving in X/Y/Z is smaller. To define fixed limits that work, I have to define them for the rotated work positions where the area the workspace is smaller and I loose some range in my main plane. So that's basically why I was looking for some function like CHECK_EPOS/IN_RANGE to see if the robot can reach a point and avoid setting fixed limits.

    Hello,


    I've been developing a program which moves in different directions and points depending on some input. But sometimes the points that I attempt to reach are out of the robot range. So my question is simple: is there or does anyone know about some function (or another way?) to know if a point is in the robot range, before getting the error?


    Thanks in advance

    Nevermind, I've found my problem, some weeks ago when I created the workcell while doing the configuration tutorial I set up a TCP 50mm aways from the faceplate and that was causing the difference between the karel and TP program.

    Anyway, seems like simply posting the issues here gives insight on the solution, even before receiving replies :grinning_squinting_face:

    Hello there,


    I've wrote a program that gets the current position of the robot and stores it in a PR via CURPOS(0,0). The program gets the position as expected. The issue is that I then want to move to that point via the TP but the points are for some reason diferent. I suppose that's due to frames issues, probably the program is using diferent frames for getting the current position and for moving it but I've been unable to find how to fix this. I've read the karel manual about position data and frames, but I'm still confused and stuck. I haven't made any operations with frames, changed or added any frame related instructions. Any suggestions on where I should look, what I should try or where I can get an example or so?


    Thanks in advance, the help I've been getting in this forum (both to my question and by reading other's posts) has been very useful for someone like me who recently started working with robots and with FANUC! :smiling_face:

    For RoboGuide, I believe that the SERVICES.TXT file, located in your RG computer in the specific robot subdirectory under the workcell directory (on default installs, RG creates a My Workcells directory in your My Documents directory, and every workcell you create has its own directory inside), shows the ports exposed by each service in the virtual robot.

    Found that file, pretty useful, thanks! I've managed to establish a connection through the port 2000 (127.0.0.1:2000), even though that port doesn't appear on the services file or anywhere else.

    Thanks for your input. I've been trying to simulate the connection with RoboGuide but while the Python Program connects to the roboguide IP (127.0.0.1) I'm unable to connect the karel server to the python program. It always fails at the MSG_Connect, giving status = 67216. Any idea or suggestion on what might be wrong? Which port should I use?

    Hello there,


    I'm quite new to robot programing and specially to fanuc robots and I'm implementing an application where I need a server to run on the controller to get and update constantly the information coming from a python client. The info will then be used to give movement instructions to the robot.


    The python client gets the data from an USB device and process it and then sends an array of 8 variables (either -1/0/1 for each) by socket messaging to the controller. I've been through the Karel server example that's on the Karel Reference Manual but truth is I don't really understand what's going on there, mainly with the "Open/Close File" instructions and the two for cycles. In my case, I want to constantly (no need for huge frequency but I don't want lag neither) get the values of the 8 variables so I can with them instruct the robot to move to certain positions. Thing is, I don't know if I should open a file and then constantly cycle through the same file with multiple read statements or if I should open/close a file everytime I want to update that data.


    I thank you in advance for any help given! :smiling_face:

    Hey there,


    I want to be able to move the end-effector in a direction (for example z-axis in tool frame) while some variable = 1 and it to stop once variable = 0.


    One solution would be to constantly increment an offset to a point and move the robot there but then the movement won't be smooth, it will be constantly accelerating and decelerating.


    So I thought about implementing a point further away, in the direction I want to move, and put the robot moving to that point and stop it when DI changes to 0. Problem is, I don't know how to interrupt the movement.


    Basically, I'd want something like this:

    *Robot is at (0,0,0)*

    Variable "move_x" goes to 1, Robot start moving to (max_x,0,0) //max_x = maximum value in x-axis the robot can reach

    When Variable "move_x" goes back to 0, the robot immediately stops where it is (and will then move to a pre-defined target or in another direction depending on another DI)

    Hello,


    Is it possible to directly connect a USB device (for example a mouse or a gamepad) directly into the robot and then use its inputs for programming some functions?


    An alternative I've thought about would be using an ESP32 and then connecting its DO to the robot DI but if it was possible somehow to use the USB port available on the controller it would be better.

Advertising from our partners