2002.07.17 現在

前へ | 次へ

【 R-CODE Command 】


名称
HALT - プログラムの終了 / AIBO のシャットダウン
形式
HALT
引数
無し
解説
実行中のプログラムを停止し、AIBO を Shutdown します。
Shutdown には約 数秒の時間が掛かります。
EDIT
SET:Power:1
FOR:i:1:10
  PLAY:SOUND:xxx:100
  WAIT:SOUND
NEXT
HALT
END

名称
POSE - 動作開始姿勢
形式
一般形
POSE:<region>:<motion>:<sound>:<light>:<wait>

POSE:AIBO:<aibo>[:<sound>:<light>:<wait>]     motion の開始ポーズへ
POSE:HEAD:<head>[:<sound>:<light>:<wait>]     motion の開始ポーズへ
POSE:LEGS:<legs>[:<sound>:<light>:<wait>]     motion の開始ポーズへ
POSE:TAIL:<tail>[:<sound>:<light>:<wait>]     motion の開始ポーズへ

POSE:HLT:<head>:<legs>:<tail>:<sound>:<light>:<wait>  HEAD+LEGS+TAIL

POSE:ESC:<semantics>:<wait>:<semantics>:<semantics>:<semantics>
引数
<region>        部位 [ AIBO | HEAD | LEGS | TAIL ]

<motion>        動作名(モーション名)
  <aibo>        全身動作名
  <head>        頭部動作名
  <legs>        四肢動作名
  <tail>        尻尾動作名

<sound>         サウンド名
<light>         LED発光パターン名

<semantics>     セマンティックス名

<wait>          動作終了待ちフラグ [ 0:待たない 1:待つ ]
解説
<motion> で指定された動作の開始姿勢をとらせます。
<motion> に指定できる動作名は <region> により異なります。
各 <region> に指定可能な動作名、および各 <motion> の開始姿勢
に関しては以下のファイルを参照してください。

    <region>          .cfgファイル
    AIBO(全身動作)  /OPEN-R/SONY/CONF/monet_01(00).cfg
    HEAD(頭部動作)  /OPEN-R/SONY/CONF/head_01(00).cfg
    LEGS(四肢動作)  /OPEN-R/SONY/CONF/legs_01(00).cfg
    TAIL(尻尾動作)  /OPEN-R/SONY/CONF/tail_01(00).cfg

各 01.cfg は外部定義のモーション一覧が定義されています。
同 00.cfg は組込動作の一覧です

開始姿勢をとらせる間に再生させる音と光を <sound>/ <light> に
指定可能です。
但し、現在の姿勢によって、開始姿勢までどのように遷移するかは
不定なので、動作と音・光の同期は制御されません。
POSEコマンドを実行した時点で、音と光の再生が開始されます。

<wait> に 1 を指定すると、開始姿勢をとり終えるまで、処理が
ブロックされます。

※電源投入時の不定姿勢からの姿勢遷移は前脚、後脚が接触しないSleep姿勢
  への遷移を使うようにしてください。
POSE:AIBO:slp_slp:::1

名称
PLAY - 動作再生
形式
一般形
PLAY:<region>:<motion>:<sound>:<light>:<wait>

PLAY:AIBO:<aibo>[:<sound>:<light>:<wait>]     motion 再生
PLAY:HEAD:<head>[:<sound>:<light>:<wait>]     motion 再生
PLAY:LEGS:<legs>[:<sound>:<light>:<wait>]     motion 再生
PLAY:TAIL:<tail>[:<sound>:<light>:<wait>]     motion 再生

PLAY:HLT:<head>:<legs>:<tail>:<sound>:<light>:<wait>   HEAD+LEGS+TAIL

PLAY:ESC:<semantics>[:<wait>:<semantics>:<semantics>:<semantics>]

PLAY:SOUND:<sound>[:<volume>:<if_not_busy>:<wait>] 音再生
PLAY:LIGHT:<light>[:<repeat>:<if_not_busy>:<wait>] 光再生 (LEDパターン)
引数
<region>        部位 [ AIBO | HEAD | LEGS | TAIL ]

<motion>        動作名(モーション名)
<aibo>          全身動作名
<head>          頭部動作名
<legs>          四肢動作名
<tail>          尻尾動作名

<sound>         サウンド名

volume = 0〜100  省略時=Sound_volume

        <sound> 中に '<' に引続いて volume を指定可能
        例:
             PLAY:SOUND:Test1<100  は  PLAY:SOUND:Test1:100 に等価

<light>         LED発光パターン名

        repeat = 0〜16 (0:Default 16:Loop) 省略時=Light_repeat

        <light> 中に '*' に引続いて repeat を指定可能
        例:
             PLAY:LIGHT:Test1*3  は  PLAY:LIGHT:Test1:3 に等価

<semantics>     セマンティックス名

<wait>          動作終了待ちフラグ [ 0:待たない 1:待つ ]
解説
<motion> で指定された動作を再生します。
<motion> に指定できる動作名は <region> により異なります。
各 <region> に指定可能な動作名、および各 <motion> の開始姿勢
に関しては以下のファイルを参照してください。

    <region>          .cfgファイル
    AIBO(全身動作)  /OPEN-R/SONY/CONF/monet_01(00).cfg
    HEAD(頭部動作)  /OPEN-R/SONY/CONF/head_01(00).cfg
    LEGS(四肢動作)  /OPEN-R/SONY/CONF/legs_01(00).cfg
    TAIL(尻尾動作)  /OPEN-R/SONY/CONF/tail_01(00).cfg

各 01.cfg は外部定義のモーション一覧が定義されています。
同 00.cfg は組込動作の一覧です

動作の再生を行うために、現在の姿勢が、その動作の開始姿勢である
かどうか調べられます。
開始姿勢ではない場合、自動的に開始姿勢までの姿勢遷移が行われます。
<motion> が再生されるのは開始姿勢になってからです。

<motion> と同期して再生させたい音と光を <sound>/ <light> に
指定できます。
<sound>/<light> の再生は、開始姿勢がとられた後、<motion> と
同期して開始されます。

<wait> に 1 を指定すると、動作を終了するまで、処理がブロック
されます。
PLAY:AIBO:oStanding:::1

名称
MOVE - 組み込み動作
形式
一般形
MOVE:<region>:<motion>:<arg1>:<arg2>:<arg3>:<arg4>

MOVE:AIBO:<aibo>           組み込み動作再生(転倒復帰など)

MOVE:LEGS:WALK:<w_style>:<dir>            歩行
MOVE:LEGS:STEP:<w_style>:<dir>:<steps>    歩行 (StepWalk)
MOVE:LEGS:KICK:<k_style>:<deg>            蹴り

MOVE:HEAD:HOME                            頭部 ホーム ポジション
MOVE:HEAD:ABS:<tilt>:<pan>:<roll>:<time>  頭部 絶対位置移動
MOVE:HEAD:REL:<tilt>:<pan>:<roll>:<time>  頭部 相対位置移動
MOVE:HEAD:C-TRACKING                      頭部 カラートラッキング
MOVE:HEAD:C-TRACKING:<time>               頭部 カラートラッキング

MOVE:TAIL:HOME                            尾部 ホーム ポジション
MOVE:TAIL:ABS:<tilt>:<pan>:<time>         尾部 絶対位置移動
MOVE:TAIL:SWING:<tilt>:<pan>:<time>       尾部 スイング
引数
<region>        部位 [ AIBO | HEAD | LEGS | TAIL ]
<motion>        動作名(モーション名)
<arg1>〜<arg4>  引数(コマンドによる)

<aibo>          組み込み全身動作名

                NToStand    不定姿勢からスタンド姿勢へ
                NToSleep    不定姿勢からスリープ姿勢へ
                NToSit      不定姿勢から座り姿勢へ
                NToPStation 不定姿勢からステーション準備姿勢へ
                PSToStation ステーション準備姿勢からステーション姿勢へ
                ReactiveGU  転倒状態(FD)から立ち姿勢への復帰
                NToFD       不定姿勢から転倒状態(FD)へ、モーションは発生しない

<w_style>       歩行スタイル        [ 0〜10 | 12(R-Turn) | 13(L-Turn) ]
<k_style>       蹴りスタイル        [         14(R-Kick) | 15(L-Kick) ]
<dir>           進行方向            [ 1〜6 ]  1:正面 2:右前 3:左前
                                              4:右横 5:左横 6:後退
<deg>           蹴り方向(角度)    [ -90〜90 ] 単位:[°]
<steps>         繰り返しステップ数  [ 0〜9999 ]

<tilt>          上下角     [ -180〜180 ] 単位:[°]
<pan>           左右角     [ -180〜180 ] 単位:[°]
<roll>          回転角     [ -180〜180 ] 単位:[°]
<time>          移動時間   [  0〜30000 ] 単位:[ms]
解説
<motion>で指定された組み込み動作を再生します。
MOVE:LEGS:WALK:1:1

名称
STOP - 動作の停止
形式
一般形
STOP:<region>

STOP:AIBO                                        全体 通常停止
STOP:LEGS                                        四肢 通常停止
STOP:HEAD                                        頭部 通常停止
STOP:TAIL                                        尾部 通常停止

STOP:SOUND                                        音  再生停止
STOP:LIGHT                                        光  再生停止
引数
<region>        部位 [ AIBO | HEAD | LEGS | TAIL ]
解説
動作を停止します。
待ち行列(キュー)に溜まっている動作は全て破棄されます。

現在、再生中の動作を行っている場合は、その動作が完了してから
停止します。
STOP:AIBO

名称
QUIT - 動作の緊急停止
形式
一般形
QUIT:<region>

QUIT:AIBO                                        全体 緊急停止
QUIT:LEGS                                        四肢 緊急停止
QUIT:HEAD                                        頭部 緊急停止
QUIT:TAIL                                        尾部 緊急停止

QUIT:SOUND    (STOP:SOUND と等価)               音  再生停止
QUIT:LIGHT    (STOP:LIGHT と等価)               光  再生停止
引数
<region>        部位 [ AIBO | HEAD | LEGS | TAIL ]
解説
動作を緊急停止します。
待ち行列(キュー)に溜まっている動作は全て破棄されます。
現在、再生中の動作も、直ちに停止されます。

※
SOUND/LIGHT 以外を QIUT した場合、AIBO の姿勢は oNeutral に
リセットされます。
QUIT:AIBO

名称
WAIT - 動作の完了待ち(同期)
形式
WAIT             直前に実行した任意動作の完了を待つ

WAIT:AIBO        直前に実行した全身動作の完了を待つ
WAIT:HEAD        直前に実行した頭部動作の完了を待つ
WAIT:LEGS        直前に実行した脚部動作の完了を待つ
WAIT:TAIL        直前に実行した尾部動作の完了を待つ

WAIT:SOUND       音再生の終了を待つ(単独で音再生中の判定にも使える)
WAIT:LIGHT       光再生の終了を待つ(単独で光再生中の判定にも使える)

WAIT:<ms>        指定時間待つ
引数
<ms>             ミリ秒  [1〜30000]   注:分解能は 32[ms]
解説
指定の条件が成り立つまで待機します。
プログラムの実行は条件成立まで一時停止されます。

何も待つものが無い状態で WAIT を実行すると、約 32[ms] 後に処理が
再開されます。
WAIT:AIBO

名称
:<label> - ラベル
形式
:<label>
引数
<label>          任意の文字列
解説
GO や IF の飛び先に使用するラベルを定義します。
CALL で呼び出されるサブルーチンの名前にも使用します。

ラベルは単独では存在できません。ラベルは次の行に付きます。
ラベルの通用範囲はプログラム全体(グローバル)です。
GO:Skip
PLAY:AIBO:Banzai_sit_C  //"Never reach this line."
:Skip
PLAY:AIBO:Banzai_sit_C  //"Skipped!"

名称
GO - ジャンプ
形式
GO:<label>
引数
<label>          飛び先ラベル
解説
<label> の付いている行にジャンプします。

サブルーチンまたはスコープをまたがっての GO は禁止されています。
もし行った場合は、スタックが破壊されプログラムは暴走します。
ループ構造からの脱出に GO を使うことは問題ありません。

可能な限り GO の使用は控えてください。
GO:Skip
PLAY:AIBO:Banzai_sit_C  //"Never reach this line."
:Skip
PLAY:AIBO:Banzai_sit_C  //"Skipped!"

名称
IF - 条件判断
形式
形式1
IF:<v1>:<op>:<v2>:THEN
〜 THEN Block 〜
ELSE
〜 ELSE Block 〜
ENDIF

形式2
IF:<v1>:<op>:<v2>:CALL:<label>[:<argc>]

形式3
IF:<v1>:<op>:<v2>:BREAK

形式4
IF:<v1>:<op>:<v2>:<then>[:<else>]
引数
<v1>             被演算項1
<op>             比較演算子
<v2>             被演算項2

比較演算子一覧

    =            等しい
    <>           等しくない
    <            より小さい
    <=           より小さいか等しい
    >            より大きい
    >=           より大きいか等しい
    &            ビット毎の論理積
    |            ビット毎の論理和
    ^            ビット毎の排他的論理和
    &&           論理積(演算項は Bool 値として扱われる: 0 ならば偽/ 0 以外なら真 )
    ||           論理和(演算項は Bool 値として扱われる: 0 ならば偽/ 0 以外なら真 )


<label>          サブルーチンのラベル
<argc>           サブルーチン引数の数

<then>           条件成立時の飛び先ラベル
<else>           条件非成立時の飛び先ラベル
解説
<v1> <op> <v2> で構成される条件式を評価し、その結果に
応じて処理を行います。

形式1の場合:
条件式が真の場合は THEN Block を実行します。
条件式が偽の場合は ELSE Block を実行します。
ELSE 〜 ELSE Block 〜 は省略可能です。
必ず ENDIF で終端してください。

形式2の場合:
条件式が真の場合に、関数 <label> を CALL します。
<label> 以降の引数に関しては CALL の説明を参照してください。

形式3の場合:
条件式が真の場合に BREAK を実行します。
ループからの脱出に用います。
詳しくは BREAK の説明を参照してください。

形式4の場合:
条件式が真の場合は <then> ラベルに GO します。
条件式が偽の場合は <else> ラベルに GO します。
GO の 注意 を参照してください。
可能な限り、この形式の使用は避けてください。
IF:x:=:0:THEN
  //"x is 0"
ELSE
  //"x is not 0"
ENDIF

名称
SWITCH - 多分岐(コンテクスト値の設定)
形式
SWITCH:<v>
引数
<v>              変数名もしくは定数
解説
<v> の値をコンテクスト値として設定します。

CASE との組み合わせにより、多分岐を実現します。
SWITCH:x
CASE:1:PLAY:AIBO:Akubi_sit  //"x = 1"
CASE:2:PLAY:AIBO:Akubi_sit  //"x = 2"
CASE:2:PLAY:AIBO:Akubi_sit  //"(two)"
CASE:3:PLAY:AIBO:Akubi_sit  //"x = 3"
CASE:ELSE:PLAY:AIBO:Akubi_sit  //"x is not 1"
CASE:ELSE:PLAY:AIBO:Akubi_sit  //"x is not 2"
CASE:ELSE:PLAY:AIBO:Akubi_sit  //"x is not 3"

名称
CSET - 多分岐(コンテクスト値の設定)
形式
CSET:<v1>:<op>:<v2>:<v3>
引数
<v1>             被演算項1
<op>             比較演算子
<v2>             被演算項2

<v3>             変数名もしくは定数
解説
<v1> <op> <v2> で構成される条件式を評価し、その結果が真ならば
<v3> の値をコンテクスト値として設定します。

CSET は「縦積み命令」です。
CSET が連続して現れた場合、真になった CSET 以降の CSET は無視
されます。

CASE との組み合わせにより、多分岐を実現します。
CSET:x:<:10:1
CSET:x:<:20:2
CSET:x:<:30:3
CSET:x:<:40:4
CSET:x:<:50:5
CASE:1:PLAY:AIBO:Akubi_sit  //"x < 10"
CASE:2:PLAY:AIBO:Akubi_sit  //"x < 20"
CASE:3:PLAY:AIBO:Akubi_sit  //"x < 30"
CASE:4:PLAY:AIBO:Akubi_sit  //"x < 40"
CASE:5:PLAY:AIBO:Akubi_sit  //"x < 50"

名称
CASE - 多分岐
形式
CASE:<const>:<command>

CASE:ELSE:<command>
引数
<const>          コンテクスト値(定数でなくてなならない)

<command>        任意の R-CODE コマンド(但し CASE は除く)
解説
コンテクスト値が <const> と等しければ <command> を実行します。

連続した CASE の最後部には CASE:ELSE も指定できます。
どの CASE の <const> にも等しくなかった場合に ELSE の <command>
が実行されます。
SWITCH:x
CASE:1:PLAY:AIBO:Akubi_sit  //"x = 1"
CASE:2:PLAY:AIBO:Akubi_sit  //"x = 2"
CASE:2:PLAY:AIBO:Akubi_sit  //"(two)"
CASE:3:PLAY:AIBO:Akubi_sit  //"x = 3"
CASE:ELSE:PLAY:AIBO:Akubi_sit  //"x is not 1"
CASE:ELSE:PLAY:AIBO:Akubi_sit  //"x is not 2"
CASE:ELSE:PLAY:AIBO:Akubi_sit  //"x is not 3"

名称
FOR〜NEXT - ループ構造
形式
FOR:<var>:<from>:<to>[:<step>]
〜 commands 〜
NEXT
引数
<var>            ループ変数
<from>           開始値
<to>             終了値
<step>           増分値
解説
変数 <var> の値を <from> から <to> まで <step> づつ増加させながら
NEXT までの文 〜commands〜 を繰り返し実行します。
FOR:i:1:10
  PLAY:AIBO:Akubi_sit
  WAIT
NEXT

FOR:i:10:1:-1
  PLAY:AIBO:Akubi_sit
  WAIT
NEXT

名称
WHILE〜WEND - ループ構造
形式
WHILE:<v1>:<op>:<v2>
〜 commands 〜
WEND
引数
<v1>             被演算項1
<op>             比較演算子
<v2>             被演算項2
解説
<v1> <op> <v2> で構成される条件式を評価し、その結果が真である間、
WEND までの文 〜commands〜 を繰り返し実行します。
SET:i:0
WHILE:i:<:10
  PLAY:AIBO:Akubi_sit
  WAIT
WEND

名称
REPEAT〜UNTIL - ループ構造
形式
REPEAT
〜 commands 〜
UNTIL:<v1>:<op>:<v2>
引数
<v1>             被演算項1
<op>             比較演算子
<v2>             被演算項2
解説
UNTIL までの文 〜commands〜 を、<v1> <op> <v2> で構成される
条件式が真になるまで、繰り返し実行します。

〜 commands〜 は必ず1回は実行されます。
SET:i:0
REPEAT
  PLAY:AIBO:Akubi_sit
  WAIT
UNTIL:i:>=:10

名称
DO〜LOOP - ループ構造
形式
DO[:WHILE|UNTIL:<v1>:<op>:<v2>]
〜 commands 〜
LOOP[:WHILE|UNTIL:<v1>:<op>:<v2>]
引数
<v1>             被演算項1
<op>             比較演算子
<v2>             被演算項2
解説
DO〜LOOP 間の文 〜 commands 〜 を繰り返し実行します。

DO および LOOP には条件式を指定可能で、その条件を満たした時に
ループを抜けます。

WHILE を指定した場合は、条件式が真の間、ループし続けます。
UNTIL を指定した場合は、条件式が真になった時にループを抜けます。

DO にも LOOP にも条件式を指定しなかった場合には、無限ループに
なります。


名称
BREAK - ループ構造からの脱出
形式
BREAK[:<break_level>]
引数
<break_level>    脱出したいループ構造のネスト数を指定します。
                 定数値である必要があります。
                 変数は指定できません。
                 指定の無い場合は 1 です。
解説
現在実行中のループ構造から脱出します。
すべてのループ構造で共通に使えます。
FOR:i:1:100
  IF:i:>:10:BREAK
  PLAY:AIBO:Akubi_sit
  WAIT
NEXT

名称
CALL - サブルーチンの呼び出し
形式
CALL:<label>[:<argc>]
引数
<label>          呼び出すサブルーチンのラベル
<argc>           事前に PUSH した引数の個数
解説
<label> のサブルーチンをコールします。
事前に PUSH 命令で任意個の引数をスタックに積み、渡すことが可能です。
<argc> にはスタックに積んだ引数の個数を指定します。

サブルーチンを呼び出した場合、それまでのコンテクスト値はスタックに
退避され、RETURNで呼び出し元に戻った時に回復されます。
CALL:sub1

PUSH:10     // 引数1
PUSH:200    // 引数2
PUSH:3000   // 引数3
CALL:sub2:3

名称
ARG - サブルーチン引数の取り出し
形式
ARG:<var>
引数
<var>            変数名
解説
サブルーチン引数の値を変数 <var> に取り出します。
PUSH で積まれた引数と同数のものを ARG で受け取る必要があります。
受け取りの順番は、PUSH で積まれた順番 FirstIn-FirstOut です。
通常のスタックのように FirstIn-LastOut ではないので注意してください。
呼び出し元:
PUSH:10
PUSH:200
PUSH:3000
CALL:sub
…

サブルーチン:
:sub
ARG:arg1    // arg1 ← 10
ARG:arg2    // arg2 ← 200
ARG:arg3    // arg3 ← 3000
…          // arg1〜3 は LOCAL 変数として用意されます。
            // 別途 LOCAL 宣言する必要は有りません。

名称
RETURN - サブルーチンからの復帰
形式
RETURN[:<return_value>]
引数
<return_value>   戻り値
解説
サブルーチンからの復帰を行います。
戻り値 <return_value> を指定することが可能です。
戻り値は呼び出し元で POP を使って受け取ります。
呼び出し元:
CALL:sub
POP:rc     // 変数 rc に戻り値 (123) を受け取る
…         // 戻り値を返すサブルーチンを呼び出した場合は必ず必要

サブルーチン側:
:sub
…
RETURN:123

名称
RET - サブルーチンからの復帰(コンテクスト値切替版)
形式
RET:<context>
引数
<context>        コンテスクト値
解説
サブルーチンからの復帰を行います。
復帰後、コンテクスト値が <context> に設定されます。
<context> の値が 0 の時は、呼び出し時のコンテクスト値が回復されます。
呼び出し元:
CALL:sub
CASE:1:PLAY:AIBO:Akubi_sit  //"case 1..."
CASE:2:PLAY:AIBO:Akubi_sit  //"case 2..."
CASE:3:PLAY:AIBO:Akubi_sit  //"case 3..."
…

サブルーチン:
:sub
…
RET:1
…
RET:2
…
RET:3

名称
ONCALL - 割り込み処理ルーチンの登録/抹消
形式
ONCALL:<v1>:<op>:<v2>:<label>[:<resume_type>:<resume_label>]

ONCALL:<-n>
引数
<v1>             被演算項1
<op>             比較演算子
<v2>             被演算項2

<label>          割り込み処理ルーチンのラベル

<resume_type>    復帰形式
<resume_label>   復帰後のジャンプ先ラベル

<-n>             登録削除する割り込みルーチンの数
解説
<v1> <op> <v2> で構成される条件が成立した時に割り込みルーチン
<label> を CALL するように登録します。
条件の指定方法は IF と同等です。

割り込みルーチンからの復帰は以下のように行われます。
<resume_type>
  0  割り込みが発生した文に復帰する
  1  割り込みが発生した文に復帰した後、<resume_label> に GO する。
  2  ONCALL文の位置に復帰する
  3  ONCALL文の位置に復帰した後、<resume_label> に GO する。
  4  プログラムの先頭に復帰する(すべてのスタックはクリアーされる)
  5  プログラムの先頭に復帰した後、<resume_label> に GO する。

上記 2〜5 の場合、対応する ONCALL 以降の ONCALL 登録は抹消されます。
但し 3,5 の場合には、復帰位置と同レベルの ONCALL 登録は保存されます。

条件の判定はステートメント(R-CODE の1行)の実行毎に行われます。

多重割り込みは禁止されています。(無視されます)

ONCALL はサブルーチンのネストの影響を受けます。
あるサブルーチン内で登録された ONCALL は、そのサブルーチンを
抜けると無効になります。


<-n> を指定した場合、直前に登録した n 個の ONCALL を抹消します。
<-n> は負の数でなくてはいけません。


名称
RESUME - 割り込みルーチンからの復帰
形式
RESUME
引数
無し
解説
割り込みルーチンからの復帰を行います。
CALL に対する RETURN に相当します。
割り込みルーチンからの復帰に RETURN を用いてはいけません。
復帰位置は対応する ONCALL の <resume_type> に依存します。
RESUME

名称
GLOBAL - 大域変数宣言
形式
GLOBAL:<var>[:<init_value>]
引数
<var>            変数名
<init_value>     初期値
解説
大域変数 <var> を用意します。
<init_value> を指定した場合は、その値に初期設定されます。

GLOBAL にも LOCAL にも宣言されていない変数名を使用をした場合は
R-CODE によってその名前の大域変数が自動的に用意されます。
GLOBAL:x:0

名称
LOCAL - 局所変数宣言
形式
LOCAL:<var>[:<init_value>]
引数
<var>            変数名
<init_value> 初期値
解説
局所変数 <var> を用意します。
<init_value> を指定した場合は、その値に初期設定されます。

局所変数はスタック上に用意されます。
サブルーチンやスコープを抜けた場合、その領域は開放されます。
LOCAL:y:0

名称
LET - 変数への値の代入
形式
LET:<var>:<value>
引数
<var>            変数名
<value> 値(変数名もしくは定数)
解説
変数への値の代入を行います。
SET のような特殊機能は働きません。
LET:x:1

名称
SET - 変数への値の設定
形式
SET:<var>:<value>

SET:COLOR:<color>

SET:<joint>:<angle>
引数
<var>            変数名
<value>          値(変数名もしくは定数)

<color>          色名
                 ORANGE  オレンジ
                 PINK    ピンク
                 YELLOW  イエロー
                 BLUE    ブルー
                 GREEN   グリーン

<joint>          セット対象関節名
<angle>          new角度
解説
変数への値の設定を行います。
変数によっては以下の特殊機能が働きます。

Power            モーター電源の On/Off を制御します。

Head_tilt        関節を指定角度に動かします。
Head_pan         主にデバッグ用です。
Head_roll        PLAY/MOVE との併用は考慮されていませんので
Head_mouth       注意してください。
Tail_1  
Tail_2  
Leg_RF_1
Leg_RF_2
Leg_RF_3
Leg_LF_1
Leg_LF_2
Leg_LF_3
Leg_RR_1
Leg_RR_2
Leg_RR_3
Leg_LR_1
Leg_LR_2
Leg_LR_3
SET:Power:1

名称
DEF:POSE - ポーズを登録
形式
DEF:POSE:<pose>
  <joint>:<angle>
  <joint>:<angle>
  ...
END

DEF:POSE:<pose>[:<N>]
引数
<pose>              pose_listに登録するポーズ名
<joint>             関節名
<angle>             角度


<pose>              登録するポーズ名の文字部分
<N>                 登録するポーズの個数
解説
<joint>で指定した関節に<angle>で指定した角度を
設定したポーズをpose_listに登録
18関節全てを設定する必要はない
ENDで設定終了

<pose>:Nで<pose>1〜<pose>Nをまとめて登録できる
全て0で初期化
この場合ENDの記述はなくて良い
DEF:POSE:pose1
  Head_pan:40
  Head_roll:50
  Leg_LF_1:90
END

DEF:POSE:p:10  // ←p1〜p10がpose_listに登録される

名称
DEF:MOVE - MOVEを定義
形式
DEF:MOVE:<move>
  <time>:<pose1>
  <time>:<pose2>
  ...
END
引数
<move>              登録する動作名
<time>              現ポーズから<pose1>までの遷移時間
<pose1>             再生するポーズ名
解説
<time>で指定した時間で<pose>で指定したポーズに
遷移する<move>をmove_listに登録
ENDで設定終了
DEF:MOVE:move1
  1000:pose1
  1000:pose2
  1000:pose3
END

名称
POSE:APK - ポーズの再生
形式
POSE:APK:<pose>[:<time>]
引数
<pose>              実行するポーズ名
<time>              現在の姿勢から <pose> までの遷移時間
解説
<pose>で指定されたポーズ名をpose_listから探し、実行
<time>で遷移時間を指定できる
POSE:APK:pose1:5000

名称
PLAY:APK - 動作の再生
形式
PLAY:APK:<move>
引数
<move>              実行する動作名
解説
引数と一致する動作名ををmove_listから探し出し、
動作の再生を行う
PLAY:APK:move1

名称
SET_POSE - ポーズの一部を更新
形式
SET_POSE:<pose>:<joint>:<angle>
引数
<pose>              更新したいポーズ名
<joint>             角度を更新したい関節名
<angle>             新しい角度
解説
<pose>の<joint>で指定される関節角度を<angle>に変更
SET_POSE:pose1:Head_pan:50 // ←pose1のHead_panを角度50に変更

名称
SET_MOVE - 動作の一部を更新
形式
SET_MOVE:<move>:<index>:<time>:<pose>
引数
<move>              更新したい動作名
<index>             更新したいポーズ名
<time>              新しい時間
<pose>              新しいポーズ
解説
<move>の<index>番目のポーズを<time>:<pose>に変更
DEF:MOVE:move1
  1000:pose1
  1000:pose3
END
SET_MOVE:move1:1:5000:pose2 // ←1000:pose3を5000:pose2に変更

名称
REC - AIBO実機の関節の角度を記録
形式
REC:POSE:<pose>[:<I>]
引数
<pose>              録画対象ポーズ名
<I>                
解説
AIBO実機の関節の角度を読み込んで記録
<I>の指定があるとき、DEF:POSE:<pose>:Nで定義されたポーズの
I番目のposeIに現在のAIBO実機の関節の角度を記録
REC:POSE:pose1

名称
LOAD_POSE - ポーズのロード
形式
LOAD_POSE:<pose>
引数
<pose>              ロードするポーズ名
解説
"メモリースティック"内のOPEN-R\DATA\APKに保存された
<pose>.apkをロードしてpose_listに追加
すでに定義済みのポーズ名の場合、上書きされる
LOAD_POSE:pose1

名称
SAVE_POSE - ポーズのセーブ
形式
SAVE_POSE:<pose>
引数
<pose>              セーブするポーズ名
解説
登録したポーズを"メモリースティック"内の
OPEN-R\DATA\APKに<pose>.apk名で保存。
SAVE_POSE:pose1  // ←"メモリースティック"にはpose1.apk名で保存される

名称
LIMITTER - リミッター制御
形式
SET:LIMMITER:ON/OFF
引数
無し
解説
LIMITTER を Off にすると、素早い動作が可能になるがAIBOに掛かる負担が
大きくなるなどマイナス面が生じます。

 角度 A から B に時間 t で動かす場合、単位時間あたりの
 動作は (B-A)/t だが、LIMITTER を On にすると、この単位時間あたりの
 動作角の Max 値が抑えらる。おなじ A→B の遷移でも、LIMITTER Off の
 ほうが、時間 t を短く設定できる
SET:LIMITTER:ON

前へ | 次へ


"AIBO"および"メモリースティック"、"R-Code"、"OPEN-R"は、もちろん、ソニー(株)の商標です。
このページはソニー(株)と関係無く、hkora11が勝手に作ったものです。