Tuesday, December 30, 2014

How to Fight a Robot: What have you gotten yourself into?

Earlier this year, I began building a full-sized humanoid robot, following the InMoov design, because I wanted to build a robotic sparring partner.  I wanted him to swing an eskrima stick at me, throw a punch at me, and even do some blocking drills.  I wanted to fight a robot.

Unfortunately, he sucks at fighting.  There is a very long list of necessary modifications before he could even throw a single punch that lands with impact, and not fall apart immediately.  Changing this robot is just not worth the effort at this point.  Instead, I have begun designing my own fighting robot from scratch.

The point is, robots are not very good at fighting in general.  With the help of a few key insights, a human could easily dominate a robot opponent in a fight.  You will probably never find yourself in a situation where you need to defend yourself against a robot in hand-to-hand combat, but just for fun, I will walk you (a human) through what it takes to fight a robot and win.

What Have You Gotten Yourself Into?

For the sake of this discussion, let's assume you are not up against an automated drone or tank, outfitted with flame throwers and machine guns pointed in all directions.  You are about to fight a humanoid robot.

The first thing you need to do is asses the situation and figure out as much as you can about your opponent.  Just to get you oriented, here is a great little overview of some of the more impressive robots out there today.  Is your opponent a human in an exoskeleton suit instead of a robot?  In that case, you should follow my guide to fighting someone in a powered exoskeleton suit instead.

Next, you need to figure out if you are up against a fully automated robot, controlled by its own AI, or if a human is controlling the robot from a remote location.

The Remote-Controlled Opponent

This is probably not how you would actually control a robot.

Without making any choices, or interpreting any stimuli, a typical human reaction time is around 250 milliseconds, or a quarter of a second.  When you add interpretation of a scenario and making a choice on how to respond, that time can easily surpass a half second, depending on the complexity and novelty of the situation.  If you are fighting a robot controlled by a human, not only will your opponent have the normal human reaction times, but there will be additional delays due to the intermediate robotic and communication components.

With my current setup, I can use my mouse to make my robot shake his head from side to side.  The signal goes from the mouse, to the computer, to the Arduino board, to the servo in his neck.  This process takes a half second, and all of the connections are directly wired to each other.  A physical wire tether connecting a robot to a human operator does not make for a formidable opponent, so we must assume your robot opponent will have a wireless signal delay as well.  If you want to see this delay for yourself, try a video chat with someone in the same room with you on your phone.  It can easily be a half second or longer.

Putting all of this together, it would be surprising to see a robot remotely controlled by a human with a reaction time less than a full second.  If you don't give the robot the password to connect to your wifi, it could be much worse than that.  Considering a human punch takes anywhere from 200 to 400 ms (depending on a number of factors), you should be able to throw multiple strikes before the robot even has a chance to block.  If you can keep a quick pace during the fight, and if you can stay active and move around at all times, the robot will be no challenge for you.

Another disadvantage to remotely operated robots is the very limited amount of sensory data that can be conveyed to the operator.  Peripheral vision and depth perception are right out, because anything more than a single video stream would make the delay even longer.  This means that attempts to obscure the robot's vision or step around to the side, back (or even down), outside of the operator's field of vision may be particularly effective.

The Fully Automated Opponent

Getting a beer for you is the whole reason we invented robots in the first place.

Today, we have some very smart AI for accomplishing complicated tasks.  Google is about to start testing their driverless cars, and other companies will follow soon after.  Apple's Siri and Amazon's Echo (Alexa) are both very intelligent services that can act as a personal assistant and answer complicated questions.  One thing they all lack, however, is a basic understanding of human behavior in the context of personal goals and desires.

Let's look at a simple example.  You are having a conversation with one very smart robot, and one very dumb person.  Inevitably, the conversation turns to your awesome bass fish belt buckle.  You mention that it has a bottle opener on the back, and then turn to the robot and say "Can you get me a beer?" The robot will come back with your favorite beer in an already-opened bottle, because he is a well-trained robot, but he will not understand your unspoken desire to show off your fish belt-buckle-bottle-opener.  Your dumb friend would have figured it out immediately.

At some point in the future, we may develop AI with the ability to understand emotional context, but in order to do that, we must first give the AI an "artificial empathy," with goals and desires of his own to relate to.  Once we have done that, we will have probably created a robot naturally averse to hurting humans, or at least robots who won't punch you if you cry like a little girl and beg them not to.  Until then, we will assume the robot opponent you are fighting does not have artificial empathy.

The last question we need to ask about your opponent is whether or not he defends himself.  Some robots (particularly the more resilient or hastily programmed ones) may have a fight strategy devoted entirely to direct attacks.  If your opponent is attacking without defending, you will not have much influence on the pace of the fight, and you may need to buy yourself some time by obstructing his vision or evading, but ultimately, you will have an easier time applying your robot-destroying techniques to him.

If your opponent does defend himself, you will need to use context to control the situation.  Fortunately, a robot without empathy will not understand the goals and desires you have as you fight.  You will be able to feint, confuse, draw out attacks, and test your opponent's reactions, all without him ever understanding what you are trying to accomplish (and there are too many variables in a fight to attempt to program for this explicitly).  You will have to work hard during the fight, but you will be in control, and you will be able to create perfect opportunities to apply your robot-destroying techniques.

What's Next?

There's a lot more to cover, so I've divided it up into sections.  I should post the next section soon.  If you get impatient, you can tweet at me and ask why I haven't posted it yet, and don't forget to "like" the Facebook page for my upcoming book, "Fight Like a Physicist: The Incredible Science behind Martial Arts"