small scale positioning system
You might try making ultrasonic transceivers. A master burst is sent out (let's say) 20 times per second. Each robot has a receiver and a transmitter. The first unit, upon receiving a burst sends out a return burst, then stops listening for 40 msec. The second unit, upon receiving a burst waits 10 msec, then sends out a burst and stops listening for 30 msec, etc. This prevents the mobile units from responding to each others' return bursts.

Or, if you want to be a little trickier electronically, use mobile transmitters which transmit at different ultrasonic frequencies, although this will get into more precision than you might be willing to deal with.

Locate receivers and transmitters on top of the units so they don't get blocked, and shape your mobile transmitters and receivers so as to produce an omnidirectional pattern. Use 2 or 3 fixed receivers to get the timing of the returns and calculate position. Note that blockage isn't as big a deal as it is with a simple echo-location scheme, since the receivers are listening for direct transmission rather than reflection. There will be a certain fixed delay for each mobile unit between reception and transmission, but you ought to be able to calibrate that out.