| 名称 | PLAY - 動作再生 |
| 形式 |
一般形 PLAY:<type>:<name>[:<arg1>:<arg2>:<arg3>] PLAY:ACTION:<action>[:<arg1>:<arg2>:<arg3>] |
| 引数 |
<action> Action名 <arg1〜3> オプション引数(Actionにより異なる) |
| 解説 |
<action> で指定された動作を再生します。 <action> に指定できるAction名は Action.cfg に定義されたものです。 動作の再生を行うために、現在の姿勢が、その動作の開始姿勢であるかどうかまず調べられます。 開始姿勢ではない場合、自動的に開始姿勢までの姿勢遷移が行われます。 <action> が再生されるのは開始姿勢になってからです。 引数のパターン <水平角>:<距離> // WALK、KICK、TOUCHなど <水平角> // TURNなど <水平角>:<垂直角> // MOVE_HEADなど <TARGET> // SEARCHなど 角度の単位は [°] です。 距離の単位は [mm] です。 <TARGET> に指定できるのは、現在 PINK_BALL だけです。 |
| 例 | PLAY:ACTION:STAND |
| 名称 | STOP - 通常停止 |
| 形式 | STOP |
| 引数 | 無し |
| 解説 |
動作を通常停止します。 待ち行列(キュー)に溜まっている動作は全て破棄されます。 現在、動作を再生中の場合は、その動作が完了してから停止します。 |
| 例 | STOP |
| 名称 | WAIT - 動作の完了待ち(同期) |
| 形式 |
WAIT 直前に実行した動作の完了を待つ WAIT:<ms> 指定時間待つ |
| 引数 | <ms> ミリ秒 [1〜30000] 注:分解能は 32[ms] |
| 解説 |
直前の動作が完了するまで待機します。 プログラムの実行は一時停止されます。 何も待つものが無い状態で WAIT を実行しても無効です。 <ms> を指定した場合は、指定した時間だけ処理を一時停止します。 |
| 例 | WAIT |
| 名称 | :<label> - ラベル |
| 形式 | :<label> |
| 引数 | <label> 任意の文字列 |
| 解説 |
GO や IF の飛び先に使用するラベルを定義します。 CALL で呼び出されるサブルーチンの名前にも使用します。 ラベルは単独では存在できません。ラベルは次の行に付きます。 ラベルの通用範囲はプログラム全体(グローバル)です。 |
| 例 |
GO:Skip // Never reach this line. :Skip // Skipped! |
| 名称 | GO - ジャンプ |
| 形式 | GO:<label> |
| 引数 | <label> 飛び先ラベル |
| 解説 |
<label> の付いている行にジャンプします。 サブルーチンまたはスコープをまたがっての GO は禁止されています。 もし行った場合は、スタックが破壊されプログラムは暴走します。 ループ構造からの脱出に GO を使うことは問題ありません。 可能な限り GO の使用は控えてください。 |
| 例 |
GO:Skip // Never reach this line. :Skip // Skipped! |
| 名称 | IF - 条件判断 |
| 形式 |
|
| 引数 |
<v1> 被演算項1 <op> 比較演算子 <v2> 被演算項2
|
| 解説 |
<v1> <op> <v2> で構成される条件式を評価し、その結果に応じて処理を行います。
|
| 例 |
IF:x:=:0:THEN // x is 0 ELSE // x is not 0 ENDIF |
| 名称 | IF_1ST - 条件判断 |
| 形式 |
|
| 引数 |
<v1> 被演算項1 <op1> 比較演算子1 <v2> 被演算項2 <v3> 被演算項3 <op2> 比較演算子2 <v4> 被演算項4
|
| 解説 |
<v1> <op1> <v2> <v3> <op2> <v4>で構成される条件式を評価し、その結果に応じて処理を行います。
|
| 例 |
IF_1ST:x:=:0:Skip // Never reach this line. :Skip // Skipped! |
| 名称 | SWITCH - 多分岐(コンテクスト値の設定) |
| 形式 | SWITCH:<v> |
| 引数 | <v> 変数名もしくは定数 |
| 解説 |
<v> の値をコンテクスト値として設定します。 CASE との組み合わせにより、多分岐を実現します。 |
| 例 |
SWITCH:x CASE:1:GO:Label1 CASE:2:GO:Label2 CASE:3:GO:Label3 CASE:ELSE:GO:Label0 |
| 名称 | 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:GO:Label1 CASE:2:GO:Label2 CASE:3:GO:Label3 CASE:4:GO:Label4 CASE:5:GO:Label5 |
| 名称 | 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:GO:Label1 CASE:2:GO:Label2 CASE:3:GO:Label3 CASE:ELSE:GO:Label0 |
| 名称 | FOR〜NEXT - ループ構造 |
| 形式 |
FOR:<var>:<from>:<to>[:<step>] 〜 commands 〜 NEXT |
| 引数 |
<var> ループ変数 <from> 開始値 <to> 終了値 <step> 増分値 |
| 解説 | 変数 <var> の値を <from> から <to> まで <step> ずつ増加させながらNEXT までの文 〜commands〜 を繰り返し実行します。 |
| 例 |
FOR:i:1:10 // Loop NEXT FOR:i:10:1:-1 // Reverse Loop 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 // While Loop 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 // Repeat Loop 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 // For Loop 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 ではないので注意してください。
| |
| 例 |
|
| 名称 | RETURN - サブルーチンからの復帰 | |
| 形式 | RETURN[:<return_value>] | |
| 引数 | <return_value> 戻り値 | |
| 解説 |
サブルーチンからの復帰を行います。 戻り値 <return_value> を指定することが可能です。 戻り値は呼び出し元で POP を使って受け取ります。
| |
| 例 |
|
| 名称 | RET - サブルーチンからの復帰(コンテクスト値切替版) | |
| 形式 | RET:<context> | |
| 引数 | <context> コンテスクト値 | |
| 解説 |
サブルーチンからの復帰を行います。 復帰後、コンテクスト値が <context> に設定されます。 <context> の値が 0 の時は、呼び出し時のコンテクスト値が回復されます。
| |
| 例 |
|
| 名称 | 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>
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> は負の数でなくてはいけません。 |
| 例 | ONCALL:RFLeg_ON:=:1:9000 |
| 名称 | 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> | |
| 引数 |
<var> 変数名 <value> 値(変数名もしくは定数) | |
| 解説 |
変数への値の設定を行います。 変数によっては以下の特殊機能が働きます。 | |
|
Head_ON Head_OFF Head_Hit Head_Pat Head_Hit Head_LONG Back_ON Back_OFF Back_LONG Jaw_ON Jaw_OFF Jaw_LONG RFLeg_ON RFLeg_OFF LFLeg_ON LFLeg_OFF RRLeg_ON RRLeg_OFF LRLeg_ON LRLeg_OFF |
これらの値は一度セットされると自動で 0 に戻らないのでSET を使って 0 に戻す必要があります。 | |
| 例 | SET:Head_ON:0 | |
| 名称 | CLR - センサー変数のクリアー |
| 形式 | CLR:SENSORS |
| 引数 | 無し |
| 解説 | センサー変数のうち、最終値を保持する形式の変数の値を0クリアーします。 |
| 例 | CLR:SENSORS |
| 名称 | VSAVE - 変数値の保存 |
| 形式 | VSAVE:<var> |
| 引数 | <var> 変数名 |
| 解説 |
変数の値を"メモリースティック"上のファイルに保存します。 保存されるファイル名は
注意! ファイルシステムの制限により、保存できる変数名は最大8文字までです。 |
| 例 | VSAVE:x |
| 名称 | VLOAD - 変数値の読込 |
| 形式 | VLOAD:<var> |
| 引数 | <var> 変数名 |
| 解説 |
変数の値を"メモリースティック"上のファイルから読み込みます。 読み込まれるファイル名は
注意! ファイルシステムの制限により、読み込める変数名は最大8文字までです。 |
| 例 | VLOAD:x |