The $449 ER1 Personal Robot System from Evolution Robotics is a fun way to learn about robotics. Using your laptop computer as a brain, it features video and audio recognition systems which allow you to program its behavior based on what it sees through its camera eye or what it hears through your laptop microphone. It also has a battery-powered motor that allows it to move around to do your bidding. If you get the optional $249 "Gripper Arm," the ER1 can be programmed to bring you a beer or to answer the door and see who's there. I recently got my hands on an unassembled ER1, and this is my report on building and playing with it.
Assembling the robot
The instructions say assembly time for the ER1 is one hour. That may be true for some people, but it took me most of the day. Given that the assembly instructions run a full 30 pages in the ER1 User Guide, the one hour claim seems a bit optimistic.
Of course, it's true I have five thumbs and I'm often nominated as poster boy for "If I can do it, anybody can" campaigns. So the good news is that just about anyone can put this bad boy together. On the other hand, I dropped enough of those little set screws to keep myself frustrated thoughout most of the assembly process.
You'll need a work area about the size of a card table, and a tape measure or ruler close at hand. XBeams -- one-inch square extruded aluminum beams -- are the basic building blocks of the ER1. They vary in length from two to 12 inches. That's the reason for the ruler: You need to make sure you've got the right length each time one is called for in the instructions. You'll also need a pair of pliers, needlenose if you have them. Everything else, including Allen wrenches, is included. Except for the laptop, of course. You have to provide that.
If you are intimidated by the hardware assembly process, you can order the ER1 assembled or unassembled for the same price.
Originally we believed the ER1 had at least a beta version for Linux. Alas, that turned out not to be the case. The laptop requirements are for a 500MHz or faster CPU, at least 128MB of RAM (256MB recommended), running Windows 98, ME, NT, 2000, or XP, 250MB of disk space available, a screen resolution of at least 1024x768, and two USB ports. In order to satisfy the Windows requirement, I had to turn to my friend Susan, who is also my spiritual advisor and personal fitness trainer.
I borrowed Susan's Sony VAIO laptop to provide the brain-power for the ER1. The Sony dualboots between Windows 2000 and Mandrake Linux. I had to attach the Sony docking station in order to satisfy the 2 USB port requirement. That made the laptop longer overall than normal, and as a result of that extra length it did not sit correctly against the XBeam frame. I used it like that and never had a problem, but I always worried about the ER1 running into something and toppling the laptop off its perch.
When I learned that an optional piece of robotic gear that Evolution provided along with the ER1 (the Gripper Arm) required a third USB port, I decided to kill two birds with one stone. I bought a $55 BUSlink USB 2.0 CardBus with 4 USB ports. The BUSlink card has a tall external component to allow the connection of USB cords, but as long as I put it in the top PCMCIA slot it did not interfere with the second PCMCIA card. That's good, because I needed the second card for remote control. Then I was able to remove the docking station from the Sony and it fit properly into the ER1 frame.
Once I had the ER1 hardware assembled, the next step was to install the software on the laptop. It took less than half an hour, including the time to it took to add the drivers for the USB devices. The ER1 talks to the laptop over two USB lines: one for the control module and one for the video camera. After both USB lines were connected, the drivers installed, and with both the ER1's and the laptop's batteries fully charged, it was time for a shakedown cruise.
First I started the ER1 application by clicking on its desktop icon. Then, following the instructions in the Users Guide, I used the arrow keys on the laptop to make the ER1 turn first in one direction, then in the other. Check. Next I loaded one of the pre-fab "Behaviors" that come with the kit and (still following along from the manual) started it running. I held up the ER1's packing box so that it could see the logo on the box with its video camera eye. The ER1 responded:
Hello, I am your new ER1 robot. I see the box. You may move around with the box and I will keep moving until I am a foot away.
Sure enough, it followed me around as I moved with the box from place to place. The shakedown cruise was a complete success.
The heart of the ER1
The heart of the ER1 is the control program, which not only provides you with the ability to control the ER1 through manual controls -- as I did to make it turn back and forth -- but with a development environment that allows you to create and test new "behaviors" for your ER1.
Each behavior is a simple IF/THEN clause. You program the ER1 by having it execute one behavior after another until it has done whatever you had in mind to begin then. The IF condition for a behavior can be based on a visual or audible cue, the time, or simply in sequence following the completion of another behavior. If you add the optional IR sensors that are available as accessories, they can also provide action cues, as can the optional Gripper Arm.
"Behavior" is an overloaded term here. Each IF/THEN pair is called a behavior. And the entire set of those behaviors required to accomplish a task is also called a behavior.
While the IF defines the test, the THEN side of the behavior states the action to be performed. You can cause the ER1 to move, play a sound, speak a phrase, take a picture, record a video, send an e-mail, or execute a program. As a simple example, you might have the ER1 listen for the phrase, "Robot come here," and have it reply "Yes, master" when it hears it.
As with most GUI programming environments, the IF/THEN model used by the ER1 is deceptively simple, but you can create highly complex behaviors with it. The ER1 comes with half a dozen pre-fab behaviors and a section of the User Manual contains suggestions for others in a section called "50 Ways to Love Your Robot."
My brief programming experience with the ER1 revolved mainly around audible recognition rather then visual. My first attempt failed miserably; the ER1 didn't seem to understand anything I said. Then I read the manual a little more closely and learned two key things I had missed about using voice recognition with the ER1.
First, the ER1 uses the Microsoft speech recognition engine that comes with Windows. It wants to be trained on how you speak. I went through that process, reading the text as prompted and waiting for the engine to tell me it understood what I had just read.
The second thing I did was to refine the behavior by changing the settings to define a speech recognition grammar that contained only the few words I wanted it to recognize.
I'm not sure which of those two things had the greater impact, but the difference was night and day over the previous attempts. Now the ER1 recognized my commands almost every time I spoke them.
The first behavior that I created conducted a mock "search" for Susan when I said the phrase "Where is Susan?" "Must find Susan," the ER1 intoned, spinning 15 degrees to its left, rolling forward four feet, then pausing to call for her ("Here, Susan, here, Susan") before continuing by turning to its right and then rolling ahead another four feet.
Susan got a big kick out of that and wondered how I did it. I explained the ER1 IF/THEN programming to her and she started modifying the behavior to make it respond in a slightly different manner. Like me, she found playing with the ER1 a lot of fun.
There are several diffent methods for controlling the ER1 remotely. Regardless of the method you choose, you need to have a wireless NIC (the second PCMCIA card I mentioned above) and of course a wireless access point so the ER1 can communicate with other machines. I was in luck, since I already had both. The ER1 is much more fun when you can distance yourself from it a bit and control it from the comfort of your desktop.
Evolution gives you five software licenses per robot, which means that you can install the software on five different machines. The easiest method of doing remote control is to install the ER1 software on a second machine as well as the laptop, then configure each for remote access. Since Susan's laptop has the only Windows in the house, I needed a different solution.
You can also control the ER1 remotely through a command line interface. This requires that you have the ER1 application running on the laptop and configured to allow command-line control. The next step is to telnet to port 9000 at the laptop's IP address and login with the pre-arranged password. I try to avoid using telnet for anything due to security concerns, so this wasn't the ideal solution for me even though it allows you to do remote control in a mixed-platform environment.
My solution was to install the W2K version of VNC and use it. Since I already had TightVNC on my desktop box, that's all I needed to do. Once I installed VNC on the laptop, I could start
vncviewer on the desktop and connect to the laptop. I no longer had to remove the laptop from the ER1 every time I wanted to tinker with the software or develop new behaviors -- a very handy solution.
If you're a programmer, you might be interested in writing your own programs outside of the ER1 development environment. This you can do using any language you like that can talk to port 9000 through the use of the command line interface. You still have to have ER1 running on the laptop to take this approach, just as if you were manually entering the commands.
Conclusions and a wish list
The more I played with the ER1, the longer my wish list became. For example, I wish the robot weren't so power hungry, so that a single charge could keep it running for several days. The battery is only good for about three hours of "drive time," and it takes three or four hours to recharge. If my wish came true, the ER1 could be used for things like home security while you're at work or away for the weekend. Failing that sort of battery life, some sort of drive-in docking station where it could park and be re-charged between patrols would be nice.
I also wish it had a remotely adjustable zoom lens on the camera, and a controllable camera mount that would let you tilt and swivel the camera as you pan an area. And I wish it included speakers that could speak more loudly and clearly than the typical laptop's sound quality. Perhaps a built-in microphone of better quality than that in the ordinary laptop could improve voice recognition, too.
And speaking of the laptop, I wish the ER1 included its own processor and disk storage so that you didn't have to dedicate a laptop to its use. I think these are the limitations that keep the ER1 in the toy category.
Still, the ER1 Personal Robot System is a fun toy. If you're a geek like me, you can easily while away the hours developing new behaviors and trying them out. In fact, even if you're not a geek, it's fun to play with.
Joe Barr has been writing about technology for 10 years, and about Linux for five. His work has appeared in IBM Personal Systems Journal, LinuxGazette, LinuxWorld, Newsforge, phrack, SecurityFocus, and VARLinux.org. He is the founder of The Dweebspeak Primer, the official newsletter of the Linux Liberation Army.