All Tutorials / Jlucben / Synbot Plugin Tutorial - interface to Syn Bot Software

Synbot Plugin Tutorial - interface to Syn Bot Software

Step 13 : EZ Robot Commands SIML Framework

In "EZ Robot Request.SIML" file (one of the file of the example SIML project ) is included a Framework to make easier interpretation of input text to command EZ Builder actions.

French and English Syntax are now supported.
But Framework structure enable easily to add other languages syntax interpretation.
Framework configuration is done with siml Map objects.

Bot Response messages to User Input text are formatted in "EZ Robot request - Bot Response Message building" SIML file

The following Input Text syntax can be analysed and interpreted to generate a Bot Response with or without EZ Robots Commands.
You need first a [Verb].
If no [Verb] in the input text , you can configure verb to use implicitely in Maps synonym_global_fr or synonym_global_en - only with [Movement Direction] or [Position]
for example you can configure a synonym for input text FORWARD as MOVE FORWARD , .....

Global Robot Movement Control

[Verb][Movement Direction]
Example : "Move Forward" , "Turn Left" , ...

[Verb][Movement Direction] [Secondary Movement Direction]
Example : "Move Backward to the left" " Turn Left to the rear", ...

You can include for global Robot Movement [Speed Adjective] and [Movement Duration]
Example : "Go Forward at full speed" , "Move back during 670 milliseconds" , turn right forward slowly" , 'turn fast left backward" , ....

[Action on speed] or [Verb] [Action on speed] in order to command the Robot movement speed
For Example : "Slow down" , "Go quicker" , ...

Some [Verb] can be configured with a direct synonym to a [Movement Direction] or an [Action on speed]
For example the verb "GO BACK" can be directly linked to the Movement Direction "BACK"
the verb "ACCELERATE" can be directly linked to the action on speed "FASTER"

Robot Parts Movements and Actions Control

[Verb] [Complement] where complement can be a robot Part HEAD , ARMS , LEFT ARM , ...or a Robot Feature or Behaviour PHOTO , VIDEO , RECOGNITION , COLOR RECOGNITION , VIDEO RECORDING , MAIL , TWITTER MESSAGE , ...
For exemple : "center your head" , "open left hand" , "pause the Camera", "Take a photo" , "Start Color recognition" , "Send twitter message" , "Start video recording" , ...
You can add a [Movement Duration] - for example "Take a video during 10 seconds"

[Verb] [Complement] [Movement Direction]
For exemple : "lower your arms" , "point your camera to the right" , ...

[Verb] [Complement] [Movement Direction] [SecondaryMovement Direction]
For exemple : "move the head downward to the right" , ....

[Verb] [Complement] [Attribute]
[Verb] [Attribute] [Complement]
For example : "Balance the head from right to left" , "swing your left arm from bottom to top"

[Verb] [Complement] [Free Attribute]
[Verb] [Free Attribute] [Complement]
[Verb] [Complement] [Attribute] [Free Attribute]
[Verb] [Free Attribute] [Complement] [Attribute]
[Verb] [Free Attribute] [Attribute] [Complement]
[Verb] [Attribute] [Complement] [Free Attribute]
For example : "send a mail to John" - John is a free attribute and will be decoded depending on a map configured to store the email addresses.

Some [Verb] can be configured with a direct synonym .
For example the verb "LOWER" is directly linked to the Movement Direction "DOWN".
Synonyms can be a Combination of [Movement Direction][Complement] [Position] and [Position] or anything you want if model for the pattern is defined in SIML files.

Robot Position Action

Position is a position or a sequence of positions of the Robot for example the Calibrate position , the sitting position , the push-ups sequence

[Verb] [Position]
For example : "Put yourself in the sitting position" , "do some push-ups" , .....
If no [Verb] in the input text , you can configure verb to use implicitely in Maps synonym_global_fr or synonym_global_en
For example IN INITIAL POSITION is equivalent to PUT YOU IN INITIAL POSITION

[Verb] [Complement] [Position]
For example : "Switch the cam Off" , "Put your arms on the cross"
Some [Verb] can be configured with a direct synonym to a [Position]
For example the verb "SIT" is directly linked to the position "SITTING"

[Verb] [Complement] [attribute] [Position]

[Verb] [Position] [Free Attribute]


Other actions

[Verb] without any complement
For example : "Smile"

[Verb] [Free Attribute]
For example : "Sing Happy birthday" , "Dance on Happy Birthday"


(Verb] structure

Below is the SIML Patterns used in English for all [Verb] structure ,and the associated Sets.
Only one verb form configured in the map MOVEMENT_VERB_1_EN is necessary.
The Bot will recognize in the same manner for the verb "Move" : "Move" , "Can you move", "Could you move" , "I would like you move" , "I would like you to move" , "We just want you move" , ........
Map content can be extended with new entries.

Structure is more complex in french , as we need for one verb 3 forms :
Example for the "move" in french "aller"
"Move" : " Va"
"Can you move" : "Peux tu aller"
"I would like you to move" : "J'aimerai que tu ailles"

Syntax can be configured in SIML file EZ Robot request and in the SIML Maps :

Code:

[Map Name="Peux_Tu_en">
[MapItem Content="can you" Value="T" />
[MapItem Content="could you" Value="T" />
[/Map>
[Map Name="Aimerai_voudrai_je_en">
[MapItem Content="I would like" Value="T" />
[MapItem Content="I wish" Value="T" />
[MapItem Content="I just wish" Value="T" />
[MapItem Content="I want" Value="T" />
[MapItem Content="I just want" Value="T" />
[/Map>
[Map Name="Aimerai_voudrai_nous_en">
[MapItem Content="we would like" Value="T" />
[MapItem Content="we wish" Value="T" />
[MapItem Content="we just wish" Value="T" />
[MapItem Content="we want" Value="T" />
[MapItem Content="we just want" Value="T" />
[/Map>