Conceptual mindmap of the RoboPhilo Motion Creator
The more we work with the new RoboPhilo humanoid robot, the better we like it. One significant factor that has us really turned on is the object oriented data structure used by RoboPhilo and the supplied Motion Creator software application.
Compared to other humanoid robot kits currently on the market, RoboPhilo is surprisingly easy to understand and work with. It's hierarchical data structure lends itself to creating extensive libraries of reusable poses, motion sequences, and routines.
The RoboPhilo Motion Creator application logically separates the motion creation functions into six distinct tabs that make it easy to understand and work with. The tabs are Configuration, Pose, Routine, Sequence, Key, and Fine Tuning.
The six tabs can be seen across the top of the application. For example, the Pose tab, shown above, allows you to set the position for each servo and save the resulting pose with a unique name so that it can be reused over and over again whenever you need it.
Operating globally, the Configuration tab includes default parameter settings as well as importing and exporting files and downloading to the RoboPhilo. In actual operation, you set up the defaults once and then only use this tab when you load or save a file, or transfer the current file to the robot.
The RoboPhilo pose definition is, purely and simply, a set of positions for all the robots servos. The Pose tab does have a 'Play' button and its associated parameters like speed, mode, steps, and position increment, but those parameters are only used for test purposes while you are creating or editing a pose.
This approach is extremely powerful. Other applications, like Kondo's Heart to Heart 3, tightly associate the movement parameters like speed to each pose. That style makes it difficult, cumbersome actually, to easily reuse poses. In contrast, with RoboPhilo you assign each Pose a unique name, and then add the speed and other parameters during the sequence creation phase. Reusing an existing pose, even if the intended speed is considerably different, is as simple as selecting from a pull-down menu.
For example, to begin most movements the robot will start in a standing position (call that 'Stand"), then move to a more natural, lower, movement posture ("BaseMove"), and then begin the required series of movements to walk forward, backward, left, etc. Once the movements are completed it needs to return to the BaseMove posture and then to the Stand posture. Other applications require you to go through some contortions to accomplish that, and you can quickly find yourself loosing track of all the unique motions you've created. With RoboPhilo, using a pull-down menu you select the pose you've previously created, and then add the required parameters, like speed. Poses appear to be infinitely reusable.
Note that the Pose, and other tabs, provides for three different movement modes: C, E, and W. We'll get into them in detail in a later post, but for now just understand that you can control whether all the servos try to move to the commanded positions in a smooth coordinated fashion or individually as fast as possible.
As we started to explain above, Sequences are built as a series of named states. Each individual state combines the desired pose with the required speed, movement mode, and number of steps. For example, the 'Move Left' sequence looks like this:
Left to right: State tag, Statename, Speed, Mode, Steps, Pose name
Sequences are then combined in series to form more elaborate Routines.
Left to right: Routine tag, Routine name, sequences to be executed
The overall relationship, and interdependency, between Poses, Sequences, and Routines looks like this:
The remaining two tabs allow the user to assign specific routines to individual keys on RoboPhilo's remote control, and provide for fine tuning the robot which is fairly similar to setting the 'Home Position' on other humanoid robot kits.
Another pleasant, and very welcome, surprise was that the RoboPhilo Motion Creator file format includes both upper and lower limit settings for each servo. If setup properly, this functionality will protect the robots servos from over travel, internal damage, and stalling out. We've seen quite a few robot builders jam their servos against some unsuspecting inanimate object. If they are inexperience or don't notice the problem immediately then the servos tend to overheat and actually burn out quickly. Again this is a feature that most other robot applications haven't implemented yet.
Left to Right: Servo tag, Servo name, Initial position, Offset, ATV adjustment, Upper limit, Lower limit
Look for our RoboPhilo review in the Winter 2007 issue of Robot Magazine, scheduled to be on store shelves by Halloween.