Autonomous Robotic Assembly: From Part Singulation to Precise Assembly