nbfigueroa / franka_interactive_controllers

Control interface built on top of franka_ros that allows controlling the franka robot arm in several joint and Cartesian space impedance control schemes for interactive, safe and reactive (mostly DS-based) motion planning and learning.
MIT License
60 stars 15 forks source link

franka_interactive_controllers

Control interface built on top of franka_ros that allows to control the franka robot arm in several joint and Cartesian space impedance control schemes for interactive, safe and reactive (mostly DS-based) motion planning and learning. This low-level control interface is used and developed by/for Prof. Nadia Figueroa and her collaborators and students. Initially developed at MIT in the Interactive Robotics Group continued development at the University of Pennsylvania.


Installation

Besides franka_ros and by consequence libfranka this package depends on several other code repositories that are robot-agnostic and useful for control and learning of motion policies from demonstrations.

To install this repo and all its dependencies do the following steps:


Instructions

We include a list of instructions for using the franka panda arm with this controller package:

Usage

Following we detail instructions on how to bringup the controllers and their functionalities:

Main Robot Launch

To bring up the standalone robot with franka_ros without any specific controller (useful for testing -- can be included in your custom launch file):

roslaunch franka_interactive_controllers franka_interactive_bringup.launch 

This will load all franka_ros (franka_control, franka_gripper, etc.) functionalities + gripper GUI controller + configured rviz settings.

Robot Controllers

Joint Gravity Compensation

To load the joint gravity compensation controller launch the following:

roslaunch franka_interactive_controllers joint_gravity_compensation_controller.launch

NOTE: If you run this script and the robot moves by itself, that means that your external_tool_compensation forces are incorrect. See external_tool_compensation instructions to correct it.

Kinesthetic Teaching/Recording Pipeline

You can launch the joint gravity compensation controller together with data recording nodes from my easy-kinesthetic-teaching repository latest-franka branch.

roslaunch franka_interactive_controllers franka_kinesthetic_teaching.launch

If you installed and compiled everything correctly you should see the following windows on your screen:

This will run scripts and nodes that will allow you to:

See Kinesthetic Teaching/Recording instructions for definitions and usage.

Cartesian Impedance Controller with Pose Command

To load a cartesian impedance controller with pose command (a PD control law with position error tracking; i.e., stiffness control and velocity damping) launch the following:

roslaunch franka_interactive_controllers cartesian_pose_impedance_controller.launch

This launch file will load a cartesian impedance controller that:

Cartesian Impedance Controller with Twist Command

To load a cartesian impedance controller with twist command (a PD control law with position and velocity error tracking) launch the following:

roslaunch franka_interactive_controllers cartesian_twist_impedance_controller.launch

This launch file will load a cartesian impedance controller that:

DS-based Passive Cartesian Impedance Controller

To fill...

Joint Impedance Control with Position Command

To fill...

Joint Impedance Control with Velocity Command

To fill...


Contact

Maintainer: Nadia Figueroa (nadiafig @ seas dot upenn edu)
Code Contributions by: Bilkit Githinji, Shen Li.

Licenses

Please note that the code for some of the controllers in this repository is derived from franka_ros, specifically the franka_example_controllers package which is licenced under Apache 2.0. The remaining code in the repository is licensed under an MIT license (see LICENSE for details).