Justin the robot can catch a ball. There is nothing magical about this—Justin has cameras that let it see where the ball is, and a computer program that keeps track of where the ball is going. The computer program also tells Justin how to move its hand so that it can catch the ball in time.  
Justin is a robot developed at the German Aerospace Center (Deutsches Zentrum für Luft- und Raumfahrt—DLR). It was designed to help out with tasks in space and at home. Its humanoid shape, two arms, and agile, four-fingered hands make it an ideal robot to manipulate everyday objects. It is also an ideal robot to work in environments, and with tools, that were meant for humans.
  • Justin knows the position of the ball thanks to two cameras that let the robot see in three dimensions, like our eyes do.  


  • A computer program analyzes the images from the cameras and determines the position of anything that has a circular shape, like the ball.


  • Justin uses the images from the cameras to estimate, or guess, where the ball is going. Justin repeats this 25 times each second.
  • A second program on a powerful external computer predicts the future trajectory of the ball and estimates the best arm and hand motions to allow Justin to catch it.
  • A third program is responsible for sending commands to the robot’s motors to tell them exactly how much to move in order to catch the ball.
  • All the programs are written in a language (code) called C. The code is then translated into 0s and 1s that the machine can understand.
  • Nearly 40 computer processors are needed for Justin to catch the ball, and this is by no means an easy task!
  • It takes less than one second for Justin to see the ball coming, run the computer program, and catch the ball in the air. 
  • Justin’s program tells it how to solve the problem of catching a ball. Since each throw is a bit different, Justin needs to find a new solution every time.