|
|
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
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.
|
|