If you want to use it, you will have to create a CircRel object, then move based off of it. You can use
then use the getters from the new frame to input in the circRel object. Then run a
If you want to use it, you will have to create a CircRel object, then move based off of it. You can use
then use the getters from the new frame to input in the circRel object. Then run a
Take a look at the subclasses of AbstractCondition instead. I used a MotionPathCondition.createFromDelay(int time) followed by a PTP motion appended with the breakWhen() statement. The code looks something like this:
MotionPathCondition condition = MotionPathCondition.createFromDelay(ReferenceType.START, 2500); // will set delay of 2500 ms
PTP motion = new PTP(getApplicationData.getFrame("/TestFrame").copy()).breakWhen(condition); //creates movement w/ condition
robot.move(motion); // will move the robot toward TestFrame's location in a PTP motion, but halts after 2500 ms.
I would recommend interrupting a LIN command instead of a PTP if you want the robot to be on a linear path between the start and end location. Depending on what you are attempting to accomplish here, you may want to use a RobotCondition, or a ComplexCondition. All of the subclasses of the conditions can be found in the docs browser, or in the manual.
Hope this gets you started!
Even better: since the cabinet is running on Windows 7, you don't even need the credentials to hack into admin access and change the passwords (which are all posted on the forum anyways )
I'm not exactly sure what your problem is here, so I have a couple answers for my different interpretations:
1) You want to prevent the robot from moving too fast in this Cartesian space:
Program your safety configuration. You do not need to go through WorkVisual for this one, just open SafetyConfiguration.sconf, then program a new line containing both Cartesian Workspace monitoring and Cartesian Velocity monitoring. This will stop robot motion whenever it is in the Cartesian space.
2) You are programming a button as an input signal, and whenever it is activated, you want my first guess to happen.
To do this, you need to wire your button to the X11 connector (and if you haven't, you really should configure an external E-Stop through the X11 as well, it will be good practice). This will follow a pin allocation seen in section 6.6.1 of the Sunrise Cabinet manual. Finally, you will need to follow the steps in part (1) above, followed by adding a third AMF: Input Signal, and select the input you used from the drop down menu.
See the attachment below to get an idea of what the configuration would look like.
3) If you want to do this any other way, such as forcing the robot to lower its speed through this area without triggering a safe stop, it will be a programming challenge and I would consider looking into background tasks. However, this depends on your application, and it seems like it would lend itself more to the stop procedures I listed above. If this is your problem, then you will have to do a lot of reading in the manuals to figure out what you're doing.
P.S. You are seeing Stereung 1 (KRC4 8.3.0), which is the iiwa's controller. To use WorkVisual with the iiwa, you will need to follow the bus configuration chapter (chapter 11) in the SunriseOS manual. Don't read the WorkVisual manual for bus programming on the iiwa, as it will be confusing and misleading.
By "shake" you mean a fast rotation about the 7th axis only? Is this rotation all the way to the limit of the axis? If so, you may want to reduce your rotation to a lower angle, such as +-150 degrees. You may want to check your safety configuration to ensure that you don't have any axis violation triggers that would cause problems with this motion. Splines are an estimated motion to the final point, so you may want to use an exact motion like CartesianPTP or RelativeLIN (see documentation) to avoid any deviation from the path, especially if you are close to the axis limits. Also, because you are so close to the axis limits on axis 5 and 7, you may want to find a better way to position the robot while shaking.
Hope this gets you started!
-Alex
Seems like we are all in agreement, how would we go about doing this?
-Alex
I have no experience with RCS, but a quick google search yielded this:
https://community.plm.automation.siemens.com/t5/Tecnomatix-…n-PS/td-p/26106
I'm not exactly sure what you're trying to do, but hopefully that helps.
Right now I am looking for a way to set the stiffness for the joints. Robot is way too compliant in hand guidance mode
I'm not sure how easy it would be to change the stiffness of joints in handguiding, as there isn't a standard method for that. However, you may want to try changing the axis limits using the setAxisLimitsMax|Min() commands to restrict the robot's motion (read section 15.11.1 in the manual for more information). Also, make sure the flange's load data is properly accounted for. Any small deviations from calibration could lead to unexpected results for a hand guiding motion.
The problem I am facing right now is that once I press the enable switch (ESTOP switches together in my case) nothing happens. Once I release the switches, hand guidance gets enabled. It stays enabled without me requiring to keep the switch pressed. I can disable the hand guidance once I press and release the switch again.
My setup uses a t flip-flop circuit that uses a single button to move between the ESM states of hand guiding (the button is acting as a switch in my circuit). Is your "switch" a button? If so, a 2 state switch (something similar to a lightswitch) is a much better way to go for this circuit. It will help you understand how the robot handles safety signals and help you troubleshoot problems.
Is your robot already set up? Did students or professors attempt to use it previously? Do you have any coding experience in Java? It is essential that you understand Java at least to the point of class structure and inheritance if you want to be able to use an already set up robot. Coding an iiwa in my experience has been a computer science project more than anything else, so make sure to understand how to code. I know there are a couple of KUKA employees that travel around the USA that might be able to help you at some point. If you are working with a professor, see if they can get you in contact with someone from KUKA, otherwise, contact KUKA yourself to determine when someone might be around to help.
I learned how to code in Sunrise without any help from employees or previous students; just me and the manual (but with the understanding that this robot can be very dangerous if controlled irresponsibly). It is definitely possible to learn if you have enough time on your hands, you just need to be very meticulous about what you are reading, then the rest is (very cautious) trial and error.
Good luck!
Note: the majority of programming in Sunrise is understanding how Eclipse works (Sunrise is just a slightly modified version of Eclipse). I would recommend downloading eclipse and going through their tutorials if you are having trouble understanding how to create classes or using the interface itself.
Thanks for the tips, they definitely led me in the right direction. Turns out, I was looking for the RelativeLIN class all along! The code I was looking for was very simple, and uses the nullFrame as JLoop mentioned. Here is a snippet of the code, if you were interested (this motion rotates about the tool tip, relative to the world Cartesian plane).
Frame nullFrame = getApplicationData().getFrame("/NULL").copy();
MotionPathCondition condition = MotionPathCondition.createFromDelay(ReferenceType.START, 5000);
RelativeLIN motion = new RelativeLIN(0,0,0,0,Math.toRadians(10),0,nullFrame).breakWhen(condition);
tip.moveAsync(motion.setJointVelocityRel(0.05));
Hi there,
I'm working on a side project, and need to rotate a tool relative to the world coordinate system, not the tool's coordinate system. In T1, the GUI on the SmartPAD makes this easy, because in the tool selection category, you can select Cartesian motion relative to the world, or relative to the tool. In code, however, the rotation defaults to the tool's coordinates. I need to change this so that the rotations I perform around the tool tip are relative to the world coordinates. Please let me know if you have any ideas! I will post some pictures if that would help too. If a snippet of code helps to explain what is going on, I have posted some below:
This causes a rotation about the Y-axis relative to the tool tip orientation (I need a rotation about the Y-axis relative to world coordinates):
Frame b = robot.getCurrentCartesianPosition(tip.getDefaultMotionFrame());
double beta = Math.toDegrees(b.getBetaRad());
b.setBetaRad(Math.toRadians(beta + 10));
LIN motion = new LIN(b);
tip.moveAsync(motion.setJointVelocityRel(0.05));
-Alex
i´m begginer in java coding using iiwa.
I would also highly recommend you spend some time learning and understanding java, if you do not have a good understanding of it now. Inheritance is extremely important to understanding how the functions work. A good introduction to java can be found on codeacademy.com. It is a great resource, and should help you learn the basics in around 4 hours.
Hi roger,
Try something like this... there are many ways to do what you are trying to do. Browsing the JavaDocs can be a great way to understand the implementations offered by Sunrise (see picture).
Frame layupP1 = new Frame(getApplicationData().getFrame("/P1").getX(),
getApplicationData().getFrame("/P1").getY() + 20, //Adds 20 to the location
getApplicationData().getFrame("/P1").getZ(),
getApplicationData().getFrame("/P1").getAlphaRad(),
getApplicationData().getFrame("/P1").getBetaRad(),
getApplicationData().getFrame("/P1").getGammaRad());
// Define other frames the same way...
LIN motion = new LIN(layupP1);
robot.move(motion);
// ... add other motions ...
Display More
This should hopefully get you started. Remember to look at the picture to see how to use the docs browser!
1. Hover over something you want to see the methods for/learn more about
2. Hover over dialog box that opens
3. Click the Browser Icon to open a browser page
4. Profit
Let me know if this helps you, or if you need more information to get started.
Unfortunately, I am moving a rather large distance (>200mm), and the orientation of the tool needs to be very accurate. I can imagine that the robot should be able to do this, so I might try to design a subclass that preserves orientation. We'll see what I can get.
Thanks!
-Alex
After you follow kiiwa's instructions, you will need to download the installed files directly from the UI of Sunrise, in the StationSetup.cat. You need to check the boxes you need, then synchronize the project. See the pictures I included for details. Let me know if this helps!
-Alex
Hi there,
I've been working on an application for a while now, and have been thinking that it would be very nice if, while hand guiding was enabled, constraints could be put on the tool in a different way than how setAxisLimitsMax|Min works. It would be extremely beneficial if the tool could maintain its Cartesian rotation parameters while moving (i.e. keep the tool orientation while translating its XYZ position via Hand Guided control). It doesn't appear that there is a command available with this functionality, but I might be wrong. If anyone has worked with something like this or has insight, please let me know!
-Alex
In the manual PDF, just do a CTRL + F, then search for what you need. Works for me 90% of the time.
We do not have any adapters for the x650 to x651 cable. I am wondering if these cables should have come with our robot or if they are ordered separately.
I am still wondering about this one. We have the Media Flange Electric installed on our robot, but neither the x650 - x651 nor the x76 cables or connectors came with our robot. I am trying to figure out what the specifications are for these connectors, but I am having a lot of trouble searching for more information on the connectors. Does anyone know the name/specifications of the x650 to x651 cable or the x76 connector? Help would be much appreciated!