Frame.setAlphaRad ?!
Frame.setBetaRad ?!
Frame.setGammaRad ?!
Posts by razzo
-
-
It is the FUSE!!!
Probably you do not know where this fuse is located. As far as I remeber it is a 80V 4A fuse -
Easiest way to figure out which WorkVisual version is required is to read the 'ReleaseNotes_SunriseOS_en.txt' in the directory 'readme'
This is for Sunrise V1.13Quote
KUKA Sunrise.OS V1.13 (04/01/2017)
----------------------------------New Functionality:
==================
- Central Application Wizard for creation of new applications
- smartPAD: Functionality "Application reset and deselect" moved into menu
- Support of Field-bus for Connectivity FRI (Fast Robot Interface)Fixed Bugs:
===========
- Improvements of robustness in network communication
IMPORTANT NOTES:
================
- for upgrading of existing application/projects/robot controllers to "KUKA Sunrise.OS V1.13",
the upgrade of the Windows image to "Win7 V3.6" is mandatory
- for upgrading of existing WoV-projects, please refer to the ReadMe in the WorkVisual folder.System Requirements:
====================
1. Win7 V3.6
2. Work Visual 4.0.17_build70 -
try reading chapter 15.19 and following
stop condition in Z-direction (world) if the force is bigger than 30 N.CodeForceCondition cond = ForceCondition.createNormalForceCondition( lbr.getFlange(), CoordinateAxis.Z, 30); lbr.move(ptp(targetFrame).breakWhen(cond));
HRC is way more! It is not only that the robot stops when it gets into contact with a person and to limit the speed. It is also that the tool must not be harmful, the complete cell must be ready for HRC, not just the robot.
-
But the function which you discribes has nothing to do with HRC.
This is just a normal breakCondition. -
The easiest way to limit the velocity of a motion is with the 'Enhanced Velocity Controller'. This is an extra option package which is provided by KUKA.
There you can configure the desired velocity within in the safety configuration. If you need several velocity limits you can put them into different ESM and change between those.
I have no idea how much you have to pay for this option package, but it makes this really easy and safe. -
Try to install your new project first before you try to synchronize it.
-
For HandGuiding you do not need the HRC option package afaik.
AMF configuration is not that easy to understand what to do and especially why to do it, but indeed it is for the safety for the guy who is cooperating with the robot.
But try:
HRC is an additional option package but I cannot answer the question where to get it from, because I got all option packages by default -
Did you configure the correct 'Media Flange'?
take a look at your 'Station Setup' -> Configuration -> There should be a field 'Media Flange' and there you have to select 'MF Touch electric'.
After you saved that you should have a IO-configuration in your Package Explorer. A folder 'Generated IO-configuration' or something like that and some additional files in your source-folder 'xxIOGroup.java' and 'xxIOGroup-impl.java' or something like that. If you do not have those files, create a new project and select the correct Media Flange and then you should have the correct IO- configuration.
The other possibility is that you just have connected one cabel to your robot and the bus-cable is missing and you just installed the one to supply the drives. -
If you do not see 'Collision Dection' than you do not have the option package 'Human Robot Collaboration' (HRC). The option package has to be installed of course (open 'Station Setup' -> select 'Software' tab -> select 'HRC' option package to be installed -> save 'Station Setup' -> take a look at the new option in your 'Safety Configuration').
-
I do not have a robot at home and no time to test it at work, but probably this could help.
If the calculatedFrame cannot be reached with the current E1, catch the CommandInvalidExecption which should be thrown if a Frame of JointPosition cannot be reached, afaik. If the exception is caught, change E1 and try to approach this position again. Repeat as often until you reached the desired position.
I have no clue if this is working ... give it a try.Code
Display More... while (true) { try { JointPosition jp = robot.getInverseKinematicFromFrameAndRedundancy(calculatedFrame); robot.move(ptp(jp)); break; } catch (CommandInvalidException e) { LBRE1Redundancy red = (LBRE1Redundancy) calculatedFrame.getRedundancyInformation().get(robot.getName()); red.setE1(getOtherE1(red)); calculatedFrame.setRedundancyInformation(robot, red); } } ... ... private double getOtherE1(final LBRE1Redundancy red) { final double limit = 1.9; double value = red.getE1() + 0.1; if (value > limit) { value = -limit; } return value; } ...
-
Maybe it is support if you install in correctly, but did you install it correctly on the sunrise controller?!
-
You need to set "enable hand guiding in automatic mode" to true in the station setup.
This is not true.
Actually you have to set it to false to use Hand Guiding in an application. This should also be mentioned in the manual.And as you (Confused_user) already did correctly is that you use ESMs to make it safe.
I am not that deep into it that I can see if you configured it correctly. But did you set the Hand Guiding Enabling Switch to true in your safety configuration? -
here's a photo in attach. But, be sure to change the burned one with the same type of fuse. Usually, KUKA ships a couple of fuses along with the new robot.
Those are not the fuses you have to change, afaik.
I do not have a controller at home and I always forget to take a picture at work -
No, it is no KRC4!
It is a KUKA 'Sunrise Cabinet' robot controller. This is what you usually can see in the 'Station Setup' in the 'Topology' view (look at attachement). -
I am not sure what you really want to do or what you want to know.
But probably chapter 15.22 of the 'Operating and Programming Instructions for System Integrators' manual can help you or give you an idea what to do. Maybe you are looking for something else like 'Break conditions for motion commands' or 'Path-related switching actions (Trigger)'. Take a look at chapter 15 in general.You also can try to tell us more specific what you really want to do. A complete scenerio.
-
Reinstalling the base WindowsBaseImage could work I guess. But this means deleting everything. And you need the special 'Kill-Stick' which is provided by KUKA. You need the correct WindowsBaseImage which fits to your SWB.
I do not know if there is any other possibility to restore the default password. I have never tried it. -
The ExecutionException says that you want to move to a position which is X=100 and everything else 0. This will not work, because the robot cannot move to this position. The robot is not that flexiable
Does this Frame you want to move to have redundancy information?! If not, the robot cannot move to this position. And if the frame has redundancy information and they are wrong, the robot cannot move to this position ...
For further information read previous posts ... -
I guess you have problems with the redundancy of the robot position. This is a really ugly problem with the LBR iiwa which cannot be solved so easily. We cannot see in which line the problem actually occurs.
This redundancy problem is no LBR iiwa specific problem, but here it is more difficult because of the 7 joints and the special joint configuration.
The manual provides some information about this in chapter 14.10 'Redundancy information'.So you can drive to your 'homePosition'?
But not to the next position 'toPrePosition = ptp(point1.setZ(50))'?
==> The problem could be that you initialize the 'playGround' in you field declation with an Frame which is at this time empty or 'null'.
==> Initialize 'playGround' in your initialize(), below:Codethis.canvas = getApplicationData().getFrame("/canvas"); // .copy() is not neccessary or even worth, it leads to an error.
This could probably help you. For now.
-
You are obviously not very experienced in computer programming especially object based programming.
To give you an idea how comfortable this kind of programming can be I try to show you how to draw square quite easiely (if everything is working - I cannot try it at home ).Your robot programm could look like this:
Code
Display Morepackage application; import javax.inject.Inject; import javax.inject.Named; import com.kuka.roboticsAPI.applicationModel.RoboticsAPIApplication; import static com.kuka.roboticsAPI.motionModel.BasicMotions.*; import com.kuka.roboticsAPI.deviceModel.LBR; import com.kuka.roboticsAPI.geometricModel.Frame; import com.kuka.roboticsAPI.geometricModel.ObjectFrame; import com.kuka.roboticsAPI.geometricModel.Tool; public class RobotApplication extends RoboticsAPIApplication { @Inject @Named("MyToolTemplate") private Tool myTool; @Inject private LBR robot; private ObjectFrame squareOrigin = getApplicationData().getFrame("MyFrame"); @Override public void initialize() { myTool.attachTo(robot.getFlange()); } @Override public void run() { Square mySquare = new Square(squareOrigin, 20, 30); mySquare.draw(robot); } }
But therefor you have to write another class which contains some information and actions. This could look e.g. like this:
Code
Display Morepackage application; import static com.kuka.roboticsAPI.motionModel.BasicMotions.lin; import static com.kuka.roboticsAPI.motionModel.BasicMotions.ptp; import com.kuka.roboticsAPI.deviceModel.Robot; import com.kuka.roboticsAPI.geometricModel.Frame; import com.kuka.roboticsAPI.geometricModel.ObjectFrame; public class Square { private Frame origin; private Frame upperLeftCorner; private Frame lowerLeftCorner; private Frame upperRightCorner; private Frame lowerRightCorner; private double length = 0; private double height = 0; public Square(final ObjectFrame origin) { initFrames(origin); } private void initFrames(final ObjectFrame squareOrigin) { this.origin = new Frame(squareOrigin); upperLeftCorner = new Frame(squareOrigin); lowerLeftCorner = new Frame(squareOrigin); upperRightCorner = new Frame(squareOrigin); lowerRightCorner = new Frame(squareOrigin); } public Square(final ObjectFrame squareOrigin, final double length, final double height) { initFrames(squareOrigin); setLength(length); setHeight(height); } public void setLength(final double length) { this.length = length; upperLeftCorner.setX(upperLeftCorner.getX() - length / 2); lowerLeftCorner.setX(lowerLeftCorner.getX() - length / 2); upperRightCorner.setX(upperRightCorner.getX() + length / 2); lowerRightCorner.setX(lowerRightCorner.getX() + length / 2); } public void setHeight(final double height) { this.height = height; upperLeftCorner.setY(upperLeftCorner.getY() - height / 2); lowerLeftCorner.setY(lowerLeftCorner.getY() - height / 2); lowerLeftCorner.setY(lowerLeftCorner.getY() + height / 2); lowerRightCorner.setY(lowerRightCorner.getY() + height / 2); } public void setOrigin(final Frame origin) { upperLeftCorner = origin; } public void draw(final Robot robot) { robot.move(ptp(getApprochFrame(upperLeftCorner, 50))); robot.move(lin(upperLeftCorner)); robot.move(lin(lowerLeftCorner)); robot.move(lin(upperRightCorner)); robot.move(lin(lowerRightCorner)); robot.move(lin(upperLeftCorner)); robot.move(lin(getApprochFrame(upperLeftCorner, 50))); } private Frame getApprochFrame(final Frame frame, final int distance) { return frame.copyWithRedundancy().setZ(frame.getZ() + distance); } public Frame getOrigin() { return origin; } public double getLength() { return length; } public double getHeight() { return height; } }
Another advice for good Java programming, try to avoid somethink like this:
Code
Display Moreif (square == 1) { corner1 = square1.copy(); } else if (square == 2) { corner1 = square2.copy(); } else if (square == 3) { corner1 = square3.copy(); } else if (square == 4) ....
use instead:
Code
Display Moreswitch (square) { case 1: corner1 = square1.copy(); break; case 2: corner1 = square2.copy(); break; case 3: corner1 = square3.copy(); break; case 4: corner1 = square4.copy(); break; default: getLogger().error("This square is not supported: " + square); break; }
I hope, this is not too much code