PR2 / pr2_controllers

The controllers that run in realtime on the PR2 and supporting packages.
46 stars 34 forks source link

JTCartesianController: Incorrect nullspace projector computation. (ros ticket #5191) #361

Closed ahendrix closed 11 years ago

ahendrix commented 11 years ago

The JTCartesianController of robot_mechanism_controllers (trunk, as of r54402), computes the nullspace projector using the damped least squares (DLS) inverse, instead of a regular least squares (LS) pseudoinverse.

It's OK to use a DLS for the differential IK part Jinv * x_dot, but not for computing the projector. The thing with the DLS inverse is that it does not satisfy all properties of a generalized inverse, in particular J * Jinv_dls * J != J, the result being the secondary task interfering with the primary one (if their goals are conflicting).

I guess if damping is low, you can't visually see the tasks fighting each other (I'm not a user of this controller, so I haven't tried it out), and the qualitative result is OK. Still, the issue is there, and it deserves a heads-up.

trac data:

ahendrix commented 11 years ago

[sglaser] Thanks for the bug report!

You're right that the DLS inverse doesn't do the correct thing here. I'm going to leave it in place for now because in practice it works relatively well.