Hi,
did you get an answer to your question?
Or found a solution yourself?
I am quite interested in the topic!
Hi,
did you get an answer to your question?
Or found a solution yourself?
I am quite interested in the topic!
Hi,
I am controlling a KUKA LBR iiwa 14 R820 through FRI in joint impedance control.
Since the impedance parameters are hard-coded on the server side I was wondering how to change stiffness and damping on-line from the Client side.
I came across this bit of code in this forum:
JointImpedanceControlMode ctrlMode = new JointImpedanceControlMode(200, 200, 200, 200, 200, 200, 200);
ctrlMode.setDampingForAllJoints(0.7);
PositionHold posHold = new PositionHold(ctrlMode, -1, null);
/* Keep the motionContainer for later cancel */
IMotionContainer motionContainer=lbr.moveAsync(posHold.addMotionOverlay(jointOverlay));
while (running) {
/* Wait on e.g. an external Event to Change the Parameters */
ctrlMode=blockingWaitOnChangeRequestForStiffnessParameters();
/* Exchange the Parameters on the positionHold Motion Command */
posHold.setMode();
/* send to the realtime System */
IMotionContainer motionContainerNew=lbr.moveAsync(posHold.addMotionOverlay(jointOverlay));
/* Kill the old Motion - from that Point on, the new CTRL-Setting is actively executed */
motionContainer.cancel();
motionContainer=motionContainerNew;
}
Display More
But I do not understand how "blockingWaitOnChangeRequestForStiffnessParameters" is implemented.
In particular, I don't understand how impedance paramters are sent through FRI since the data that can be exchanged is quite limited (e.g. https://github.com/hariharan82/KU…friLBRCommand.h) - only joint pos, wrench at endeffector or joint torques.
Are you actually sending the parameters using the 10 IO ports that seems to be configurable from WorkVisual?
Am I missing something here?
Thanks for your help!
Hi both,
I recently working with KUKA iiwa and I am currently interfacing with it through FRI.
If I understood correctly, from the client side I can acquire and send information to the robot thanks to LBRState and LBRCommand classes part of LBRClient.
I would love to switch control online (without changing robot app on the server side) but I do not understand how can I send additional information to the robot through FRI.
LBRCommand allow to send joint position (setJointPosition) and/or torque (setTorque), or a target wrench at the end-effector, according to the current control running on the Server.
How do you actually send more data?
e.g. the "TorqueOrWrench" variable in line 26 of this solution example?
Cheers!