justagist / franka_ros_interface

A ROS/Python API for controlling and managing the Franka Emika Panda robot (real and simulated).
http://justagist.github.io/franka_ros_interface
Apache License 2.0
171 stars 59 forks source link

Integrating cartesian impedance controller #5

Closed danfeiX closed 4 years ago

danfeiX commented 4 years ago

First of all, thank you for sharing this awesome library! It's really helpful.

I'm wondering if you have any plan to integrate the cartesian impedance controller (e.g., the example controller in the franka_ros repo)? Or at least could you list the steps one should take to integrate it into the controller manager? Thank you so much!

justagist commented 4 years ago

Thanks! Glad to hear you found the library useful.

I am not planning to include the cartesian impedance controller into the library as cartesian impedance controllers are usually implemented by computing the desired joint torques and commanding the joints of the robot using torque control. This is also what is being done in the example controller of franka_ros as well: they calculate the desired joint torques and command the robot using these joint torques. If you want to implement cartesian impedance, you can still manually compute the joint torques for achieving the desired compliance behaviour and command the robot using the provided torque controller. Cartesian pose and velocity controllers can however be implemented using libfranka's cartesian handles if required. But, I don't have immediate plans to add them to the library, mainly because the corresponding joint space commands can be computed for joint-space control. Including cartesian controllers will require modifying the controller manager to also listen to a '/cartesian_commands' topic, or alternatively use write a separate controller manager for cartesian controllers.