Sunday, November 11, 2012

Does the Roomba respect the Laws of Robotics?

Issaac Asimov's 3 Laws of Robotics state the following:

1. "A robot may not injure a human being or, through inaction, allow a human being to come to harm."

2. "A robot must obey the orders given to it by human beings, except where such orders would conflict with the First Law."

3. "A robot must protect its own existence as long as such protection does not conflict with the First or Second Laws."
 
Let's look at the behavior of the Roomba to assess if it complies with these laws.

First Law

The Roomba has a front bumper and intelligence that allows it to gently come in contact with an object or a living thing without braking or injuring it during its clean cycle.  Hence, it may not injure a human being.  As far as not allowing a human being to come to harm, there's little a Roomba can do.  We're just not there yet.

Second Law

The Roomba obeys orders giving by its master whether it's a clean, spot or dock command.

Third Law

The Roomba is equipped with front cliff sensors that prevent it from falling down stairs.  Unfortunately, it does not have back cliff sensors.  However, it is programmed in such a way that it goes backward only on very short distances which prevents it from falling anyway.
 
Roomba Modes

The Roomba operates in 3 modes: passive, safe and full.

In passive mode, the Roomba controls itself.  This is the Roomba default mode required for clean, spot and dock commands.

In safe mode, the Roomba accepts commands to control its actuators allowing it to move forward and backward, rotate clockwise and counterclockwise, start and stop its brushes, turn its lights on and off, and play music.  This mode still protects the Roomba from falling off stairs when driving towards them in a forward motion.  However, since the Roomba does not have back cliff sensors, it can fall off stairs when driving in a backward motion.

In full mode, the mechanisms preventing the Roomba to hurt itself are turned off.  Hence, the Roomba can fall off stairs even when driving towards then in a forward motion.

Conclusion

If you're ordering your Roomba exclusively by pressing buttons on its back (clean, spot, dock), it will operate in passive mode exclusively.  So no need to worry.
 
If you're programming your Roomba, there are 2 things you should avoid if you want to keep it healthy:

1. Do not use the full mode.

2. Do not make it drive backward towards stairs even in safe mode.

By the way, even at full speed (500 mm/sec), the Roomba stops before falling off stairs in safe mode.  We've tested it.
 
So, as long as you use your Roomba in passive mode only, it will respect the 3 Laws of Robotics.  If you program it through its serial interface, beware of the constraints identified here.
 
All our apps for Roomba operate in passive and safe mode exclusively.
 
To know more about our robot apps for Roomba, visit us at www.roboticapp.com.
 

How to use Rootooth with Roomba 500 series and up

The Rootooth is manufactured to work at a default baud rate of 57600 bits per second which was the baud rate of the first Roomba models that it could be used with (400 series).  All newer series (500 and up) have a default baud rate of 115200 bits per second.

So the question becomes: How can I synchronize the baud rates of both devices to make them work together?

Well, you have to go with one of two options:
1. You can raise the baud rate of the Rootooth from 57600 to 115200 bits per second.
2. You can lower the baud rate of the Roomba from 115200 to 57600 bits per second.

Both options work.  However, based on our experience developing applications for the Roomba, we recommend changing the baud rate of the robot.

All our apps include capabilities to adjust the baud rate of the Rootooth to the proper setting based on the robot model being used.

To know more about our robot apps for Roomba, visit us at www.roboticapp.com.