feat: decouple translation from rotation in admittance MSD integration#57
feat: decouple translation from rotation in admittance MSD integration#57Nabil-Miri wants to merge 3 commits into
Conversation
|
Hey! Thanks for the contribution. Yes the change makes sense, coupled translation and rotation can cause "unnatural" motions when only translating or rotating. Maybe to keep everything backwards compatible (because the previous code was not "wrong") we could add a parameter to choose the mode. What do you thunk about it? |
|
Hi Daniel, I'm not deeply familiar with the exp6 internals, but as I understand it: when ω = 0 there is no difference between the two, and its only under rotation that exp6 introduces the extra translational component. For backwards compatibility, adding a param is a nice idea. Regarding the default param, would it make sense to default to the new (decoupled) behavior and keep the old coupled exp6 as an opt-in flag? Otherwise new users would still face this issue unless they explicitly enable it. What do you think is more suitable? |
|
Yes lets make the default the decoupled version and keep it as a minor release:) |
|
I added the new param and changed the PR name from |
Fix: SE(3) integration bug causing arc swing on pure rotation commands
Problem
Hello, commanding a pure end effector rotation using the CRISP Cartesian Admittance Controller caused the robot to swing sideways in an arc and return, rather than rotating in place. No translation was commanded, yet the EE position was being displaced.
Root cause
I am not very familiar with
exp6but the change fixed the problem. The admittance integration step updated the internal target pose withexp6and a left multiplication:pinocchio::SE3 delta = pinocchio::exp6(pinocchio::Motion(inner_motion_ * dt)); inner_SE3_ = delta * inner_SE3_;Left multiplying applies
deltain the world frame. For a pure angular velocity,exp6produces a rotationR_deltawith zero translation, so the existing target position is rotated about the base origin:Fix
Decouple the translation and rotation integration, matching the physically independent channels of the admittance MSD:
exp3(Rodrigues), which spins the orientation in place and never touches the position.Testing
Validated on a UR5e.
(Will add the videos soon)
BTW @domrachev03 Did you face such problem ?