Robot Learning of Shifting Objects for Grasping in Cluttered Environments
GPL-3.0 License
This repository contains additional information for the paper Robot Learning of Shifting Objects for Grasping in Cluttered Environments accepted for IROS 2019 in Macau. This code lets a robot learn how to grasp objects out of a bin by itself. As traditional approached oftentimes need the 3d model of the object, the robot in this project learns grasping in a self-supervised manner by try and error. Our focus relies on the data-efficiency of the learning process: Currently, it needs around 20000 grasp and around 3000 shift attempts to reliably empty a bin with a grasp rate of over 95%. Shifting is essential for bin picking, as it allows the robot to empty a bin completely.
Our overall setup of a Franka Panda robotic arm including the standard force-feedback gripper, an Ensenso stereo camera, custom 3D-printed gripper jaws with anti-slip tape, and two industrial bins with objects. The robot learns first grasping and then shifting objects to explicitly increase grasp success. The first sections give a short introduction into the source code. Later, we present more information about the paper, i.a. a more detailed evaluation.
The overall structure is as follows:
.bashrc
: export PYTHONPATH=$PYTHONPATH:$HOME/Documents/bin_picking/scripts
This project is a ROS package with launch files and a package.xml. The ROS node /move_group is set to respawn=true. This enables to call rosnode kill /move_group to restart it.
After installing all dependencies (see next section), run both roslaunch bin_picking moveit.launch
and roslaunch bin_picking bin_picking.launch
. For recording, check the database server and the corresponding web interface.
models
directory.cad-models
directoryFor the robotic hardware, make sure to load launch/gripper-config.json
as the Franka end-effector configuration. Currently, following dependencies need to be installed: