Progress With A Robosapien Control Application
Progress always seems to come in fits and starts. I make some headway, then hit a bump in the road that either slows me down, or totally distracts me. Sometimes it's so severe that I get totally frustrated and have to set a project aside for a while. At other times it seems like everything wants to come together almost effortlessly. Thankfully, I seem to be in one of the latter cycles right now and everything is going pretty smoothly - knock on wood.
I was able to get the USBUIRT working with Girder, and to confirm that I could send commands to my Robosapien. The next step was to explore the USBUIRT API and DLL to see how it could be modified. The API is a 'developer' tool, and isn't provided with the USBUIRT, but if you have purchased a USBUIRT and are trying to develop an application based on it, you can request a copy from Jon via the support email address on his website. Jon was also kind enough to include a sample test program written in Visual Basic - which was great since I have a lot of experience with VB and will probably use it as the platform for a lot of my projects.
The test program was fairly easy to understand - especially since all I really wanted to do at this point was to transmit an IR code to the Robosapien. Getting the IR code format set correctly took a little while, and I was hindered by a bug in my VB installation that caused it to crash unexpectedly. The IR code format concern was sorted out by looking at other people's code on line to see how they had solved the problem. The VB problem was solved by a patch down-loaded from the Microsoft support website. Then, about 10:00 pm on Sunday night, I was finally able to send commands from a VB program running on my laptop to Robosapien!
The next step is to develop a spec for a fully functional control program, and then code it in VB. It looks like it should be very straight forward to develop a remote control program that just emulates the Robosapien remote. However, I think that particular approach might get boring very quickly. Besides, I always have the physical remote in case I need to use it.
At this point I'm leaning towards a choreography type controller. Something that would allow me to build up movement sequences and allow for macro loops, delays, repeats, and the like. It also needs to consider the elapsed time to execute each command into consideration. For example, when Pixar or Disney put together an animated movie they usually do the vocals and music first, then fit the animation timing into the audio tracks. I suspect that the same approach would work well in this case.
Assuming that I take that route, I will need to define a syntax - a command set, and a good place to start is with the commands that have already been setup by other Robosapien experimenters using the Girder application. The Girder GML file is basically a flat text file that includes a lot of parameters that won't be needed in this application. Pulling out just the group names, actions, command names, and the corresponding USBUIRT IR codes should provide a strong base for the choreography application (see the IR control code table below. )
|
| Robosapien USBUIRT IR Control Codes | |||
| Group | Action | Command | USBUIRT Code | |
| Arms | R arm up | rarmup | R08008109808520212122212221212122212121808720 | |
| R arm down | rarmdown | R08008101808321212122212121212180862022212121 | ||
| R arm out | rarmout | R08008109808321212122212121212122218086202121 | ||
| R arm in | rarmin | R2D9980FE80852021212221212123218086202021808720 | ||
| L arm up | larmup | R0800810E80832121212221212180852120212221808520 | ||
| L arm down | larmdown | R080080F780852021212221212180872080862022212121 | ||
| L arm out | larmout | R0800810B80842021212221212180872021218085212121 | ||
| L arm in | larmin | R080080F48086202121222122218086208086202221808620 | ||
| R arm all up | rarmallup | R14D18109808520212122212221212122212121808720 | ||
| R arm all down | rarmalldown | R12D08101808321212122212121212180862022212121 | ||
| R arm all out | rarmallout | R0FD38109808321212122212121212122218086202121 | ||
| R arm all in | rarmallin | R105180FE80852021212221212123218086202021808720 | ||
| L arm all up | larmallup | R1116810E80832121212221212180852120212221808520 | ||
| L arm all down | larmalldown | R128980F780852021212 221212180872080862022212121 | ||
| L arm all out | larmallout | R0FE6810B80862021212221212180872021218085212121 | ||
| L arm all in | larmallin | R0DC680F48085202121222122218086208086202221808620 | ||
| Movement | walk forward | walkf | R239B80F980842121212221212121218086208086202121 | |
| walk backward | walkb | R153480EF8085202121222121212321808620808421808520 | ||
| step forward | stepf | R080080F38085202121808620222121218086208086202121 | ||
| step backward | stepb | R08008108808520212180862022212121808620808620808520 | ||
| stop | stop | R165580FC8085202121222122218085208086208086202121 | ||
| lean left | leanl | R149C80FC8085202121222122218085202121808620808520 | ||
| lean right | leanr | R10AD810680852021212221212123212021808620808720 | ||
| turn step left | turnstepl | R080080FD80852022218086202021808720212121212121 | ||
| turn step right | turnstepr | R08008103808420212180862121212121222122212121 | ||
| left | left | R2AAB8104808520212122212221808620212122212121 | ||
| right | right | R1FC381098085202121222122212121222121212121 | ||
| lean forward | leanforward | R080080F0808520212180862022218086208086202221808620 | ||
| lean back | leanback | R080080F38085202221808620202121218086212121808521 | ||
| Arm Combo | right sweep | sweepr | R0800810380852080852120212221212122212121808720 | |
| left sweep | sweepl | R080081028085208087202121212180852120212221808520 | ||
| right thump | thumpr | R0800810180852022218086202021212122212221808520 | ||
| left thump | thumpl | R080081058085202121808620222180862021212221808620 | ||
| right pick up | rpickup | R080080F680852021218086202221212180862022212121 | ||
| left pick up | lpickup | R080081098085202121808620222180852080862022212121 | ||
| right throw | rthrow | R0800810180852021218086202221212122218085202221 | ||
| left throw | lthrow | R080081008084202221808520202180862021218084202221 | ||
| right strike 1 | rstrike1 | R080080F78085208087202221212121218086202221808620 | ||
| left strike 1 | lstrike1 | R080080EE808520808520222122218086208086202221808620 | ||
| right strike 2 | rstrike2 | R080080FE8085208087202121212121212221808620808521 | ||
| left strike 2 | lstrike2 | R080080F4808620808720222121218087202221808520808720 | ||
| left strike 3 | lstrike3 | R080080F980852080852021212221808520212122212121 | ||
| right strike 3 | rstrike3 | R08008103808520808520212122212121222121212121 | ||
| Attitude | Talk Back | talkback | R080080EF8085208085202221222180862080862022212121 | |
| Whistle | whistle | R080081058085208087202121212180872021218085202221 | ||
| High 5 | high5 | R080080F980852080852120212221212180862022212121 | ||
| Burp | burp | R080080FE80852080852021212221212122218085212121 | ||
| Bulldozer | bulldozer | R080080F18 085208085212021222121218086208086202121 | ||
| Roar | roar | R080080F7808520808520212122218086208086208086202121 | ||
| Fart | fart | R0800810A808520808520212122212121808620808620808520 | ||
| Sleep | sleep | R080081008083212121808620202123212021808620808720 | ||
| Wake Up | wakeup | R080080FF8085202121808620808620212122212221808520 | ||
| Program Modes | R sensor | rsensor | R159E810080852022212021808620212122218086202121 | |
| L sensor | lsensor | R15F180FE8085202121222180852121212221808520808620 | ||
| sonic sensor | ssensor | R1749810680852021212221808521212180862020212321 | ||
| main program | mainprog | R18E28103808520212122218086202121222121212321 | ||
| execute main | exemain | R1A51810780852022212021808620212122212221808520 | ||
| Misc. | demo 2 | demo2 | R080080F3808520808520212180862021212221808620808520 | |
| demo 1 | demo1 | R080080F58083218085202121808620212122218085212121 | ||
| listen mode | listenmode | R080080F7808520212180862022218085202121808720808520 | ||
| turn off | turnoff | R080080FD8085208085202121808620212122212121808720 | ||
| Dance | dance | R080081028085208085202121808620212180862022212121 |
You might also enjoy:











Hi, it sounds like you have done some really interesting work on the Robosapien. I am also working on a project to control the Robosapien from my PC using a PDA, via Bluetooth. I was thinking about using VB to do this.
If there is any information or help that you can give me in this regard, it would be greatly appreciated.
Thank You
Hi, interesting work on the Robosapien. I am also working on a project to control the Robosapien from my PC ti infrared. I was thinking about using VB to do this.
Thank You