  The capabilities of a robot will be increased significantly by exploiting
throwing behavior. In particular, throwing will enable robots to rapidly place
the object into the target basket, located outside its feasible kinematic
space, without traveling to the desired location. In previous approaches, the
robot often learned a parameterized throwing kernel through analytical
approaches, imitation learning, or hand-coding. There are many situations in
which such approaches do not work/generalize well due to various object shapes,
heterogeneous mass distribution, and also obstacles that might be presented in
the environment. It is obvious that a method is needed to modulate the throwing
kernel through its meta parameters. In this paper, we tackle object throwing
problem through a deep reinforcement learning approach that enables robots to
precisely throw objects into moving baskets while there are obstacles
obstructing the path. To the best of our knowledge, we are the first group that
addresses throwing objects with obstacle avoidance. Such a throwing skill not
only increases the physical reachability of a robot arm but also improves the
execution time. In particular, the robot detects the pose of the target object,
basket, and obstacle at each time step, predicts the proper grasp configuration
for the target object, and then infers appropriate parameters to throw the
object into the basket. Due to safety constraints, we develop a simulation
environment in Gazebo to train the robot and then use the learned policy in
real-robot directly. To assess the performers of the proposed approach, we
perform extensive sets of experiments in both simulation and real robots in
three scenarios. Experimental results showed that the robot could precisely
throw a target object into the basket outside its kinematic range and
generalize well to new locations and objects without colliding with obstacles.
