{'fraction_non_alphanumeric': 0.02505688662829608, 'fraction_numerical': 0.01009235711417481, 'mean_word_length': 4.999036454151277, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 8, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Humanoid Robotic Language and Virtual Reality Simulation

This chapter describes the development of a humanoid robotic language and the creation of a virtual reality system for the simulation of humanoid robots. In this chapter we propose a description language for specifying motions for humanoid robots and for allowing humanoid robots to acquire motor skills. Locomotion greatly increases our ability to interact with our environments, which in turn increases our mental abilities. This principle also applies to humanoid robots. However, there are great difficulties to specify humanoid motions and to represent motor skills, which in most cases require four-dimensional space representations. We propose a representation framework that includes the following attributes: motion description layers, egocentric reference system, progressive quantized refinement, and automatic constraint satisfaction. We also outline strategies for acquiring new motor skills by learning from trial and error, macro approach, and programming.


Introduction
This chapter describes the development of a humanoid robotic language and the creation of a virtual reality system for the simulation of humanoid robots. In this chapter we propose a description language for specifying motions for humanoid robots and for allowing humanoid robots to acquire motor skills. Locomotion greatly increases our ability to interact with our environments, which in turn increases our mental abilities. This principle also applies to humanoid robots. However, there are great difficulties to specify humanoid motions and to represent motor skills, which in most cases require four-dimensional space representations. We propose a representation framework that includes the following attributes: motion description layers, egocentric reference system, progressive quantized refinement, and automatic constraint satisfaction. We also outline strategies for acquiring new motor skills by learning from trial and error, macro approach, and programming.
Then, we use our new humanoid motion description language and framework as the base to build a virtual reality system to simulate humanoid robots. Currently most humanoid simulation systems require manual manipulations of body parts or require capturing movements enacted by a person. We aim to describe humanoid motions using our highlevel humanoid motion description language. We defined new motion primitives and new syntax that allows programmers to easily describe complex humanoid motions. To make the motion specification possible, we defined a humanoid framework that models humanoid robots by specifying their capacities and limitations. Furthermore, we developed a simulation system that can execute the humanoid motion description language and can automatically handle conflicting motion statements and can ensure that the described motions are within the limitations of humanoid robots. Our simulation results show that the proposed system has great future potentials.
The remaining of this chapter is organized as follows. Section 2 outlines the related research on high-level language approaches to describe and to simulate humanoid motions. Section 3 describes the motives for defining a humanoid motion description framework, which includes methods for specifying humanoid motions and methods for acquiring new motor skills. Section 4 outlines the methods for specifying humanoid motions, which include the concepts of motion description layers, egocentric reference system, progressive quantized refinement, and automatic constraint satisfaction. Section 5 outlines two methods for acquiring new motor skills: learning from trial and error and learning by macro approach. Section 6 describes the motives for developing a system to simulate humanoid robots in virtual reality environments. Section 7 defines a new humanoid motion description language called Cybele. It focuses on the syntactic aspects of the language, while Section 8 focuses on the semantic aspects of the language and defines the framework on which the language can be interpreted. Section 9 provides the implementation details of the humanoid simulation system. And, Section 10 gives the conclusion and outlines the future research.

Related Research
Research in describing humanoid motions begins with the works for describing human dances. Popular dance notation systems include Benesh (Causley, 1980), Labanotation (Hutchinson & Balanchine, 1987), and EW (Eshkol-Wachman, 2008). Benesh is the simplest one and is designed particularly for dance description. Labanotation is more comprehensive for describing human motion in general. EW can be applied on linkage systems other than human body. Computers are now used to aid the interpretation and visualization of these notations (Ryman et al., 1984;Adamson, 1987;Calvert et al., 1993;Schiphorst, 1992). Researchers used Labanotation as a basis to represent human motion, proposed to extract key motion primitives, and proposed architectures for digital representation of human movements (Badler et al., 1979). Another approach uses natural language; such as "Improv" system used natural language to script human behaviour interacting in virtual environments (Perlin & Gikdberg, 1996). Motion sequences can be generated by system that employs human biomechanical logic (Badler et al., 1994). This section outlines related work on the high-level language approaches to humanoid simulation (Nozawa et al., 2004;Nishimura et al., 2005). Several systems will be discussed, which including, Poser Python, VRML (Virtual Reality Modelling Language), Improv, STEP, and others. It focuses on highlevel language approaches to humanoid simulation and omits other general concurrent languages such as OCCAM.
Poser Python (Python, 2008;Schrand, 2001) is an implementation of the Python interpreter that includes many commands that have been extended to recognize and execute commands not included in the standard Python language. Poser Python script language is a language combination that uses syntax and basic logic of Python and special commands tailored especially for Poser scene, manipulate them, and finally send them back to Poser. The language-controlled animation is a significant advantage of Poser-Python system. VRML (Virtual Reality Modelling Language) is a scene-description language used widely on the internet. VRML uses TimeSensor to initiate and synchronize all the motions in the scene. It is possible that asynchronously generated events arrive at the identical time as one or more sensor-generated event. In such cases, all events generated are part of the same initial event cascade, and each event has the same timestamp. Based on this mechanism, VRML is quite suitable to visual presentations with user interactions. However, there is no direct way to describe complex motions with time overlapping.
Improv (Perlin & Goldberg 1996) is a system for the creation of real-time behaviour based on animated actors. Improv consists of two subsystems. The first subsystem is an animation engine that uses procedural techniques to enable authors to create layered, continuous, nonwww.intechopen.com repetitive motions and smooth transitions between them. The system uses an English-style scripting language so that creative experts who are not primarily programmers can create powerful interactive applications.
STEP (Huang et al., 2002) is a distributed logic program being used to define and control the hand gestures of embodied agents in virtual worlds. It works as an interface between the constructs of logic programming and the humanoid model defined in VRML. Using the STEP framework, different gesture dictionaries can be defined, and variants of a hand gesture, according to dynamically changing factors, can be generated on the fly. STEP also has two kinds of control logic definitions. One is parallel and the other is sequential. But different kinds of program blocks cannot be mixed together and must be executed one by one.
There are also other systems for animations such as Alice (Conway, 1997), Maya, Lightwave, and 3D Studio Max. They each have a beautiful user interface and have easy drag and drop functionality for the animation design and customization. However, most of them lack underlining programming languages that programmer can program to control various motions. Meanwhile, current motion description languages do not have motion synchronization at the language level. The details of the motion control make the simulation difficult to implement and debug at the language level. This also makes the motions nonreusable.

Humanoid Motion Description Framework
Locomotion greatly increases our ability to interact with our environments, which in turn increases our mental abilities. The principle that mental abilities can be improved by interacting with the environments is the basis for MIT Cog's project (Brooks et al., 1998;Arsenio, 2004). However, Cog robot currently lacks locomotion. On the other hand, Honda humanoid robots (Honda, 2008) possess the state of the art locomotion system, but lack the autonomy and the learning abilities. We envision the union of these two types of robots, such as Albert HUBO (Oh et al., 2006), as the basis of our investigation.
The humanoid robots of the near future will possess the abilities for locomotion, autonomy, and learning (Brooks, 2002;Arsenic, 2004;Burghart et al., 2005;Yokoi, 2007). Much research remains to be done on such autonomous humanoid robots (Brooks 1996;Scassellati 2001). In this chapter, we will focus on issues of developing a common framework for both specifying motions and for autonomously acquiring motor skills for such robots.
A unified framework to address both specifying motions and acquiring motor skills will facilitate the developments of autonomous humanoid robots. Neural Network, for example, may be a good medium for capturing and classifying motor skills. However, the resultant representation in terms of matrix of weights of connectivity is difficult to be interpreted and modified. Thus, in this investigation we choose to use symbolic approach by developing a description language.
Our humanoid motion description language, like any other languages, consists of syntactic and semantic aspects. Syntactic aspect specifies rules for combining words while semantic aspect specifies structures for interpretation and such provides the meaning. We propose different set of words and rules for different level of abstraction, such as using joint angles at www.intechopen.com the low level and using "walk" and "jump" at the high level of abstraction. The interpretation and the meaning are based on our framework that includes egocentric reference system, progressive quantized refinement, and automatic constraint satisfaction.
Our language and our framework (Choi & Chen, 2002) are unique in many ways comparing to other related research (Kanehiro et al. 2004). Our reference system simplifies specification of locomotion and allows motions to be described by uniform and deterministic expressions. Our concept of Progressive Quantized Refinement allows a humanoid robot to interact with its environments using different level of granularity. Our Automatic Constraint Satisfaction system reduces the complexity of specifying humanoid motions. Moreover, our underlining model using non-deterministic finite state machines allows humanoid robots to learn new motor skills.

Specifying Humanoid Motions
The proposed language and framework for specifying humanoid motions includes the following attributes: motion description layers, egocentric reference system, progressive quantized refinement, and automatic constraint satisfaction, each of which is described as follows. Table 1 outlines the concept of motion description layers. Each description layer is a level of abstraction. Joint Angle layer describes a motion in terms of changes in the joint angles, such as knee joint rotate to 30 degree or elbow joint rotate to 45 degree. This layer provides detail and precise information that can readily be used to control various actuators of a robot. Path layer describes a motion in terms of a connected line that is specified by points. A simple path can be specified using two points, such as Hand (v1) that moves hand from current position to point v1. More points provide more detail specification of the path; for example, Foot (v1, v2) denoted that foot moves from current position through v1 to v2.

Motion Description Layers
Motion primitive (Nakaoka et al., 2004) layer describes a motion in terms of a given set of essential motions that can be combined to form more complex motions. The set of essential motions must first be identified. It must be complete so that we can describe all possible motions of a humanoid robot. We must also provide a set of rules for specifying how one motion primitive can be combined with another. In effect, we are creating a formal language and insuring that the language is both complete and consistent. This is an axiomatic approach to describe humanoid motions.
Motion sequence layer describes a sequence of motions in terms of motion blocks such as walk, run, jump, and turn. Using this high-level description, we can describe a complex task  with ease without having to specify the angle of each joint. However, this high-level description is not as precise as low-level description and thus leaves must room for interpretation that is addressed in this investigation by using Progress Quantized Refinement discuss in Section 4.3.

Egocentric Reference System
We proposed an egocentric reference system for specifying space-time in discrete finite fourdimensional hyperspace. Each point in our reference system is represented by a quintuple (x, y, z, t). Each of the variables, x, y, z, and t, is an integer ranging from -128 to +127. The origin of the reference system locates at (0, 0, 0, 0). In short, each point in our reference system can be stored using four bytes or 32 bits.
Our reference system is egocentric in that the origin of space is located at the center of the torso of a humanoid robot, as denoted in Figure 1. The origin of time is located at the beginning of a state transition.
In our system, a motion is defined by a sequence of state transitions. Each state transition begins at time 0 and must be completed in 127 time units or less. Negative time units represent the time units used during the last state transition. Each state transition begins with the origin of space located at the center of the torso. In short, a state transition begins at (0, 0, 0, 0). All changes during a state transition are specified within the egocentric reference system.
Translation between the egocentric reference system and its world reference system is done at the end of each state transition. For example, beginning at a standing position as shown in Fig. 2. Concept of Progressive Quantized Refinement Figure 1, the robot moved three units forward in positive y-axis direction and completed at a standing position, and the whole transition takes 9 units of time. Now, the center of the torso is located at (0, 3, 0, 9). Assuming at the beginning of the transition R(0, 0, 0, 0) in the robot's egocentric reference system is located at W(3, 2, 4, 2) in its world reference system. Also assume that y-axes of both systems are parallel and have the same direction, and each unit in the egocentric reference system represents 2 units in the world reference system. To reset R(0, 3, 0, 9) back to R(0, 0, 0, 0), we makes R(0, 0, 0, 0) now to corresponding to W(3, 2+3*2, 4, 2+9*2).

Progressive Quantized Refinement
We proposed a concept called Progressive Quantized Refinement for a humanoid robot to interact with its environments using different level of granularity. Figure 2 illustrates the concept; on the left picture a 9x9 unit squares is used to display a room while on the right picture the same sized 9x9 unit squares is used to display part of a table. For a robot to put an object on the table, the robot can first use the left picture to move toward the table. Then, it can use the right picture to put the object on the table.
At different states a robot can change its unit scale factor as needed. For example, a unit length in the robot's egocentric space reference system can be scaled to 1 cm, 1 inch, or 1 meter in its world reference system. A unit time can be scaled, for example, to 1 second, 1 minute, or 5 minutes. www.intechopen.com

Automatic Constraint Satisfaction
We proposed to use Automatic Constraint Satisfaction to reduce the complexity of specifying humanoid motions. There are many implicit requirements for locomotion, such as maintaining balance and structural integrity. Automatic constraint satisfaction system will provide additional changes to meet the implicit requirements.
A system for providing automatic constraint satisfaction for locomotion is very complex and much research is being done on areas such as motion planning and constraint satisfaction. For example, we can simply specify that the robot must move its right hand from current position (3, 6, 2, 0) to new position (3, 50, 2, 6). The simpler the specification, in most cases, requires the more complex constraint satisfaction. In our example, the hand must reach the new position using 6 units of time, so that speeds for various actuators must be adjusted to meet this requirement. If the hand cannot reach the new position by simply raising it and reaching out, then the robot must move the whole body toward the new position.

Acquiring New Motor Skills
The ability for acquiring new motor skills is essential for mental developments. The trivial approach is to simply program a humanoid robot for new required motor skills (Ude et al., 2004), which can easily be done by an experienced programmer using our proposed language and framework. Thus, in the following we will focus on strategies for acquiring motor skills through learning from trial and error and learning by macro approach.
Learning motor skills has not yet been a central focus of Machine Learning researchers. Thus, much research remains to be done on automatic acquiring new motor skills. We briefly outline strategies for creating such a system, which in part is based on the author's work on automata for learning sequential tasks (Choi, 1998;2003).

Learning from Trial and Error
One way for acquiring new motor skills is by trial and error. This approach requires first identifying an objective and then selecting actions or motions to achieve the objective. In particularly, using our proposed framework, identifying an objective can be described as identifying a goal state, while selecting actions or motions can be described as selecting a sequence of transitions from the current state to the goal state.
Using our proposed framework, the underlining model is a non-deterministic finite state machine (Choi 2002). From one state, there may be several transitions to follow to other states. Choosing one transitions or the other is why we call this a trial and error approach and is why it is non-deterministic. To achieve the objective is to find a sequence of transitions from the current state to the goal state. As soon as a sequence of transitions is found, it can be stored for future use.

Learning by Macro Approach
Macro approach can be used in a supervised learning environment (Bentivegna & Atkeson, 2001;Arsenic, 2004;Calinon et al. 2007). After a humanoid robot is repeatedly instructed to perform certain task, the robot can store the sequence of motions to associate with a name of the task. After which, the robot can be commanded to perform the sequence by simply specifying the name of the task. This is a simple record and play back approach.

www.intechopen.com
A more sophisticated approach is provided by the author (Choi, 2002;2003), in which a robot can build a non-deterministic finite state machine based on the repeated instructions to perform certain task. The resulting non-deterministic finite state machine can then be used for other purposes such as for learning from trial and error as discussed above.

Virtual Reality Simulation of Humanoid Robots
We developed a humanoid motion description language, called Cybele, based on the above proposed framework. Our development process in turn enhances the strength of our framework. We also developed a virtual reality system to simulate humanoid robots (Zhou & Choi, 2007). Virtual reality simulation of humanoids has been an important subject due to its wide range of applications such as motion picture production and robotics (Kanehiro et al., 2001). To achieve realistic motions, programmers currently must be highly experienced to define all control factors for the movements of individual body parts on each time instance. Since it is far too difficulty to control the detail moments of each individual body parts, currently motion capture systems are widely used to record motions enacted by a person and then to use the captured motions to animate humanoids (Riley & Atkeson 2000;Safonova et al., 2002;Nakaoka et al., 2003;Ude et al., 2004). We attempted a high-level and goal-oriented approach. As shown in Figure 3, there are two extremes on the approaches to humanoid simulations, the goal-oriented and the motionoriented. The goal-oriented approach specifies the objectives using high-level languages, that are easy to write, and that use Artificial Intelligent methods to generated detailed motions, but that are much more difficulty in terms of building the system. On the other hand, the motion-oriented approach can specify detail motion using degree of freedom (DOF) of each join. However, it is more complicated to write such specifications and programmers need to provide all the details, but such a system is earlier to be built.
In this chapter we present a new high-level goal-oriented language named Cybele. The language is designed for humanoid motion description (Choi & Chen, 2002) and is independent of virtual reality simulation systems. Our new language provides simple syntax for expressing parallel and sequential processing as well as the combination of these two. We also introduce syntax for expressing motions. In particular, to solve the motion mixing problem in parallel and complex blocks, we present an approach to synthesizing motions with combination of partial states. We define key poses as states or partial states and create primitives between two key states. We also extract a relatively small set of parameterized motions from infinite complex motion sequences and make them reusable as primitive motions. Our simulator interprets the programs, breaks down motions into primitives with time, scope, and priority. Final motion sequences are then generated using a synchronization approach.
To achieve constraints satisfaction, we define the scope and priority for each joint in the humanoid. This system checks constraints on the joints affected by the motion and determines which motion is in conflict with some others. In addition, to create a multiplatform system, we implement a prototype system with two parts following the same paradigm as the Java virtual machine. The first part interprets the program and generates motion sequences. The second part translates motion primitives to interface with systems such as virtual reality simulation systems, animation systems, or robotic systems (Kanayama & Wu, 2000;Hirai et al., 1998;Sony, 2008

Humanoid Robotic Language Specification
Our new humanoid motion description language is called Cybele (Choi & Chen 2002). The features of Cybele language are object-oriented and scripting motion description language. Besides the conventional variable declaration, functions, and control flow, we create a new syntax for describing parallel actions. We also create a new complex motion statement and expand the use of the conventional motion control concepts using new parallel blocks.

Motion Statements
To describe humanoid motions, we abstracted a collection of predefined motions for the whole body and body parts. We decompose the humanoid in a standard way as specified in humanoid animation specification (Harris et al., 1999). Figure 4 shows the BNF of motion statements. In general, a motion statement is composed of a main part, parameter part, followed by a colon ':', a description part, and ends with a semicolon. A main part includes the object name and the motion name. An object name can be optional. If there is no object name, the system will take the current default object.
A parameter part takes motion parameters that provide additional detail to specify the motion. Each expression is separated by comma ','. The description part can be provided right after the motion function or at the end of a block. It provides a set of attributes to change the scale of the motion. We currently define two attributes namely starttime and speed. We can adapt approaches (Pollard, 1999) to retarget and change the scale of motion.

Specification of Complex Motions
Complex motions can be specified as combinations of sequential and/or parallel submotions. Sequential motions will execute one after another. Parallel motions will execute in parallel. The start time for parallel motions may not be the same and thus producing partially overlapping motions.  (duration=d1) statement2; // statement2 starts from (t0+d1) (duration=d2) } // total duration is d1+d2 Fig. 6. Sequential block We define the syntax of parallel block as statements enclosed within "[ ]". Figure 5 shows an example. All statements inside parallel block are considered being issued concurrently. They all start at the same time unless otherwise specified by the "starttime" parameter. In Figure 5 for example, the syntax "statement3 : starttime = t1" specified that statement 3 starts t1 units of time later than the other two statements.
We define the syntax of sequential block as statements enclosed within "{ }". Figure 6 shows an example, in which statement2 starts after statement1 completed. A delay can be used such that statement 2 does not need to starts right after the completion of statement 1.
Sequential and parallel blocks can be combined or embedded with each other to describe complex motion logic. Figure 7 shows an example of the structure. The code in Figure 7 illustrates the time specification as shown in Figure 8.

Sample Program
We show a sample Cybele program in Figure 9. In this program, Jack is the actor. He walks backward two steps. Then, he nods his head, while at the same time, he walks forward two steps. Then, he makes a right turn, a left turn, step right once, and step left once in a sequential way.

Humanoid Motion Framework in Cybele
To specify humanoid motions, we need to define humanoid framework. Meanwhile, complex motions require checking the constraints and the limitations of humanoid robots. We use H-Anim (H-Anim 2008), an international standard, as our humanoid model. We adopt the hierarchy tree structure of humanoids (Lee & Shin 1999), use degree of freedom (DOF) (Badler et al., 1993) to describe each joint, define states of humanoid, assign priorities to motions, and check constraints and limitations.

Degree of Freedom and Joints
In humanoid robots, joints connect segments through attachment frames that are called sites. Each segment can have several sites. Joints connect sites on different segments within the same figure. Each joint can have at most six degree of freedoms (DOF), including three for rotational and three for translational. In our system, figures have only three rotational DOF, which is defined by the corresponding angle around the axis. Some constraints include rotation axis, joint angle, and upper and lower limits of the joint angle.

States of Humanoid
States are very important aspects of the humanoid model. Static and recognizable states such as stand, sit, crawl, prone, or supine is defined by the relative positioning of each body part, joint and DOF in our system. Programmers can create their customized states by creating new states, which can be a set of DOF for each affected joint. The same state can be applied on different humanoid models, which makes different humanoids move into certain posture.
We describe a partial state of a humanoid as a body part or a set of body parts associated with certain predefined DOF. Partial states are assigned scope and priority ( Figure 10). Scope defines the subset of joints that the motion affected. Priority defines the strength and relative importance of sub-motion with respect to all other motions that are in current or www.intechopen.com different blocks. The scope and priority allows us to combine partial states to form whole body states or postures, and allows new motions to be generated and synchronized.

State Transition Approach
After we defined states of humanoid, we can define transitions between two states. Transitions between states (Badler et al, 1994) imply movement from one posture to a new posture. Some transitions are possible and some are not, based on the limitation of humanoid robots. Certain transitions are selected and defined as primitive motions. Some of the motion primitives we defined are walk, run, jump, and turn. Our system takes the motion primitives and automatically generates the complete motion sequence from the initial state to the final state.
Weight Descriptions 1 = ω This weighted motion take highest priority over other motions within the same scope. All other existent motions within the scope are transitioned to finish then this weighted motion starts.

Motion Combination with Constraints Checking
When two motions intersect with each other in terms of time and/or scope, we need to check the constraints imposed by the limitations of humanoid robots. For example, we cannot require an arm to move forward at the same time require the arm to move backward. When motions are organized in a sequential way, one after anther, and we do not need to check this type of conflicts.
We automated the process of combining parallel motions and resolving possible conflicts between motions. The process uses the predefined scope and priority of each motion. Table  2 shows some examples of priorities that is described here as weights. The weight ranges from 0 to 1 and 1 being the highest. For example, a motion with weight 0 cannot be combined with any other motion within the same scope, while a motion with weight 1 will be executed prior to any other motion within its scope. If two motions have the same predefined weight, then the relative position in the program block is used to determine their priorities. In this case, the first statement has higher priority than the second one. To reduce the complexity of assigned detailed weight, we predefined weight categories and grouped motions into the categories.

Three Dimensions of Complex Humanoid Motions
We defined three dimensions for complex humanoid motions. There are time, scope, and level. Figure 11 shows an example of their relationships. The time axis shows the beginning and ending time for each motion. The scope axis indicates which joints or body parts are affected by the motion. The level axis shows the hierarchical structure among various motions nested within complex sequential and parallel blocks. The level is used during motion combination process, in which lowest level motions are created first then process to the highest level.

Cybele Humanoid Simulation System
We developed a virtual reality simulator for humanoid robots based on our new motion description language and humanoid framework. The simulation system interprets the motions specified by the language and checks the constraints based on the humanoid framework. The system is designed to interact with user inputs and control humanoid robots in real time.   Figure 12 shows an overview of our humanoid simulation system. The system first gets the Cybele program from some consoles or from other interfacing systems. It interprets the program by analyzing various syntax and structures. Then the language interpreter module passes the results to the motion generation module, which creates motion sequences. In this www.intechopen.com module, all instructions will be broken down into primitives and tagged with level and block information. Every primitive is generated based on parameters and attributes such as duration, speed, and so on. It performs the following functions: 1. Sub-motion generation. The interpreter checks the library to find the proper primitive sequences.
2. Time schedule. A time scheduler schedules the duration for each sub-motion.

Fig. 13. Humanoid Dancing in Virtual Environment
After all the primitives are generated, the motion sequences (labelled S's in the figure) are transferred to the interface. The interface has two functions. The first function is to transmit the elementary motion sequences to various real world systems, which consist of Python/Poser system, Virtual Reality Simulation system, and Robot system (as shown in Figure 12).
The second function of the interface module is to collect the feedbacks and other system parameters from the real world system. These feedbacks are used be the language system to adapt to the current constraints imposed be the environment.
There are two types of constraints in our system. One is an internal rules constraint which is defined by the system and cannot be changed after the environment is created. The other is a rules constraint created by programmers after the environment is created and that can be changed by programmers. All these constraints are resolved by the Constraints Solver module (shown on the right side of Figure 12).
As can be seen from the system overview ( Figure 12), this system is quite complex. Currently, we have completed the implementation and testing of the highlighted modules.
Our test results show that such a system is viable. One of our tests was to describe dance www.intechopen.com movements using Cybele. Figure 13 shows one of our simulations of a humanoid dancing in a virtual environment.

Conclusion and Future Research
In this chapter we described a description language and framework for specifying humanoid motions and for allowing humanoid robots to learn motor skills through interacting with the environments. The language and framework are unique and encompassing many areas of research interesting to researchers in epigenetic robots. The framework can also serve as an outline of strategies for future research programs in humanoid motion description and motor skill acquisition.
Based on our motion description framework, we developed a new humanoid motion description language called Cybele. New features of the language include complex parallel and sequential blocks, new syntax for motion statements, and built-in constraints for motion combination. The motion description links tightly to the underlying models. We defined a humanoid motion framework to make specification of humanoid motion possible. Then we created a simulation system to implement the framework and to execute the motion descriptions. For our system, we also created a solution to generate complex parallel and sequential motion sequences based on the limitations and constraints of the humanoid body.
To solve the motion mixing problem in complex blocks, we presented an approach for synthesizing motions with partial state combinations. In the solution, scope and priority are defined, and primitives are combined to produce final motions with constraints checking. Test results show that Cybele is an effective motion description language, and also show that such virtual reality simulation of humanoid robots is viable.
The proposed simulation system is quite complex, which includes using artificial intelligent techniques to automatically generate detailed motion sequences based on given goal statements. Further work is required to develop such AI motion generation system and to further develop AI methods for solving various constraints imposed by the limitation of the humanoid robots and by the environments. Although our system is designed to interact directly with humanoid robots, we have yet to test the system using real robot. Although our virtual simulation shows such system is feasible, a real humanoid robot will encounter much more constraints when interacting directly with real human environments including interacting with human. Thus, future research would also focus on multi-agent systems in which robots, human, and their environments interacting with each others in real time.
For humanoid robots to be able to effectively function in real environments and interacting with people, they must be able to adapt and able to learn. Most researchers realize this requirement and many are working on various learning methods for humanoids. However, much research remains to be done for humanoid robots to learn motor skills. Although this chapter outlined some strategies including, creating a motion description language, using non-deterministic finite state machine to model sequence of motion states, and using automatic constraint satisfaction to generation motions plausible for the underlying humanoid bodies, much work remains to be done in this exciting area of research. www.intechopen.com