Home

Awesome

Franka ROS Interface Release DOI

Codacy Badge Build Status

A ROS interface library for the Franka Emika Panda robot, extending the franka-ros to expose more information about the robot, and providing low-level control of the robot using ROS and Python API.

Requires franka_ros version 0.6.0. franka_ros_version

Provides utilites for controlling and managing the Franka Emika Panda robot (real and simulated. Contains exposed controllers for the robot (joint position, velocity, torque), interfaces for the gripper, controller manager, coordinate frames interface, etc. Also provides utilities to control the robot using MoveIt! and ROS Trajectory Action & ActionClient. This package also provides almost complete sim-to-real / real-to-sim transfer of code with the panda_simulator package.

Documentation Page: https://justagist.github.io/franka_ros_interface

Features

Demo Using PandaRobot API and Panda Simulator

vid Watch video here

vid Watch video here

vid Watch video here

Installation

ROS Kinetic / Melodic: Build Status

NOTE: Tested on Ubuntu 18.04 with ROS Melodic with franka_ros version 0.6.0 (release). Version for ROS Kinetic is not maintained anymore. The latest updates to the package may not be compatible with Kinetic.

Dependencies

Once the above dependencies are installed, the package can be installed using catkin:

   cd <catkin_ws>
   git clone https://github.com/justagist/franka_ros_interface src/franka_ros_interface
   catkin build franka_ros_interface # or catkin_make
   source devel/setup.bash

After building the package:

Usage

The 'driver' node can be started by running (can only be used if run in 'master' environment - see Environments section below):

    roslaunch franka_interface interface.launch # (use argument load_gripper:=false for starting without gripper)

Available keyword arguments for launch file:

This starts the robot controllers and drivers to expose a variety of ROS topics and services for communicating with and controlling the robot. The robot's measurements and controllers can be accessed using ROS topics and services (see below too find out about some of the available topics and services), or using the provided Python API (also see PandaRobot).

The franka.sh environments

Once the values are correctly modified in the franka.sh file, different environments can be set for controlling the robot by sourcing this file.

Basic usage of the API is shown in the test_robot.py example file. See documentation for all available methods and functionalities.

Some useful ROS topics

Published Topics:
ROS TopicData
/franka_ros_interface/custom_franka_state_controller/robot_stategravity, coriolis, jacobian, cartesian velocity, etc.
/franka_ros_interface/custom_franka_state_controller/tip_stateend-effector pose, wrench, etc.
/franka_ros_interface/joint_statesjoint positions, velocities, efforts
/franka_ros_interface/franka_gripper/joint_statesjoint positions, velocities, efforts of gripper joints
Subscribed Topics:
ROS TopicData
/franka_ros_interface/motion_controller/arm/joint_commandscommand the robot using the currently active controller
/franka_ros_interface/franka_gripper/[move/grasp/stop/homing](action msg) command the joints of the gripper

Other topics for changing the controller gains (also dynamically configurable), command timeout, etc. are also available.

ROS Services:

Controller manager service can be used to switch between all available controllers (joint position, velocity, effort). Gripper joints can be controlled using the ROS ActionClient. Other services for changing coordinate frames, adding gripper load configuration, etc. are also available.

Python API

Most of the above services and topics are wrapped using simple Python classes or utility functions, providing more control and simplicity. This includes direct control of the robot and gripper using the provided controllers. Refer README files in individual subpackages.

Related Packages

License

License

Copyright (c) 2019-2020, Saif Sidhik

If you use this software, please cite it using DOI.