Way, way back – last fall to be more specific – when I bought my Robosapien, I thought it would be great if I could control it directly from my PC. I had dreams of making it dance, or chase the dogs, or do any number of similar things simply by harnessing all the computing power in my laptop. The Robosapien remote control was fine, but I really wanted to go beyond its limitations. Initially that would require being able to store long macro arrays, and later the ability to add sensors and to branch behaviors.
Simple – right? All you have to do is hook up an IR transmitter to the laptop and get it to send the command strings to Robosapien. Sounds simple enough . . .
So, here we are, months later, and after a lot of work, a lot of head scratching, and some invaluable assistance from others via the internet, and finally my Robosapien is moving around under the control of my laptop computer!
The first problem was figuring out whether it could actually be done or not. I studied a large number of websites that reference Robosapien, and it became clear that what I wanted to do was definitely possible, but it wasn’t going to be a cakewalk. The RS IR codes were known (see http://www.aibohack.com/robosap/ir_codes.htm) including some interesting undocumented codes, and Palm PDAs had been used to control RS. I finally ran across the Robots Rule website and the section on getting Robosapien to to dance. There’s even a hilarious video featuring two Robosapiens and a robot dog. While it wasn’t exactly what I wanted to do, it was close enough to get me started on the right track. After a few email exchanges with the Robots Rule webmaster, I decided to go with a similar approach using the USBUIRT interface to communicate with my Robosapien. Jon Rhees, the USBUIRT developer, was extremely helpful. He went out of his way to answer my questions, and shipped my interface within 24 hours of my order placement. It took a couple of weeks – Jon is in the US, and I live in Japan.
With the hardware part of the solution in my possesion, the next step was to get the initial software up and running. For that I settled on Girder and downloaded the free evaluation copy. Then I hit the proverbial wall for a while. Girder seems to be a great application, jam packed with fancy bells and whistles. It was designed for general purpose use, and I knew that it would have a lot of features that I wouldn’t use. Still, it came highly recommended, and had been used successfully with the Robosapien. So I decided I would give it a try. Unfortunately all the complexity got the better of me. I tried unsuccessfully to get it running with my robot for about a week or more. Then I swallowed my pride, took my keyboard in hand, and wrote to some of the folks that had a track record of making things like this work. They quickly pointed me in the right direction, and within a couple of days my laptop was able to consistently send the right commands to my RS. One of them was even kind enough to share a file with the RS IR code strings with me.
Girder in combination with the USBUIRT can ‘learn’ the IR strings from your existing remote control – not just for Robosapien but for any device that uses the same IR coding standards – like your television, VCR, stereo, etc.
As you might expect from looking at the remote control, Robosapien has a large number of functions/movements, and each of them requires a separate and unique IR code to be sent. Here’s what the high level command grouping looked like-
The next level down includes the individual commands to do things like “raise your right hand”.
When you get through with them all, including the burps, roars, demos, and other stuff, there are well over 60 different commands.
You can also create multicommands – a series of commands that are executed sequentially. For example, I wanted RS to walk forward for a while, then stop, raise his right arm and turn it, then raise his left arm, and finally whistle. The multicommand to do that looked like this-
It turns out that the Girder GML files are text files so it’s relatively easy to extract the command names and IR code strings that need to be sent. My next step is to use the USBUIRT API and DLL to build a Visual Basic control module for Robosapien. That will probably take a couple of evenings, or perhaps a long weekend. After that – well, we’re going to Rock ‘n Roll!