We consider the problem of closed-loop robotic grasping and present a novel planner that uses Visual Feedback and an uncertainty-aware Adaptive Sampling strategy (VFAS) to close the loop. At each iteration, our method VFAS-Grasp builds a set of candidate grasps by generating random perturbations of a seed grasp. The candidates are then scored using a novel metric that combines a learned grasp-quality estimator, the uncertainty in the estimate, and the distance from the seed proposal to promote temporal consistency. Additionally, we present two mechanisms to improve the efficiency of our sampling strategy: We dynamically scale the sampling region size and number of samples in it based on past grasp scores. We also leverage a motion vector field estimator to shift the center of our sampling region. We demonstrate that our algorithm can run in real-time (20 Hz) and is capable of improving grasp performance for static scenes by refining the initial grasp proposal. We also show that it can enable the grasping of slow-moving objects, such as those encountered during human-to-robot handover.
Grasp a moving object from the turntable
Human-to-robot handover
Table clearing task with randomly placed random object sets
Table clearing task with (right) and without (left) VFAS-Grasp
Failure cases
The figure below shows a high-level view of our method. We require an external grasp planner (pink region) to provide an initial grasp candidate to serve as the grasp seed in our algorithm. Once the robot has navigated to a pre-grasp position for this initial proposal, we activate our control loop which updates the seed grasp continuously by finding the highest-scoring grasp in a region around the seed.
Our system relies on 4 ROS2 nodes with interfaces to different robot and camera platforms. After the initial grasp candidate is found, a ROS message /clg_trigger is published that turns the VFAS-Grasp module on. The main node /closed_loop_grasper runs iteratively and publishes the target grasp pose in /target
Inside the node /closed_loop_grasper, we use a state machine to keep track of different stages and the transitions between them. The figure below shows the state transitions after the message /clg_trigger is received.