I change A4 to be always -69 degrees (this way I don't hit anything). However, I get torque referencing failed. I did it twice (once in T1 and once in KRF mode, as I can't run anything with the referenced sensor)
Posts by napol1
-
-
Hi guys,
I am working with the IIWA 7 and I have an issue with the Euler angles. The working point of my robot is with the flange vertically pointing down. In this configuration, I have A=0, B=0.5pi and C=-0.5pi. A is fixed furing the work, B is free to change and C is the problem
This position is problematic for the Euler angles, as when B is close to 0.5pi, the two other angles jumps around the wrapping value and behaves really weird in general (sometimes the jumps are very fast, sometimes they are relatively slow. Until now I solved the problem by fixing both A and C and setting their calues to 0 and -0.5pi, respectively, whenever B is close to 0.5pi. However, now I want to be able to change C, even if not by much. This causes a problem as I cannot know if a change in C is due to B being close to the jumps or a wanted change.This is of course always the problem when using Euler angles, so I was wondering if it possible to working with other representations, like quaternions. I didn't find anything in the manual about changing the representation. Has someone has some experience with this problem?
Thanks
-
Hello
I was wondering if someone has ever tried to see what is the used impedance/compliance in position mode. I know it is a strange question, so I will explain myself.In my application, the robot must follow a recorded trajectory. This is done by creating a sequence of positions, which are then sent to the KUKA spline function. The result is of course the robot following this trajectory. Now, I would like to add the ability to recreate recorded forces. As I don't have force control in the basic KUKA, I wanted to do it by modifying the trajectory - in each point, if the force is bigger than a threshold, the point is moved in order to force the robot against the table and recreate the force.
Naturally, I wanted to used the impedance mode (even with very high stiffness), so I know what change in position I must apply to create a certain force. The problem - when running a spline in impedance mode (again, even with the max stiffness), the robot vibrates really badly. I am not sure why, but if I switch to position mode, the vibrations go away.
As such, I want to do the same, this time in position mode. The positions modifications will naturally be much smaller as the stiffness is probably bigger, but by how much? Is the stiffness 10000 N/m? more?Thanks,
P.S. forgot to mention - LBR IIWA 7, Sunrise 1.11, no FRI
-
Regarding the GMS referencing, is it possible to change the application so the measurements are taken where the robot has some angle (Maybe fold A2 a bit). I cannot run it since the robot gets too high and there is a setup above it (That never bothers me usually, since the robot never goes to this area normally).
-
That's true. Though checking if the end point is outside the workspace is not too difficult. But I guess depending on the application you might not to start such motion and stop or not start it at all.
Finally as a simple solution I have added a via points that keep the robot away from the boundaries of the workspace.
-
Ok. Thanks.
I thought there might be a way, since it is done for impossible trajectories (Like when commanding the robot to go to a point beyond its reach). -
Hi all,
I am working with a IIWA 7 and am trying to use the workspace monitoring. Essentially, my setup has the robot in the middle, with two work zones on the sides and a narrow "passage" between them. The passage is defined by the closest the robot can get to its base (around 42 cm radius around the base) and the end of the table (60 cm away from the base). In the sides the robot can go as far as it can reach. I wanted to limit this passage so the robot wouldn't go off the table, so I added a workspace monitoring in the safety configuration.My problem is when commanding the robot to move through this passage. I thought it would plan its motion taking into account the workspace limitation, but it doesn't seem to do that. Currently, if the ptp motion goes out of the workspace, the robot would start it and stop when existing the workspace. Is there a way to make the motion planner take the workspace limitations into account?
Thanks,
-
Hello everybody
I am using the hold position function on my IIWA LBR 7. I have calibrated the load so that the gravity compensation would work well. However, I still have a strange drift where the A1 rotates. I spent long time trying to get rid of it (thinking it's due to incorrect load in the gravity compensation), but nothing changes it. The fact that the load doesn't seem to change this behavior, and that only the A1 rotates, got me thinking there is a different cause.
One idea is that it is coming from the "Position sensors not referenced" and "Torque sensors not referenced" warnings I have. Does someone knows what is the reason for these warning messages? How do I correct them?Thanks,
-
Hi all,
I am trying to implement an axis range monitoring on my LBR IIWA 7 (running sunrise 1.11). The idea is to prevent the robot from exceeding the axis range, especially when in compliant control. I would also like to have workspace monitoring.
I have tried configuring the safety features to do that, but my problem is that every time the robot goes out of the range I define, the safety ESM kicks in and completely blocks the robot. I then need to go into KRF mode, jog the robot out and restart the application - this is not at all convenient and logical. The ideal would be a controller that just stops the robot at the boundary. I could also live with something that breaks, but without going into recovery mode.Has someone tried to implement such a controller?
Cheers,
-
Yeah, ok, this is what I think.
Actually gravity compensation works well with zero stiffness. I just don't like the fact that it is so easy to move, because it moves with every vibration.
-
I see two different meanings for dampings. The first, which makes much more sense to me is that dampings is the derivative or velocity parameter. If the robot moves fast, the dampings would slow it down. Hence, even with zero stiffness, the robot should not move completely free. As an example I would imagine moving the robot in air compared to moving it in water. In both cases the spring stiffness can be zero (so it doesn't come back to the position), but the movement "feel" is different. This will of course affect the oscillations as they would be reduced faster. This is what Im looking for, and what I expected.
The second option is that the dampings is just about how fast the amplitude of spring oscillations is reduced. For me it is more like a ball jumping. The resistance of the air doesn't change, but the amplitude of the jumps is reduced. This is what I think now going on, which I find quite stupid (as it isn't damping per se).
Anyone has different take on this? Is there anyway to limit the velocity of the robot in Impedance mode and holdPosition() (without braking to a stop).
-
Hello
I am trying to use impedance mode with practically zero stiffness on the IIWA 7. It works quite well apart from the fact that I don't see any effect of the dampings values. For me, setting high damping would cause the movement of the robot to be more rigid. However, when I set the stiffness to zero (or a very low value), the robot movements are very free, and if I try to move it by hand I don't feel any damping. I have tried adjusting the dampings values but I don't feel any difference.Implementation wise I just set the stiffnesses to 0 and then do a position hold using an impedance controller.
Code
Display Morepublic class FreeImpedanceMode extends RoboticsAPIApplication { @Inject private LBR lbr; private Tool gripper; @Override public void initialize() { // initialize your application here lbr = getContext().getDeviceFromType(LBR.class); gripper = getApplicationData().createFromTemplate("GripperSchunk"); gripper.attachTo(lbr.getFlange()); } @Override public void run() { // your application execution starts here CartesianImpedanceControlMode impedanceControlMode = new CartesianImpedanceControlMode(); impedanceControlMode.parametrize(CartDOF.ALL).setStiffness(0); impedanceControlMode.parametrize(CartDOF.ALL).setDamping(1); IMotionContainer positionHoldContainer = lbr.moveAsync((new PositionHold(impedanceControlMode, -1, null))); getLogger().info("Show modal dialog while executing position hold"); getApplicationUI().displayModalDialog(ApplicationDialogType.INFORMATION, "Press ok to finish the application.", "OK"); positionHoldContainer.cancel(); } }
-
I was reading the documentation for the FRI and I have 3 additional questions : :icon_smile
1. Using FRI, do I have to control the robot the robot only from the client side? I mean, do the robot controller only gets messages and executes them? If I want to make a torque PID, do I need to calculate the torques to apply on the client or can I implement it on the robot controller. (I was planning to have a messaging system between a computer and the controller anyway, but I would like to keep some parts on the controller and just change the "program state" with the messages).
2. I find the configuration section unclear. I have KONI and KLI. Up to now I only used KLI to program the robot controller. With FRI, do I need to use both or do I choose one ? How do I choose ? I don't have a particular need to real time.
3. What is the IP address I need when creating a FRIConfiguration? The IP of the client? (The one configured in my Ethercat TCPIPv4 ?) Or the IP address of the connection I use ? (Configured in the Sunrise-Station setup-configuration for either KLI or KONI)
Thanks
-
I guess he means input 1. Did you connect the cables correctly ? If you configure it to be CIB_SR5 then the button must be connected to 18-19 and 28-29.
-
Hello all
I am trying to implement a torque PID control on a LBR IIWA 7. I have a list of the desired positions at different time steps (Recorded previously by handguiding the robot and reading the sensors as fast as possible). The idea is to find the error in position and then determine the joints torques to apply using a PID controller.
However, I have looked in the documentation for workbench (my version is 1.11) and I cannot find an option to control the robot's joint torques.
As a first step I have tried to implement a position follower - at every iteration the robot checks in which position it should be at this moment and goes to it. The problem is that my list of positions is at very fast frequency. In this case the robot doesn't have enough time to move to the new position (as it stops after each move() or moveAsync() command.) For this reason it makes much more sense to use a torque controller.
Thanks!
-
That was helpful ! And easier than copying the numbers one by one -
I use 10Kg tools on our 14iiwa in handGuiding, and it handles it like a champ.
Can you elaborate on the way you use to get the load data, as well as a screenShot of the smartPad while doing so?
I used the load calibration from the smartPad and then I played with it a bit until the compensation was good and stable (As my gripper is only around 0.5kg, the automatic calibration wasn't precise enough). After doing that for the impedance mode, the arm can be moved and stays in place when released.
The weird part is, that for the handguiding it doesn't matter if I add the load or not. With or without " gripper.attachTo(lbr.getFlange()); ", I feel the same behavior. -
Hello all,
As the title says, I want to copy the application and template data from an old project to a new one. It seems weird that it would be impossible, as I can copy files and all, but I cannot figure out how to do it and couldn't find anything in the documentation.
Copying all by hand would be a bit frustrating -
Thanks for the reply.
That's what I did before. The biggest problem is that there is no real damping (Do you feel a difference when changing the damping?), so it is easy to overshoot your target when you guide the robot.Did you define a input to cancel the position hold? That's the next thing I have to do
-
Oh, sorry, I forgot to add it
Code
Display Morepublic void initialize() { // initialize your application here lbr = getContext().getDeviceFromType(LBR.class); gripper = getApplicationData().createFromTemplate("GripperSchunk1"); gripper.attachTo(lbr.getFlange()); //lbr.setHomePosition(getApplicationData().getFrame("/HomePos")); } @Override public void run() { //------ handguiding------ getLogger().info("----- Handguiding -----"); getLogger().info("Move to start position"); lbr.setESMState("1"); //ESM for normal motions gripper.getFrame("/TCP").move(ptp(getApplicationData().getFrame("/AboveRail_Gripper"))); getLogger().info("Start Handguiding"); lbr.setESMState("3"); //ESM containing "Hand guiding device enabling inactive" gripper.move(handGuiding()); lbr.setESMState("1"); //ESM for normal motions getLogger().info("Move back to start position"); lbr.move(ptp(startPosition)); }
esm1 contains some limits on the axis range and on collision detection, esm3 has the safety configuration fro handguiding.