Pushing is defined by choosing a direction and random radius with respect to the object center and executing the motion. To ensure that objects stay in the workspace of the robot, objects are pushed either toward the center of mass of other objects in the clutter or the center of the robot workspace. For grasping, a set of diverse grasps for each object is computed offline, where we use 100 parallel-jaw grasps sampled from the robust grasps of [1]} (see Fig. REF  for examples). During online execution, using the estimated pose of the object, the pre-computed grasps are transformed from object to camera coordinates. Then the robot selects any grasp that is kinematically feasible and collision-free with other objects using the RRT\(^*\)  planning algorithm in MoveIt! [2]}. After grasping the object, the robot first rotates its gripper to change the orientation of the object. Then a random placement location is chosen within the robot workspace and the robot places the object.
