名称 |
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 // 引数3CALL: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 |