Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

⚠️ Compliant control modes feedback cycle #236

Closed
mhubii opened this issue Dec 14, 2024 · 3 comments
Closed

⚠️ Compliant control modes feedback cycle #236

mhubii opened this issue Dec 14, 2024 · 3 comments
Labels
bug Something isn't working

Comments

@mhubii
Copy link
Member

mhubii commented Dec 14, 2024

As reported in #232, the robot drifts / executes strange motions / disconnects. The source for this error is currently unclear. This behavior can be observed in humble-2.1.2 and humble-2.2.0.

To replicate:

  • Run robot in CARTESIAN_IMPEDANCE_CONTOL mode
  • Command robot with WRENCH
  • Run driver with ros2 launch lbr_bringup hardware.launch.py model:=med7 ctrl:=lbr_wrench_command_controller
  • Set open_loop: false
@mhubii mhubii added the bug Something isn't working label Dec 14, 2024
@mhubii
Copy link
Member Author

mhubii commented Dec 14, 2024

What likely happens is the following:

  • Robot is compliant under wrench / torque control
  • Measured joint position is fed back as new target when open_loop: false
  • Robot enters a feedback cycle

This issue also relates to #226.

Further details (edit):

If any of the lbr_ros2_control::SystemInterface provided commands are Nan, the commands get permanently initialized with the measured joint position (leading to the feedback loop):

When no one sends commands yet, the commands remain Nan:

Hi @Hydran00, @anselmo-parnada. The issue is explained above. Thank you again for reporting. Until this is fixed, I would recommend not to use compliant control modes in combination with this stack.

@mhubii mhubii changed the title Wrench / Impedance control mode drift Wrench / impedance control mode feedback cycle Dec 14, 2024
@mhubii mhubii changed the title Wrench / impedance control mode feedback cycle ⚠️ Compliant control modes feedback cycle Dec 14, 2024
@mhubii mhubii closed this as completed Dec 14, 2024
github-actions bot pushed a commit that referenced this issue Dec 14, 2024
@mhubii
Copy link
Member Author

mhubii commented Dec 14, 2024

Still not fully fixed as control mode not always detected correctly (somehow the correct control mode only becomes available in COMMANDING_ACTIVE state, this might be KUKAs fault)...

if (control_mode == KUKA::FRI::EControlMode::JOINT_IMP_CONTROL_MODE ||

As indicated also in their default demos:

$ ./LBRJointSineOverlayApp 
LBRJointSineOverlayClient initialized:
	joint mask: 0x8
	frequency (Hz): 0.250000
	amplitude (rad): 0.040000
	filterCoeff: 0.990000
LBRiiwaClient state changed from 0 to 1
control mode: 0 reminder: POSITION_CONTROL_MODE = 0, CART_IMP_CONTROL_MODE = 1, JOINT_IMP_CONTROL_MODE = 2
LBRiiwaClient state changed from 1 to 2
control mode: 0 reminder: POSITION_CONTROL_MODE = 0, CART_IMP_CONTROL_MODE = 1, JOINT_IMP_CONTROL_MODE = 2
LBRiiwaClient state changed from 2 to 3
control mode: 0 reminder: POSITION_CONTROL_MODE = 0, CART_IMP_CONTROL_MODE = 1, JOINT_IMP_CONTROL_MODE = 2
LBRiiwaClient state changed from 3 to 4
control mode: 0 reminder: POSITION_CONTROL_MODE = 0, CART_IMP_CONTROL_MODE = 1, JOINT_IMP_CONTROL_MODE = 2
LBRiiwaClient state changed from 4 to 2
control mode: 0 reminder: POSITION_CONTROL_MODE = 0, CART_IMP_CONTROL_MODE = 1, JOINT_IMP_CONTROL_MODE = 2
LBRiiwaClient state changed from 2 to 0
control mode: 0 reminder: POSITION_CONTROL_MODE = 0, CART_IMP_CONTROL_MODE = 1, JOINT_IMP_CONTROL_MODE = 2
martin@rvim-sie-stack:/tmp/fri/build$ ^C
$ ./LBRWrenchSineOverlayApp 
Enter LBRWrenchSineOverlay Client Application
LBRWrenchSineOverlayClient initialized:
	frequency (Hz):  X = 0.250000, Y = 0.250000
	amplitude (N):   X = 5.000000, Y = 5.000000
LBRiiwaClient state changed from 0 to 1
control mode: 0 reminder: POSITION_CONTROL_MODE = 0, CART_IMP_CONTROL_MODE = 1, JOINT_IMP_CONTROL_MODE = 2
LBRiiwaClient state changed from 1 to 2
control mode: 0 reminder: POSITION_CONTROL_MODE = 0, CART_IMP_CONTROL_MODE = 1, JOINT_IMP_CONTROL_MODE = 2
LBRiiwaClient state changed from 2 to 3
control mode: 0 reminder: POSITION_CONTROL_MODE = 0, CART_IMP_CONTROL_MODE = 1, JOINT_IMP_CONTROL_MODE = 2
LBRiiwaClient state changed from 3 to 4
control mode: 1 reminder: POSITION_CONTROL_MODE = 0, CART_IMP_CONTROL_MODE = 1, JOINT_IMP_CONTROL_MODE = 2

@mhubii mhubii reopened this Dec 14, 2024
github-actions bot pushed a commit that referenced this issue Dec 14, 2024
mhubii added a commit that referenced this issue Dec 14, 2024
control mode only available in commanding active (#236)
@mhubii
Copy link
Member Author

mhubii commented Dec 14, 2024

this issue is now fixed on the humble and rolling branches

@mhubii mhubii closed this as completed Dec 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant