Open jacknlliu opened 6 years ago
It seems that effect of cartesian pose command is less than the joint position command in KUKA iiwa robot controller.
We can test something related with this.
setMinimumTrajectoryExecutionTime
and setTimeoutAfterGoalReach
. We hope using a dynamic configuration for this.We use the TimeToDestinationService
to get the time about the excutation, but the result seems not correct.
This caused that we can't use the cartesian pose command which needs determined time.
We need a script to test it.
Depending on our iiwa_stack version, when switching between different control modes, the setTimeoutAfterGoalReach
will be called and then the controller will last such time to work.
But if you just update the parameters of the current control mode, it will not work, because of the current iiwa_stack implement. This will not call the switchSmartServoMotion()
which creates a new motion with the TimeoutAfterGoalReach
again.
More details, see iiwa_stack #120.
This is related with the safe operation in impedance mode and switching control mode. (The Law III of Asimov)
Possible solutions:
import static com.kuka.roboticsAPI.motionModel.BasicMotions.positionHold;
// or
import com.kuka.roboticsAPI.motionModel.PositionHold;
In iiwa_stack
ROSMonitor.java, we know that we should update the commanded position to the current robot position.
/*
* Continuously updating the commanded position to the current robot
* position If this is not done, when setting the stiffness back to
* a high value the robot will go back to that position at full
* speed: do not try that at home!!
*/
motion.getRuntime().setDestination(robot.getCurrentJointPosition());
Temporay Solution: Please see https://github.com/jacknlliu/iiwa_stack/commit/dd35ef91c64c72fcdb08ee9798a46629caf424aa
FRI
interface, but iiwa_stack uses the SmartServo
interface. catkinize
the grl modules what we need
Reference