I have a 300cm x 300cm room with a 25cm high ceiling (yes twenty five centimeters). It contains 50 small wheeled robots (about 20cm x 20cm). A central computer will orchestrate the movements of the robots, using a wireless network to send position commands to them. The robots will perform their own closed loop position control to save wireless bandwidth. The robots have 32-bit ARM microcontrollers. They have wheel position sensors, and the ability to do accurate wheel control.

Problem: The robots can't actually do this yet because they have no way to measure their position in the room.

Question: How can the robots be given the ability measure their position and orientation to an accuracy of better than ±5mm? I am looking for an accurate and robust solution, which is not affected by occlusions, and doesn't require a high power PC on each robot. Whatever sensors are necessary for localisation can easily be added to the robots. The microcontrollers can easily be changed for more powerful ones if the localisation solution demands it.

  • $\begingroup$ What kind of sensors do the robots have and what kind of computational power? $\endgroup$ Commented Aug 31, 2013 at 23:07
  • 1
    $\begingroup$ @DaemonMaker - Added that information, and tried to clarify the question. $\endgroup$ Commented Aug 31, 2013 at 23:20
  • 1
    $\begingroup$ That's a good update @Rocketmagnet but the question is still rather open ended. There are lots of tricks in the localization literature that may be available to you depending on what your robots can observe about themselves, their environment, and each other. For instance there is a lot of work related to combining the beliefs of multiple robots to increase the accuracy of any given robot's belief. This can be achieved by adding a small camera and fiducial marker to each robot and wouldn't increase the processing much. $\endgroup$ Commented Sep 1, 2013 at 0:07
  • $\begingroup$ Do occlusions block x-y line of sight, or z as well? Eg, if you have lines, lasers, or mirrors on the ceiling, will robots usually be able to see them? $\endgroup$ Commented Sep 1, 2013 at 0:11
  • $\begingroup$ @jwpat7 - Since the ceiling is so low and the robots practically touch it, there's basically never a line of sight in the Z direction. $\endgroup$ Commented Sep 1, 2013 at 8:10

4 Answers 4


Some ideas off the top of my head... Generally you can either have each robot sense it's own position or have some sort of system find the robots and send them information about their position (or a combination). Possibly using other robot positions to locate yourself is another option if they can communicate. You could also combine sensor information from the robots and other sources.


You can encode either absolute position or relative position on the floor or ceiling. A sensor on the robot can look at those. A sensor like the one in your optical mouse can get relative motion off most surfaces even without any pattern. There were older style mice that used a patterned grid.

You could have two (or more) cameras on every robot looking at different directions, if the walls of the room have the right kind of pattern you could determine your location based on the images. A spinning camera is another option. Obstruction of the camera by other robots may be a concern.

A sensor array or camera in the floor or ceiling could locate the robots and then you can send the robots their location.

Some sort of spinning optical sensor that can locate the direction of an optical beacon (e.g. a LED).


You could have a few beacons around emitting ultrasound chirps. If they are all synchronized (e.g. fixed delay between them) then given their location you could use a time of flight calculation to determine the position of the robot. Many years ago I've worked with an ultrasound digitizer that was accurate to about a mm over a distance of about a meter so it seems in the ballpark. Depending on the shape of your robot and the configuration of the swarm reflections and obstructions may or may not be a problem. You would need to experiment but my gut feeling is that with enough beacons you could good performance.

Ultrasound range finders on every robot. (spinning?) Could map the distance to other robots or the walls.

If any of these sound interesting I can try develop those ideas a little further.

  • $\begingroup$ I like the ultrasound method. I wonder if I could send it through the floor so that it could travel without being disturbed or reflected by the swarm. $\endgroup$ Commented Sep 4, 2013 at 11:01
  • $\begingroup$ @Rocketmagnet: You could send it through the floor. The problem is properly coupling the transducer which is usually done with gel. Would probably be kind of messy for your application. Without the right coupling the ultrasound would simply bounce off the surface. Perhaps the wheels of your robot could do the trick. $\endgroup$
    – Guy Sirton
    Commented Sep 5, 2013 at 21:15
  • $\begingroup$ @GuySirton I want to implement detection of ultrasound chirps from a device that are emitted from another device. I am struggling to do this because all the components I see available are range-finders which emit and detect the echo. They output the range and it is difficult to separate them into emit and receive parts. I need to send the signals through air. Any pointers or suggestions? Thanks! $\endgroup$ Commented Jul 15, 2014 at 0:04
  • $\begingroup$ @necromancer you should be able to buy transmitters/receivers e.g. see this digikey.ca/product-detail/en/MA40S4R/490-7706-ND/4358146 and more in the same category... $\endgroup$
    – Guy Sirton
    Commented Jul 19, 2014 at 6:01
  • $\begingroup$ @GuySirton thank you very much. a big help! $\endgroup$ Commented Jul 19, 2014 at 10:42

If the ceiling is a flat surface that is visible from the tops of the robots, you could place marker stripes (or some other known fiducial pattern) on the ceiling at regular intervals. The stripes might be white or black lines or narrow reflective tape, detected using photosensors on top of robots.

If wheel position sensors and accurate wheel control are good enough to maintain desired location data accuracy when a robot has moved no further than distance d from an accurately known position, the stripes (which might be white stripes, black stripes, or narrow reflective tape) might need to be placed no further than about d/√2 apart.

The motion-planning software probably would need to adapt. If a robot's position is consistently wrong when it crosses a stripe, adjust its ratio of wheel encoder counts to distance traveled; or if a stripe would be seen if a travel leg were just slightly longer, extend the leg to cross the stripe; or move to calibrate against several stripes just before any position-sensitive operations; or perform position-sensitive operations at a stripes crossing-point.

There is quite a variety of fiducial patterns possible. Orthogonal stripes laid out parallel to x and y axes are probably simplest to create and work with. But bulls-eyes, cross-hairs, wedges, bar codes, and other patterns as well are worth considering.

  • $\begingroup$ +1 Even though I read your answer before posting mine, I still posted pretty much the same answer about fiducials ... I blame lack of sleep. $\endgroup$
    – ThomasH
    Commented Sep 3, 2013 at 18:36
  • $\begingroup$ @ThomasH, thanks! I'm suprised the OP hasn't voted up any of the answers, all of which provide some useful info. $\endgroup$ Commented Sep 3, 2013 at 18:42

The low distance between the top of the robot and the ceiling really restricts your options. It seems pretty much impossible to get a centralised overview of the whole room and work from there.

I'm not sure what kind of 'room' you are talking about and how much you can instrument it, but it might be an option to place markers on the ceiling rather than the robots. Given the short distance, you'd have to pretty much completely fill the ceiling with tiny markers that can be completely observed by an upwards pointing camera on every single robot, though you might be able to position this camera lower on the robot, say between the front and back wheels on either side, to give you a wider viewing angle. But the biggest challenge would be to print enough distinct markers to instrument the whole ceiling.

Alternatively, it might be conceivable to instrument the floor with lots of RFID tags, provided you can find readers that have a small enough range (AFAIK, RFID readers will only tell you that a certain tag is in range, not where it is). The Phidgets RFID reader already has a range of approx. 3 inches, so unless you localise by seeing which group of tags you can observe (if it's possible to observe multiple tags at the same time - can you tell I have no actual working experience with RFID?), you'd have to experiment with getting smaller tags and 'shielding' them to a degree from the reader, so that they can't be read other than at very close range.

All in all it seems a tough but very interesting challenge. If it's for work, I assume you can't tell us the purpose of the project, but it sure sounds intriguing :)

  • $\begingroup$ Thanks for the answer. Frustratingly, there's so little I can disclose about the project that it's made it very difficult to ask the question. $\endgroup$ Commented Sep 4, 2013 at 11:02
  • $\begingroup$ I was thinking the same thing. Swimming pools have the colored flags above and lines below to indicate to the swimmer his location in in his lane in the pool. Same concept but 2 axis instead of one. $\endgroup$
    – zkent
    Commented Apr 4, 2014 at 13:25

If a vicon system is out of the question, then you can use a system of calibrated cameras to read markers placed on top of the robots.

  1. Place the best cameras you can get around the environment. I use $20 web cams from amazon.com
  2. Use OpenCV's calibration tools to calibrate the cameras.
  3. Place markers on top of the robots
  4. The cameras know their relative positions in the environment, so by triangulating the marker positions, they can accurately output the position and orientation of the markers.

Sort of like what these researchers did in this paper (see page 16)

However, as others have noted, if the ceiling is very low, you won't have a good line of sight to the top of the robots, and you'll have a difficult time using this method.

  • $\begingroup$ Thanks for the answer. The problem with anything like Vicon is the massive amount of occlusion that happens when you have 50 robots crowding a room with such a low ceiling. I think that makes this kind of solution impossible. $\endgroup$ Commented Sep 1, 2013 at 17:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.