Thanks for the answer. Aslo, i found out that when you push an ESTOP button, SI[0] go from True to False. You can read it from karel with OPIN[0].
You can find the rest in I/O system, karel documentation.
Thanks for the answer. Aslo, i found out that when you push an ESTOP button, SI[0] go from True to False. You can read it from karel with OPIN[0].
You can find the rest in I/O system, karel documentation.
Hello, these variables are accessable through menu -> Next -> status -> Stop Signal, on a R30iB fanuc controller. Does anybody know how to read them from karel ?
Thanks in advance.
I have exactly the same problem with M20ia20m with j2/j3 interaction. I tried to contact fanuc's support but they did not respond. Did you find a solution ?
Thank you.
I have the same problem. I have an algorithm to do path planning and send trajectories to the robot with user socket messaging option. The robot is blocked sometimes when neither of the angles are beyond boundaries with the error being "MOTN-017 Limit error (G;1, A:2,3)". In the specifications for the robots, they usually specify the limits on j2/j3 interaction which is j2+j3 (upper and lower) but i'm getting this error even when i'm between the upper and lower limits.
Thanks a lot
Hello guys,
Is it possible to use DCS in roboguide in order to check if the robot is in a certain zone without the alarm ? i want the robot to enter the zone and keep running, at the same time i want an output telling me that the robot is in the zone. Actually, when robot enter a DCS zone it stops with an alarm.
If not, is it possible with another option, other than DCS ?
Thank you.
: )
Why robot have so bad performance with CR100 (it isn't CNT, it is CR, we use option "Advanced motion package")?
Example:
38:L P[26] R[11:L]mm/sec CR100 ;
If you don't use constants, controller can't apply the famous "look ahead" feature. Unless you add "LOCK PREG" in your TP program. This line locks the registers so their values can't change during execution. You can also add "UNLOCK PREG" at the end of the TPP for ex.
Maybe train your AI to read this entire thread from the beginning.
If you are reffering to CR stuff, it only works with linear movements. My algorithm do the planning in the joint space for joint movements.
Display More
You have three choices for sending positions to the robot: DPM (software package), Stream Motion (software package), and Socket Messaging (uses KAREL and TCP).
If all of your pick and place operations are pretty much the same, DPM might be the way to go. It's designed to dynamically modify a previously taught path based on real time sensor data. However, if you want to give your machine learning algorithm more flexibility to create the path the robot follows, then you want either Stream Motion or Socket Messaging. Stream Motion is a fairly new package from Fanuc. I've used it a bit but haven't had much luck with it (frequent OS crashes, often complained about jerk or acceleration limits). Socket Messaging is essentially Fanuc's prototype of Stream Motion. It is essentially what you described -- the idea is to fill a buffer of positions using data from your controller, and then have a TP program loop through those positions. My company uses this approach for our own application -- I was doubtful that we would have the fine control we wanted over the robot, but it actually works really well. From our own experimentation, we found that using a circular buffer of three position registers with high speed and CNT values works really well. Fanuc has example programs for this, but they're more complex than they need to be and use unnecessary features that break compatibility on robots that do not have those options installed. All you really need to do is have a KAREL loop fill position registers and set an output indicating that that position is valid, and a TPP loop waiting for each position to become valid and then move there.
The fastest you'll be able to update is every 8ms, that's a limit imposed by the controller itself. Someone mentioned a specialized software packate that ran every 2ms, but honestly you probably don't really need it that fast. Play around with the timing of your position streaming and how far apart each point is.
Are you asking if streaming positions has all of the same capabilities as a TP program? The answer to that is probably not: since you are dynamically streaming positions, you are necessarily taking away Fanuc's ability to plan it's path. You will still have good motion, but you might not be able to do precise path planning -- for example, a TP program could move in a circle by using several Arc instructions. If you wanted to stream the same path, you might send several hundred points on that circle. However, there is no guaruntee that Fanuc will move in a perfectly circular motion (still, it would almost certainly be essentially the same path). That's the tradeoff you would be making, but I don't think you'll run into any issues because of it. As for other capabilities, it would be pretty easy to expand your system to be able to set IO, read and set system variables, etc, so in that sense you aren't losing anything.
The robot is pretty responsive, so if you're sending and consuming points that fast I don't anticipate you seeing significant lag. Do be aware, however, that if you're using the Socket Messaging approach, the robot may not always be right where you command it to be by the time you send your next point. It can be easy to plan a motion and stream points from that path, expecting the robot to move along the path at the same rate you sample from it -- get position feedback from the robot so that you can handle cases where you get a little ahead of it. This isn't a huge issue, but it is something you should be looking out for.
This is not the way you want to go. This is going to be significantly slower and have higher latency than any other method.
You could, however, generate TPP scripts and FTP those to the robot, though I would budget a couple extra seconds for this transfer. It might be interesting to do a combination of TPP and KAREL position streaming: you could have a general TPP program that abstractly performs the task you want (eg. move towards object until the object is reached, attempt to grab object until successful, move object, attept to place object until successful), then communicates, via KAREL, with your external system to determine where to move, whether an operation was successfully completed, etc. I haven't tried that myself but it would be pretty cool if you got it working.
As some of the other posts have mentioned, KAREL training isn't really necessary as long as you have the KAREL manual (having the Programming Instructions manual (for TP programs) is also helpful). There are some weird KAREL quirks that you won't find in the manual, but I doubt you'd learn about them in a training; you just have to pinpoint the issue yourself and then be conscious of it going forward. For example, yesterday and today I was struggling with a stack overflow error, even though my call stack was only three routines deep. Turns out, it was an issue with KAREL trying to pass robot IO values by reference to my routine. I'm still not even sure what the robot thought it was doing, but forcing the IO to be passed by value fixed the issue. My point is, KAREL isn't that difficult of a langauge and can easily be learned without training, and any issues you run into would probably not even be in any training you take.
Still, if you own a robot, it's pretty easy to get TP programming training from the customer portal.
I'm currently implementing the same approach but i'm having problems with cnt. I have to simulate the cnt trajectories in advance so my algorithm can learn on them and check for collisions. The problem is that it's difficult to find out how exactly fanuc's cnt algorithm work so i can copy it. How did you solve this problem ? Currently i am only able to send "fine" trajectories.
Hello, i'm trying to reverse engineer the CNT of fanuc. I need to simulate the trajectories so my AI can learn on it. Does anyone have any idea if there's a description of fanuc's method for cnt ? i'm afraid if i use other methods i will get different results.
worked for me by replacing jointpos by jointpos6 data type
having a similar error did you find a solution ? thanks
Hello, may i ask if you tested on a real robot ?