Lynxmotion AL5D robot arm with BotBoarduino to move CDs between disc drives

My project consists of a Lynxmotion AL5D robot arm with botboarduino which will move discs between drives. Up to 16 disc optical dirves will be stacked ontop of eachother with a cd dispenser ontop and a 'finished' tray underneath. ( a total height of approx 300mm). The arm needs to move new discs into the disc drives to be burned then move the to a different drive to be read then move to the 'finished' tray. The whole thing will be programmed (as the arm cant be left plugged into a computer) and repeated once a day. I have a few ideas of how to do this but need advice on whether any would work, which is better, or any better solutions!

1.) Have sensors on each drive to detect when a.) something had ejected and b.) where the slot is. THe issue with this is then I'd have 18 sensors (the 16 drives + dispener + 'finished' tray). I have no idea if it possible to have this many sensors on the botboarduino or if id need more boards.

2.) Have a LED/ IR sensor that would detect if something had popped out and the arm would rise up until it hit something (using a force sensor/ proximity sensor) then programme it to grab that disc. The issue with this is that I dont know how the arm would know where the slot it needs to put the disc into is.

3.) Programme the arm to go up a measured distance, ie get top disc, put into read drive, wait, get disc and put into 'fnished' tray, repeat for next drive down. The issue with this is would I have to write a programme to work out the angles the servos need to rotate to get the arm to rise verticaly? Also how do I work out the repeatability of the arm? I know the servos are closed loop but im worried that if one goes out the whole thing will fail.

Any suggestions/ ideas/ similar projects that would help me would be much appreciated!