Home






User Action Files (*.UAC)
Contents of this website are freeware and/or copyrighted material, and may not be sold under any circumstances.
Email: dogsbody@dogsbodynet.com     Home: https://dogsbodynet.com


Table of Contents:
   1.0 UAC Introduction
   2.0 Action Commands
   3.0 Motion Commands
   4.0 LED Commands
   5.0 Sound Commands
   6.0 Servo Joint Identifiers
   7.0 LED Identifiers
   8.0 Examples


1.0 UAC Introduction


User action files (*.uac) provide an alternative method for defining skits.  They are processed by OdaBuild in much the same way as Action files (*.act) or Skitter workbooks (*.aib).    All three methods name actions and specify the motion/sound/LED files, but action files & workbooks are binary formats.  

The UAC format is simple text and edited with Windows Notepad (or any text editor), plus offers much more functionality.   ie:
  • Defining skits (associate action name with mtn/sound/led filenames).
  • Import skits from the same or different Aibo platform (ie: converting 210 skits to 310)
  • Modify motions (ie: change servo positions, mirror left/right, add tail-wagging, scaling, etc...)
  • Modify LED's (ie: change LED on/off states)
  • Changing sound start time.
  • Changing repeat count (useful for creating new tailwags).
  • Changing start/stop postures (not limited to basic sleep/sit/stand poses).
  • Creating head only, leg only, tail only, or mouth only actions.
  • Creating motions & LEDs from scratch (no motion or LED files needed).
  • Over 20 commands for editing motions, LED's & sounds!


Applications:

  • Conversion tweaks.  The automatic conversion is pretty good, but rarely a minor change is needed.
  • Soccer kicks.  Create a kick in Skitter, Master Studio or Performance Editor, then have OdaBuild modify it to permit uninterupted ball tracking (just like the built in ones).   See examples section.
  • Mirror actions left/right.  Easy to do & great for variety (ala soccer kicks).
  • Tail wagging.  Making the 110/210/7 tail wag clutters up motion files.  Simply create motions without, and have OdaBuild add wagging afterwards.
  • Adjust run time of a motion.   A common problem is keeping motion & sound aligned.  Aibo running real RCode just isn't 100% predictable.   You could go back & edit your motion, or simply have OdaBuild adjust (scale) the run length of the motion slightly to compensate.



1.1 UAC File Format


A UAC script is a simple text file, changed using Windows Notepad (or any other text editor).  UAC commands are processed by OdaBuild in the order listed in the script.  Upper/lower case is ignored.

Anything after a '#' character is a comment, unless enclosed in double-quotes.  Comments can be on stand-alone lines, or follow a command (on the same line).

Examples:
    # this is a comment on a stand-alone line
    ACTION beethoven     # this comment follows a command
 


1.2 UAC Commands


ACTION Specify action name.

ACTION_PARAM Specify MWC file action paremeter (used to indicate walks/turns/searches etc...)

CONVERT Import action from another platform.

MOTION Load Motion file or create a new one.

LED Load LED file or create a new one.

SOUND Load SOUND file

MTN_INSERT Insert time in motion.

MTN_DELETE Delete time from motion (possible remove keyframes also)

MTN_SET Specify absolute servo positions.

MTN_ADJUST Adjust servo positions (adjust from current value)

MTN_COPY Copy servo positions across keyframes.

MTN_SMOOTH Smooth/interpolate servo positions across keyframes.

MTN_MIRROR Mirror servo's left/right.

MTN_SCALE Scale motion run time length.

MTN_RENAME Rename action start/stop positions.

MTN_SERVOTYPE Specify motion type & servo subset (all servos, head only, legs only, tail only, etc...)

MTN_REPEAT Set repeat count for motion.

LED_MIRROR Mirror LED's left/right.

LED_SET Specify LED value for a given time.

LED_REPEAT Set repeat count for LED.

SOUND_START Set sound start time.

SOUND_REPEAT Set repeat count for sound.



2.0 ACTION
Used to specify the name used to reference an action within RCode or within Master Studio Behavior Arranger.  Appears in the ACTION.CFG or ACTION.EXT file.   Action names matching any system action, or a previously loaded user action, replaces that previous action with the new one (ie: for overriding).

Syntax: 
  ACTION action_name 

Example:
  ACTION beethoven

 


2.1 ACTION_PARAM
Used to specify a parameter values for an action file.   This value appears in the ACTION.CFG or ACTION.EXT file.    

Syntax: 
  ACTION_PARAM <value>

Example:
  ACTION MOVE_HEAD
  ACTION_PARAM 3

 


2.2 CONVERT
Import actions from the specified AIBO model, using the provided *.ACT or *.UAC file.    If a pathname isn't given, OdaBuild looks for the action name in ODAREF (contains reference actions).  If not found, OdaBuild reports an error.   Pathnames containing spaces should be enclosed in double-quotes.

Typically used to convert ERS-210 actions to work on the 220/310 platforms.

Syntax:
  CONVERT [210/220/310]
  CONVERT [210/220/310] "pathname"

Examples:
  ## Convert builtin 210 "BEG_BALL" to current platform.
  ACTION BEG_BALL
  CONVERT 210 

  ## Convert custom action for 210 to current platform (210, 220 or 310)
  ACTION beethoven
  CONVERT 210 "..\210\beethoven.act"

 


2.3 MOTION
Specify motion file to load.   If "NEW" given, OdaBuild creates an empty motion template.  Pathnames containing spaces should be enclosed in double-quotes.

Syntax:
  MOTION "pathname"
  MOTION NEW

Example:
  MOTION "beethoven.mtn"

 


2.4 LED

Specify LED file to load.   If "NEW" given, OdaBuild creates an empty LED template.  Pathnames containing spaces should be enclosed in double-quotes.

Syntax:
  LED "pathname"
  LED NEW

Example:
  LED "beethoven.led"

 


2.5 SOUND

Specify Sound (Wave or MIDI) file to load.   Pathnames containing spaces should be enclosed in double-quotes.   Wave files format should be PCM, 8KHz, 8-Bit Mono.   MIDI files should be mono-tone (one note at a time), and single-track.  OdaBuild does not support creating empty sound files (as with motion & LED formats).

Syntax:
  SOUND "pathname"

Examples:
  SOUND "beethoven.mid"
  SOUND "bark.wav"

 


3.0 MTN_INSERT

Insert space at specified target time.   Stretches out the time between preceding keyframes and those following. 

Syntax:
  MTN_INSERT <target_time> <framecount>

Example:
  ## Insert forty ticks at time 500...
  MTN_INSERT  500  40 

 


3.1 MTN_DELETE

Deletes spaces at target time.   Note: May delete keyframes.

Syntax:
  MTN_DELETE <target_time> <framecount>

Example:
  ## Remove forty ticks at time 500. 
  ## Any keyframe falling in that range is deleted...
  MTN_DELETE  500  40 

 


3.2 MTN_SET

Set servo position.  If target time isn't a keyframe,  one is created.

Syntax:
  MTN_SET <time> <jointid> new_position  [<time> <jointid> new_position] etc...

Example:
  ## At time 500, position head to look down at 45 degrees...
  MTN_SET  500 -head_tilt -45 

 


3.3 MTN_ADJUST

Adjust servo position.  If target time isn't a keyframe, one is created.  Similar to MTN_SET, but adds a delta value to current servo position instead of replacing value.

Syntax:
  MTN_ADJUST <time> <jointid> new_position  [<time> <jointid> new_position] etc...

Example:
  ## At time 500, move head to look down an additional 20 degrees...
  MTN_ADJUST  500 -head_tilt -20 

 


3.4 MTN_COPY

Copy frames.  Copy target into frames between start & stop time, or a specified range of frames to 'start_time'.   If a joint list is given, only those subset of servos are copied. 

Syntax 1:
  MTN_COPY -target <time> -start <start_time> -stop <stop_time> [<joint-list>]

Syntax 2:
  MTN_COPY -range <range_start> <range_stop> -start <start_time> [<joint-list>]

Examples:
  ## Copy head tilt from time 500 into every keyframe between times 1000 & 1100
  MTN_COPY -target 500 -start 1000 -stop 1100 -head_tilt

  ## Copy head tilts between times 500 & 600 into keyframes starting at time 1000
  MTN_COPY -range 500 600 -start 1000 -head_tilt 

 


3.5 MTN_SMOOTH

Smooth/Interpolate joints.  Modify frames between start & stop times, to change smoothly (linearly).  ie: Draws a straight line between start & stop times, and change intervening keyframes to fall on that line.

Syntax:
  MTN_SMOOTH -start <start_time> -stop <stop_time> [<joint-list>]

Example:
  ## Make head tilt smoothly from time 500 to its position at time 600...
  MTN_SMOOTH  -start 500 -stop 600 -head_tilt 

 


3.6 MTN_MIRROR

Mirror joints left/right.  If start/stop not specified, then entire motion file is mirrored.   If motion-group not given, all joints are mirrored. 

Available motion groups are:   -all   -mouth  -head  -legs  -tails  -ears

Syntax:
  MTN_MIRROR [-start <start_time>] [-stop <stop_time>] <motion-group>

Examples:
  ## Mirror all head movements left to right between times 500 & 1000...
  MTN_MIRROR -start 500 -stop 1000 -head

  ## Mirror entire performance left to right (head, legs, tail, and LED's)...
  MTN_MIRROR 
  LED_MIRROR 

 


3.7 MTN_SCALE

Stretch or shrink motion.  Number of keyframes remains unchanged, but the amount of time between them is changed.  Useful for aligning motions to sound files (since previews never match a performance under RCode).

Factor should be 50.00 to 200.00.
   50 = Makes motion run twice as fast.
   100 = No change.
   200 = Makes motion take twice as long to run.

Warning!  This can make Aibo joints move faster than recommended limits, and potentially cause damage.  OdaBuild will issue a warning on servos moving faster than the limit.   USE CAREFULLY!

Syntax:
  MTN_SCALE <factor>

Example:
  ## Make motion run 10% faster than before.
  MTN_SCALE 90

 


3.8 MTN_RENAME

Change motion title in header.  Motion titles are organized in "a_start#stop_name" format.  The start/stop/name fields are  specified individually, or the entire full-name.  The start/stop positions are typically "sleep", "sit", or "stand".   This command does not affect servo settings -- only the motion title itself.

AIBO moves smoothly through preprogrammed transistions into the 'start' position specified.   For example, if the previous performance ended in the "stand" position, and the new performance starts in the "sit" position, AIBO automatically transitions from standing to sitting beforehand.

AIBO -assumes- its servos are in the position specified by the stop position.   If wrong, AIBO might make some extremely fast transitions for the next performance.  This causes prematurely servo wear and should be avoided.

DO NOT USE UNLESS YOU ARE CERTAIN YOU UNDERSTAND THE ABOVE!!!

Syntax 1:
    MTN_RENAME [-start position] [-stop position] [-name new_motionfile_name]

-start Change the 'start' portion of motion title.

-stop Change the 'stop' portion of motion title.

-name Change the 'name' portion of motion title.

Syntax 2:
  MTN_RENAME [-full "full_title"]
        Replace entire motion title.   Must be of "a_start#stop_name" format. 
        First character MUST match the servo type (a=all, m=mouth, l=legs, h=head, t=tail, e=ears). 
        Note: It's important to enclose the title in double-quotes, to prevent the '#' being seen as a comment.

Syntax 3:
  MTN_RENAME [-reverse]
        Swaps the 'start' and 'stop' poritions of motion title.

Examples:
  ## Change start & stop positions in title...
  MTN_RENAME -start sit -stop stand

  ## Reverse start & stop positions...
  MTN_RENAME -reverse

  ## Specified a full motion title name manually...
  MTN_RENAME -full  "a_sit#sit_beethoven5"

 


3.9 MTN_SERVOTYPE

Specify the motion servo type.  Tells Aibo which block of servos will participate in the motion.  Can be one or more of the indicate options.   OdaBuild inserts or deletes servos from the action to match, and updates first character in motion title.

If multiple servo groups are specified, OdaBuld creates one motion chunk for each (a partial motion, as required by AIBO to differentiate the servo groups).   All motion chunks will start simultaneously when the action is played.

Syntax:
  MTN_SERVOTYPE [-all][-head][-mouth][-head_axis][-legs][-tail][-ears]

-head = Head neck servos, mouth & ears
-head_axis = Head neck servos only
-mouth = mouth only
-ears = ears only
-legs = legs only
-tail = tail only

Example 1:
  ## Create leg only motion.  Removes head & tail servos.
  MTN_SERVOTYPE -legs

Example 2:
  ## Create head & tail motion.  Removes leg servos.  OdaBuild makes
  ## four motion chunks (one for each servo-group specified).
  MTN_SERVOTYPE -head_axis -mouth -ears -tail
 

 


3.10 MTN_REPEAT

Set motion repeat count.  Motion will be repeated specified number of times when performed by Aibo.  Value of -1 means repeat forever.  Typically used to create continuous tail or ear wagging on a 210.  Normal value is 1 (play once).

Syntax:
  MTN_REPEAT <count>

Examples:
  ## Make motion repeat forever.
  MTN_REPEAT -1

  ## Make motion repeat twice.
  MTN_REPEAT 2

 


4.0 LED_MIRROR

Mirror 210/220 LED's left/right.  If start/stop time not given, entire LED mirrored.

Syntax:
  LED_MIRROR [-start <start_time>] [-stop <stop_time>]

Examples:
  ## Mirror all LED's left to right between times 500 & 1000...
  LED_MIRROR -start 500 -stop 1000

  ## Mirror entire performance left to right...
  MTN_MIRROR 
  LED_MIRROR 

 


4.1 LED_SET

Turn LED(s) on/off.  Valid intensity values are 0,1,32,64,96  Other values round down.

Syntax:
  LED_SET <time> <framecount> <led-id> <intensity> [<led-id> <intensity>] etc...

Example:
  ## At time 500, turn on happy eyes at max brightness for 100 frames.
  LED_SET 500 100 -210happy 96 

 


4.2 LED_REPEAT

Set LED sequence repeat count.  LED sequence is repeated specified number of times when performed by Aibo.  Using a value of -1 means repeat forever.

Syntax:
  LED_REPEAT <count>

Examples:
  ## Make LED sequence repeat forever.
  LED_REPEAT -1

  ## Make LED sequence repeat twice.
  LED_REPEAT 2

 


5.0 SOUND_START

Specify starting point of sound in action in motion frames.   Useful for aligning sounds to motions.   When using wave files, it can also save an enormous amount of space on the memory stick.   Instead of having seconds of silence, specify a sound start time.   Value is specified in motion time ticks.

Syntax 1 (absolute time):
  SOUND_START <time> 

Syntax 2 (adjust time by a delta):
  SOUND_START [+/-]<time>

Examples:
  ## Make sound playback start at motion frame time 500.
  SOUND_START  500

  ## Make sound playback start 42 frames later.
  SOUND_START  +42

  ## Make sound playback start 30 frames earlier.
  SOUND_START  -30

 


5.1 SOUND_REPEAT

Set sound repeat count.  Sound (MIDI or Wave) is repeated specified number of times when performed by Aibo.  Value of -1 means repeat forever.

Syntax:
  SOUND_REPEAT <count>

Examples:
  ## Make sound repeat forever.
  SOUND_REPEAT -1

  ## Make sound repeat twice.
  SOUND_REPEAT 2

 


6.0 Motion Servo Joint Identifiers

The phrase "<jointid>" can be one (and only one) of the following.    "<joint-list>" can be one or more.
  -all All body joints
  -head All head joints (tilt, pan, roll, mouth, ears)
  -head_axis All head motion joints (tilt, pan, roll only)
  -legs All leg joints
  -tail Both tail joints.
  -front All front leg joints
  -back Back legs
  -legfl Front-left leg
  -legbl Back-left leg
  -legfr Front-right leg
  -legbr Back-right leg
  -head_tilt Vertical up/down
  -head_pan Left-to-Right 
  -head_toll Roll side-to-side
  -mouth Mouth
  -ear_right Right Ear
  -ear_left Left Ear
  -legfl_vert Front Left Shoulder
  -legfl_tilt or -legfl_lat Front Left Lateral
  -legfl_knee Front Lef tKnee
  -legfr_vert Front Right Shoulder
  -legfr_tilt or -legfr_lat Front Right Lateral
  -legfr_knee Front Right Knee
  -legbl_vert Rear Left Hip
  -legbl_tilt or -legbl_lat Rear Left Lateral
  -legbl_knee Rear Left Knee
  -legbr_vert Rear Right Hip
  -legbr_tilt or -legbr_lat Rear Right Lateral
  -legbr_knee Rear Right Knee
  -front_vert Both front leg vertical (shoulder)
  -front_tilt or -front_lat Both front leg tilt(shoulder)
  -front_knee Both front leg knees
  -back_vert Both rear leg vertical (shoulder)
  -back_tilt or -back_lat Both rear leg tilt (shoulder)
  -back_knee Both rear leg knees
  -leg_vert All leg vertical's
  -leg_tilt or -leg_lats All leg tilt/lateral's
  -leg_knee All leg knee's
  -tail_horz Horizontal Tail
  -tail_vert Vertical Tail



7.0 LED Identifiers

For <led-id>, can be one the following:
  -110mode

  -110mad

  -110happy



  -210mode
  -210mad Red    (left/right mad)
  -210happy Green  (left/right happy)
  -210sad Red    (left/right sad)
  -210eye1r Red    (right mad)
  -210eye1l Red    (left mad)
  -210eye2r Green  (right happy)
  -210eye2l Green  (left happy)
  -210eye3r Red    (right sad)
  -210eye3l Red    (left sad)
  -210tail1 Blue
  -210tail2 Orange
   
  -220mode
  -220mad
  -220happy
  -220sad
  -220eye1r Red    (right mad)
  -220eye1l Red    (left mad)
  -220eye2r Blue   (right happy)
  -220eye2l Blue   (left happy)
  -220eye3r Blue   (right sad)
  -220eye3l Blue   (left sad)
  -220face1 Blue
  -220face2 Blue
  -220face3 Red
  -220tail1 Blue
  -220tail2 Red
  -220tail3 Blue
  -220tailfan1
  -220tailfan2
  -220tailfan3
  -220tailfan4
  -220tailfan5
  -220tailfan6
  -220headlight
   
  -310mode
  -310mad
  -310happy
  -310sad
  -310green
  -310red
  -310blue


  -7modered Mode LED's (by ears)
  -7modegreen
  -7modeblue
  -7headyellow Head touch LED
  -7headwhite
  -7wifi WIFI led (back of head)
  -7mad
  -7happy
  -7sad
  -7facetop1 Top row of matrix LED's
  -7facetop2
  -7facetop3
  -7facetop4
  -7facetop5
  -7facemid1 Middle row of matrix LED's
  -7facemid2
  -7facemid3
  -7facemid4
  -7facemid5
  -7facelow1 Lowest row of matrix LED's
  -7facelow2
  -7back1white Frontmost back LED
  -7back1color
  -7back2white Middle back LED
  -7back2color
  -7back3white Rearmost back LED
  -7back3color


8.0  Examples

Example of simple UAC format:
  ACTION action_name
  MOTION "Motion\myaction.mtn"
  LED    "LED\myaction.led"
  SOUND  "Sound\myaction.wav"
  SOUND_START 100

Example of simple UAC format.  Same as above, but creating a left/right mirror image:
  ACTION action_mirror
  MOTION "Motion\myaction.mtn"
  LED    "LED\myaction.led"
  SOUND  "Sound\myaction.wav"
  SOUND_START 100
  MTN_MIRROR -all
  LED_MIRROR -all

Example of import & conversion (presumably for a 220 or 310):
  ACTION action_name
  FROM 210 "..\210\action.act"

Example of import & mirroring an action left/right (for a 220 or 310):
  ACTION action_mirror
  FROM 210 "..\210\action.act"
  MTN_MIRROR -all
  LED_MIRROR -all

Example of creating a "leg-only" motion.  Ideal for soccer kicks, since it allows the head to keep tracking the ball.
Make sure your motion cannot possibly allow the front legs to collide with the head!!!
  ACTION action_soccer_kick
  MOTION "Motion\mykick.mtn"
  MTN_SERVOTYPE -legs



Legalese: These programs are provided AS IS without any warranty, expressed or implied.  This includes without limitation the fitfulness for a particular purpose or application.    People using the software bear all risk as to its quality and performance.   The user of the software is responsible for any damages whether direct, indirect, special, incidental or consequential arising from a failure of these programs to operate in any manner desired.   Etc, etc...

"AIBO" is a registered trademark of Sony Corporation.  "AIBO Master Studio", "R-Code", and "Memory Stick" are trademarks of Sony Corporation.