The simplest option to do this will be to use a stepper motor. Get yourself some cheap 3d printer stepper motors, stepper drivers, something like an arduino to control them (or maybe multiple Arduinos).
Basically the steppers take a "step" signal which turns them 1/200th of a turn in either direction. You can count the steps to keep track of where they are. As long as you don't overload the motor it will keep position perfectly over time.
Now for the downsides: the steppers only "step up" and "step down", so they won't know where they are if you power-cycle the system. To fix that you'll need to create some kind of switch that triggers when the lamp is retracted all the way. You can use this to "home" the lamps at startup. These are typically called limit switches.
The other downside is that the steppers will not hold their position when powered off, so the steppers will have to be constantly energized. This is sort of wasteful, but it's only going to add up do a 10-20 watts for your whole system so you might find that to be acceptable.