I appreciate for your informative information,
I try to use iiwa_stack as well.
one other problem I just noticed:
in smartServoSampleSimpleCartesian example a sinusoidal motion is set for the TCP in Z direction. but looking at the motion of the robot you can find that it does not follow exactly the given trajectory. It is supposed to move in only z direction but the robot moves in x and z direction not precisely.
try
{
// do a cyclic loop
// Do some timing...
// in nanosec
double omega = FREQENCY * 2 * Math.PI * 1e-9;
long startTimeStamp = System.nanoTime();
for (i = 0; i < NUM_RUNS; ++i)
{
// Insert your code here
// e.g Visual Servoing or the like
// Synchronize with the realtime system
theServoRuntime.updateWithRealtimeSystem();
// Get the measured position
Frame msrPose = theServoRuntime
.getCurrentCartesianDestination(_toolAttachedToLBR.getDefaultMotionFrame());
// Do some Computation
// emulate some computational effort - or waiting for external
// stuff
ThreadUtil.milliSleep(MILLI_SLEEP_TO_EMULATE_COMPUTATIONAL_EFFORT);
// do a cyclic loop
curTime = System.nanoTime() - startTimeStamp;
double sinArgument = omega * curTime;
// compute a new commanded position
Frame destFrame = aFrame.copyWithRedundancy();
double offset = AMPLITUDE * Math.sin(sinArgument);
destFrame.setZ(destFrame.getZ() + offset);
theServoRuntime.setDestination(destFrame);
}
}
Display More
I increased the "MILLI_SLEEP_TO_EMULATE_COMPUTATIONAL_EFFORT" to let the controller reach to the given destination. Yet no change is observed. I also increased the values
aSmartServoMotion.setJointAccelerationRel(1.0);
aSmartServoMotion.setJointVelocityRel(1.0);
but not special improvement is seen.
WHY?
Thanks