Textual robot commands

TiVIPE has generated a compact textual robot language. This post provides the list of all available textual commands.

Generic

flush()

Flush is a command used to stop commands that are scheduled to be executed on the robot. This is the only command that is accepted by the robot while it is busy. In case the robot is idle, this command is ignored.

flush()

wait(time)

Wait is a command used to either align parallel execution or to generate extra time between two commands. The time parameter is given in milliseconds, 4000 denotes 4 seconds.

say (hello) & wait (4000) & say (good_bye)

comment #

Comments can be set in the robotics text language. All of the text after the # is marked as comment until a new line starts

# This is a comment

loop

Simple loops are allowed in the robotics text language. The the syntax is do(value) next a set of commands is expected followed by enddo. This will reduce the textual commands that need to be written by the user. Internally these loops are unrolled and the commands in the loop are duplicated the value times.

# A blinking robot
do(5)
  ledon(AllLeds) & wait(1000)
  &
  ledoff(AllLeds) & wait(1000)
enddo

Motion

collision (on|off, name)

Collision is a NAO robot specific call, where the name is either Arms, LArm, or RArm. This is to protect that the arms of the NAO robot hit itself.

collision (off, Arms) 
&
collision (on, Arms)

fall(on|off)

Fall can either enable or disable the fall protection mode of a NAO robot. Sometimes fall protection is to sensitive, and the robot ‘falls’ yelling ‘autch’.

fall (on)

safeguard(on|off)

Safeguard can either enable or disable the safeguard mode of a NAO robot. On is confirmed by an ‘ah’ sound, off is given by an ‘ow’ sound.

safeguard (off)

stiff(value, duration, idle)

Stiff is a NAO specific command to enable the ‘stiffness’ of motors a value between 0 and 1 is given. The duration indicates how fast this stiffness value needs to be set, after that an idle time is provided (ms).

stiff (1, 500, 0)
& 
movem (LHand, 0, 1000, 57, 1000, 0, 1000, 
       RHand, 0, 1000, 57, 1000, 0, 1000)
&
stiff (0, 500, 0)

Stiffness can be given in multiple triples and thus aligned with motion commands as illustrated below.

movem (LHand, 0, 1000, 57, 1000, 0, 1000,
       RHand, 0, 1000, 57, 1000, 0, 1000)
|
stiff (1.0, 1000, 2000, 0.0, 1000, 2000)

move (name, angle, duration, stiffness)

Move performs a single motor movement. It moves the motor given by ‘name’ to an ‘angle’ in degrees over the given duration in milliseconds. Stiffness is an optional value between 0 and 1. The names of the motors and the range of the angles for the NAO robot can be found in Programming Robots using TiViPE –A step by step approach using Aldebaran’s NAO robots [1.76 MB pdf].

move (LHand, 57, 1000, 1)

movem (name, angle, duration)

Movem stands for move multiple, for a given motor name multiple angle-duration tuples can be given, and multiple motors can be given. The example clarifies this that a left and right hand can be controlled simultaneously both opening and closing hands. The command gives name, angle, duration, angle duration, angle, duration for 2 different motors. The NAO robot supports 25 motors that can be controlled in parallel giving this command.

stiff (1, 500, 0) 
&
movem (LHand, 0, 1000, 57, 1000, 0, 1000,
       RHand, 0, 1000, 57, 1000, 0, 1000)
&
stiff (0, 500, 0)

movemsi (…)

Movemsi stands for move multiple with spline interpolation. This command is used to automatically convert generated Choregraphe python code for motors into a string command. The behavior is the same as movem with the exception that spline interpolation makes the movements a bit smoother. Rather than an angle and a duration only, we now obtain six additional values: angle, ty1, a1, t1, ty2, a2, t2, duration.

posture (name, speed)

Posture moves the robot to the desired posture. Supported postures on the NAO robot are Sit, Stand, and Crouch. The standard motion speed is 80, but values between 0 and 100 can be provided.

stiff(1, 500, 0)
&
posture(Sit) 
&
posture(Stand, 80)
&
posture(Crouch, 100)
&
stiff(0, 500, 0)

behavior (name, language)

Behavior starts a behavior that has been installed on the robot. For instance a user can install an application called presentation on the robot.

behavior (presentation)
&
behavior (presentation, Dutch)

speed (value)

Speed adjusts the speed of motion. The value 95 denotes that the robot should complete in 95% of the normal time (faster). While 105 denotes slower than normal.

speed (95)
&
movem(...)
&
speed (100)

LEDs

ledon (ledname)

Switch on one or more leds. This command is equivalent to ledset (ledname, 1.0).

ledon (AllLeds)

ledoff (ledname)

Switch off one or more leds. This command is equivalent to ledset (ledname, 0.0).

ledoff (AllLeds)

ledset (ledname, val)

Ledset set the light intensity of a LED to a value between 0 and 1, 0 being of and 1 being the maximum intensity. For the NAO robot 141 names can be given, these names control either a single or a group of LEDs, and can be found at  Programming Robots using TiViPE –A step by step approach using Aldebaran’s NAO robots [1.76 MB pdf].

ledset (EarLeds, 0.5)

ledfade (ledname, val, time)

Ledfade is a LED command that changes the color to the value set by ‘val’ over a given time in milliseconds. In the example given all face LEDs are switched off in 2 seconds.

ledfade (FaceLeds, 0, 2000)

Audio

say (text, volume, language, voice, pitch)

Say converts text to speech. The first argument is required the rest is optional. The text typed should have all spaces and comma’s replaced by underscores. The volume is a value between 0 and 100, the language, needs to be supported on the robot. The pitch by default is 1 but can be increased up to 4. In common it is not recommended to change the pitch, since the speech might sound unnatural.

say (Hello__I_am_a_robot.)
&
say(Hallo__ik_ben_een_robot., 80, dutch, Femke22Enhanced)

saya (text, mode, volume, language, voice, pitch)

Saya converts text to speech like the say command, but allows the user also to make use of animation. Saya(text, disabled) switches off animated speech the speech is further the same as say(text).

saya (Hello__I_am_a_robot, disabled)
&
saya (Hello__I_am_a_robot, random)
&
saya (Hello__I_am_a_robot, contextual, 75)
&
saya (Hallo__ik_ben_een_robot, contextual, 80, Dutch, Femke22Enhanced)

play (filename, volume)

Play plays an (mp3) audio file that is stored on the robot. The volume can be set between 0 and 100. When omitting the volume the current volume on the robot is used.

play (/opt/naoqi/share/naoqi/mp3/swiftswords_ext.mp3, 75)

vocabulary (list, language, visual expression, auditory expression)

Vocabulary sets the desired language and vocabulary list which is a set of words or sentences that are separated by a semi column. Within TiViPE continuous speech recognition takes place. The user can enable visual expression. When enabled it notifies the user by the leds around the eyes. Also an auditory trigger can be given to notify the  user.

vocabulary(yes;no, English)
&
vocabulary(yes;no;move_left;move_right, English)
&
vocabulary(ja;nee, Dutch, true, false)

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.