Jakob Ƙstergaard Hegelund

Tech stuff of all kinds

Making a roomba negotiate a doorsill


Having just become a Roomba owner, I was faced with the challenge of wanting the robot to negotiate a slightly large doorsill in a narrow doorway, as the robot should move form the livingroom to adjacent rooms. The manual says that you should lave at least 1 meter of open space from the front of the lighthouse - but this is difficult when the doorway itself is less than one meter. Second, the doorsill is a two-step construction with a 2cm climb followed a few centimeters later by a 1cm climb.

By default, the roomba could not reliably pass the sill. It frequently got stuck on the 2cm climb, and it bumped into the side of the door frame opposing the lighthouse.

Solution 1: Smooth the climb

To allow the robot to better negotiate the 2cm climb, smoothed it out a bit with a ramp. This is a proof of concept - I will make one that fits better and hopefully matches the colour of the floor or sill, but I needed a prototype quickly.

Solution 2: Traverse closer to lighthouse

The robot cannot measure its distance to the lighthouse as such (it has no laser based range finder, sonar or other means of establishing distance aside from bumping into things or sensing "large objects approaching"), so how does it decide which distance to keep to the lighthouse? I could not find any documentation on this, so my best guess was that the lighthouse is projecting an infrared beam from the top, at a downward angle towards the opposing side of the door frame. The robot will then approach when the beam has the right height, relative to the floor space of the robot. See, this even worsens my problem - not only is the door frame too narrow already, the lighthouse sits elevated on the doorsill while the robot is 3 cm below on the floor, and will therefore traverse the doorsill even further away from the lighthouse (since the lighthouse is elevated, the robot needs more distance to the lighthouse for the infrared beam to reach the right height). The simple solution is to glue two rubber spacers on the two back feet of the lighthouse, so that it is tilted slightly forwards. This changes the angle of the infrared beam, and the robot will find the right height of the beam closer to the lighthouse. I have no confirmation that my theory behind this holds, but the solution works like a charm.