Top / VstoneMagic / 命令ブロック

本項目では、VstoneMagic(以下「本ソフトウェア」と記述)に備わっている命令ブロックについて、概要及び設定項目を個別に説明します。

1. 共通の設定項目

全てのブロックには、下記の共通設定項目があります。これらは、プロパティウィンドウ内では標準で項目が折りたたまれているため、設定を変更する場合は[+]ボタンをクリックして項目を展開します。

◆設定項目:
 ・comment…ブロックに関する任意のコメントを入力
 ・isBreak…プログラム実行時にbreakポイントを設定
 ・isSelect…ブロックの選択状態
 ・location…ブロックの表示場所
       (ウィンドウの表示倍率が100%の場合を基準としたピクセル単位)


また、クラスウィンドウ上でブロックをダブルクリックしても、別途設定用のダイアログを表示します。

2. 個別の設定項目

ブロックの種類ごとに、概要・プロパティウィンドウ内の設定項目・分岐条件の設定画面の項目を説明します。分岐条件の設定画面は、分岐条件が指定できるブロックをダブルクリックすると表示されるダイアログです。概要はチュートリアルの「繰り返しや条件分岐を使った顔認識プログラムの作成」を参照してください。

メソッドブロック

blk_method.PNG


メソッドを作成します。

◆設定項目:
 ・arguments…メソッドの引数。設定・変更は、プロパティウィンドウ内の項目右端に表示される
        [...]ボタンをクリックする
   name…引数の名前。他の引数と重複しないようにする
   type…引数の型。int,Stringなどから選択、または直接テキストを入力する
 ・methodName…メソッド名。同一クラス内で重複する名前は設定できない
 ・modifire(編集不可)…メソッドの修飾子
 ・type…メソッドの型。void,int,booleanなどから選択、または直接テキストを入力する。
     void以外を設定した場合、必ずreturnブロックで戻り値を設定する必要がある。


◆分岐条件:
 なし



変数宣言

blk_var.PNG


変数を作成します。ブロックをメソッド内に接続するとローカル変数、コンストラクタ内に接続するとメンバ変数として利用できます。

◆設定項目:
 ・isInitialize…初期化を行うか(True=初期化する、false=初期化しない)。trueの場合、
         initParamも必ず設定する。
 ・initParam…変数の初期化内容。typeで選んだ型に応じて、数値や文字列・変数などを設定する
 ・name…変数名。半角英数で入力する
 ・type…変数の型。int,String,booleanなどから選択、または直接テキストを編集する


◆分岐条件:
 なし



演算

blk_calc.PNG


任意の変数に対して定数や変数を四則演算し、結果を変数に戻します。

◆設定項目:
 ・ccalc…演算子。=(代入),+=(加算),-=(減算),*= (乗算),/=(除算),%=(剰余)から選択
 ・left…参照元の変数。演算結果はここで選択した変数に代入される。
 ・right…leftに対する演算で使用する定数・変数。


◆分岐条件:
 なし



for

blk_for.PNG


for文を出力し、既定の回数プログラムを繰り返します。ループカウンタ用の変数、及び繰り返し回数(定数または変数)を設定できます。forブロックの中に別のforブロックを入れる場合、counterの変数名が重複しているとビルドエラーが発生します。

◆設定項目:
 ・counter…ループカウンタの変数名。
     name…変数名。半角英数で入力する
     type…変数の型。int,String,booleanなどから選択、または直接テキストを編集する
     isInitialize…初期化を行うか(True=初期化する、false=初期化しない)。trueの場合、
          initParamも必ず設定する。
     initParam…変数の初期化内容。typeで選んだ型に応じて、数値や文字列・変数などを設定
         する
 ・loop…繰り返しの回数。


◆分岐条件:
 なし



break

blk_break.PNG


現在実行されている一番近い繰り返しを中断して、その繰り返しの終了ブロックにジャンプします。繰り返しの外で使用するとビルドエラーが発生します。

◆設定項目:
 なし


◆分岐条件:
 なし



return

blk_return.PNG


メソッドを終了して、一つの戻り値を返します。戻り値は任意の定数・変数を設定できます。メソッドのtypeがvoid以外の場合は、必ずreturnを最後に入れてください。また、returnValueには、メソッドのtypeと同じ型の変数・定数を設定してください。

◆設定項目:
 ・returnValue…戻り値。メソッドのtypeと同じ型の定数・変数を設定する。


◆分岐条件:
 なし



衝突回避機能の一時無効

blk_lock.PNG


ロボットの衝突回避機能を一時的に無効にします。このブロックを使う場合は、ワークスペースの設定を変更し衝突回避機能の切り替えを有効にする必要があります。ブロックには開始・終了があり、間に挟んだ処理を実行する間だけ、衝突回避機能が無効になります。

モータの衝突回避機能は、2018年2月現在未対応です。今後のアップデートで対応する予定です。


◆設定項目:
 なし



無限ループ

blk_endlessloop.PNG


while(true)に相当する命令が出力され、開始・終了の間に挟んだ処理を永久に繰り返します。

◆設定項目:
 なし


◆分岐条件:
 なし


while

blk_while.PNG


一つの比較条件式を持つwhile(…)文を作成します。

◆設定項目:
 ・partA…比較条件式の左辺を設定。任意の変数または定数を設定する。
 ・partB…比較演算子を設定。=,!=,<,<=,>,>=から選択。
 ・partC…比較条件式の右辺を設定。任意の変数または定数を設定する。


◆分岐条件:
 なし



ifブロック

blk_if.PNG


if/elseによる汎用の条件分岐を作成します。分岐条件として、一つの比較条件式を設定できます。

◆設定項目:
 なし


◆分岐条件: 最小数=2、最大数=無限
 ・isOnlyElse…2番目以降の条件の場合、比較条件式を出力せずに「else」を出力するかを設定。
               trueの場合、left,condition,rightの内容に関わらず「else」を出力する
 ・left…比較条件式の左辺を設定。任意の変数または定数を設定する。
 ・condition…比較演算子を設定。=,!=,<,<=,>,>=から選択。
 ・right…比較条件式の右辺を設定。任意の変数または定数を設定する。



switch case(整数)

blk_switch_val.PNG


switch caseによる汎用の条件分岐を作成します。

◆設定項目:
 ・switch…各分岐条件と比較する数値を、任意の定数・変数から設定する。


◆分岐条件: 最小数=2、最大数=無限
 ・value…switchと比較する定数を整数で入力する
 ・isDefault…分岐条件を「default:」にするか否か



switch case(文字列)

blk_switch_str.PNG


文字列(String型)によるswitch caseの条件分岐を作成します。

◆設定項目:
 ・switch…各分岐条件と比較する文字列を、任意の文字列・変数から設定する。


◆分岐条件: 最小数=2、最大数=無限
 ・string…switchと比較する文字列を設定する
 ・isDefault…分岐条件を「default:」にするか否か



ランダム

blk_switch_rnd.PNG


switch caseによるランダムの条件分岐を作成します。

◆設定項目:
 ・range…発生する乱数の最大数を設定する。実際に得られる乱数は、この設定値-1の値になる


◆分岐条件: 最小数=2、最大数=無限
 ・random…設定項目の「range」と比較する定数を、整数で入力する
 ・isDefault…分岐条件を「default:」にするか否か



スレッド

blk_thread.PNG


プログラムによって複数の処理を同時に行いたい場合に使用します。本ブロックに挟まれた処理は別スレッド上で動作します。

◆設定項目:
 なし


◆分岐条件:
 なし






poseブロック

blk_pose.PNG


ロボットにポーズを送信します。Poseブロックをはじめとした「RobotLib」カテゴリのブロックの一部は、ロボットの機種(ワークスペースの「ターゲット」の設定)に応じて切り替わります。

◆設定項目:
 ・ip_time…ポーズの遷移時間をmsec単位の整数で設定
 ・isSync…ポーズの遷移が完了するまで処理を待機するか


◆分岐条件:
 なし



soundブロック

blk_sound.PNG


リソースファイルに登録したWavサウンドファイルを再生します。

◆設定項目:
 ・filepath…再生する音声ファイル。登録したリソースファイルから選択する
 ・isSync…音声再生が完了するまで処理を停止するか(再生終了の同期待ち)


◆分岐条件:
 なし



waitブロック

blk_wait.PNG


次の命令実行まで、一定時間待機します。

◆設定項目:
 ・time…待機時間をmsec単位の整数で設定


◆分岐条件:
 なし



モータON

blk_motOn.PNG


ロボットのモータをONにします。プログラムの開始時は必ずロボットのモータがOFFになっているので、モータを動かす場合はこのブロックでONにしてください。

◆設定項目:
 なし


◆分岐条件:
 なし



モータOFF

blk_motOff.PNG


ロボットのモータをOFFにします。

◆設定項目:
 なし


◆分岐条件:
 なし



自由記述処理

blk_free.PNG


入力したテキストを直接ソースに出力します。任意の処理を記述できますが、設定内容に問題があるとビルドエラーが発生します。また、コメントアウト(「//」「/*」「*/」)は記述しないで下さい。

◆設定項目:
 ・texts…ソースに出力するテキストを入力。
          設定・変更は、プロパティウィンドウの項目右端に表示される[...]ボタンをクリック
      する


◆分岐条件: 
 なし



ログ出力

blk_log.PNG


プログラム実行時に、コンソールウィンドウ(またはロボット内のシェルのコンソール)に任意のテキストを表示します。デバッグ用途などに利用できます。

◆設定項目:
 ・text…コンソールに出力するテキストを、任意の文字列・変数から設定


◆分岐条件: 
 なし



録音する

blk_rec.PNG


ロボットのマイクから音声を一定時間録音します。ファイルのルートディレクトリは'/var/sota/'です。

◆設定項目:
 ・file…録音するファイル名を文字列・変数で設定
 ・time…録音する時間(msec単位)を数値・変数で設定
 ・isSync…録音が完了するまで処理を停止するか(録音終了の同期待ち)


◆分岐条件: 
 なし



録音した音声を再生

blk_recplay.PNG


録音ブロックで録音した音声をロボットから再生させます。ファイルのルートディレクトリは'/var/sota/'です。

◆設定項目:
 ・file…再生するファイル名を文字列・変数で設定
 ・isSync…音声再生が完了するまで処理を停止するか(再生終了の同期待ち)


◆分岐条件: 
 なし



関節・LEDのロック

blk_pose_lock.PNG


本ブロックの開始から終了まで、設定された関節やLEDの状態を固定できます。スレッドブロックなどでプログラムを並列処理する際に「頭と体を別々に動かす」等の目的に使用します。「True」でロックを有効にし、「False」でロックを解除可能です。なお、待機動作や顔追跡などで既に別のプロセスが関節やLEDをロックしている場合、本ブロックでロック出来ない場合があります。

◆設定項目:
 ・EyeLED…目のLED
 ・SwitchLED…本体後ろスイッチのLED
 
 ・Base…土台のモータ(ID1)
 ・Head…頭のモータ(ID6,ID7,ID8)
 ・LArm…左腕のモータ(ID2,ID3)
 ・RArm…右腕のモータ(ID4,ID5)


◆分岐条件:
 なし



pose目標値取得

blk_pose_trg.PNG


poseブロックで最後にロボットに送信されたポーズの目標値を取得します。取得したポーズは'CRobotPose pose'に代入されます。ロボットのモータから実際の現在位置を取得する場合は「pose現在値取得」のブロックを使用してください。

◆設定項目:
 ・ccalc…戻り値の変数への代入、演算方法を=,+=,-=,*=,/=,%=から選択
 ・enableGetReturnValue…戻り値を変数に代入、演算するか
 ・recvVariable…戻り値を代入する変数(デフォルトは'CRobotPose pose')
         →変更の必要は基本的にありません。


◆分岐条件:
 なし



poseオフセット

blk_pose_offset.PNG


poseブロックにおける各サーボモータIDに対するオフセット値を設定します。ロボットのモータをposeブロックを使わずにプログラム的に制御したい場合に使用します。本ブロックを使う前に、pose現在値取得やpose目標値取得などであらかじめオフセット元となるposeを取得してください。

◆設定項目:
 ・offset…オフセット値をshort型で入力
 ・id…対象のサーボモータのID番号を入力


◆分岐条件:
 なし



pose現在値取得

blk_pose_cur.PNG


本ブロック使用時における各サーボーモータの角度値を取得します。取得したポーズは'CRobotPose pose'に代入されます。

◆設定項目:
 ・ccalc…戻り値の変数への代入、演算方法を=,+=,-=,*=,/=,%=から選択
 ・enableGetReturnValue…戻り値を変数に代入、演算するか
 ・recvVariable…戻り値を代入する変数(デフォルトは'CRobotPose pose')
         →変更の必要は基本的にありません。


◆分岐条件:
 なし



poseセット

blk_pose_set.PNG


本体のポーズをセットします。pose現在値取得やpose目標値取得で取得し、poseオフセットで操作したポーズをロボットに反映させるために使用します。そのため、あらかじめ送信元になるポーズをpose現在値取得やpose目標値取得で取得しておいてください。

◆設定項目:
 ・isSync…ポーズ遷移時の同期の可否
 ・msec…遷移時間(msec単位)
 ・pose…各サーボモータ値が格納された配列


◆分岐条件:
 なし






顔検出

blk_faceSearch.PNG


ロボット本体のカメラで人の顔の検出を行います。検出した顔をロボットに自動的に追跡させたい場合は「顔追跡」をお使いください。ブロックには開始・終了があり、この間に挟まれた部分で顔の検出を行います。顔検出の中に別の顔検出や顔追跡のブロックを入れると、カメラの使用が重複してプログラムの実行エラーが発生するため、これらのブロックは必ず同時に1個だけ実行されるようにしてください。

◆設定項目:
 なし


◆分岐条件: 
 なし



顔追従

blk_faceTrack.PNG


ロボット本体のカメラで人の顔を検出し、また検出状況に応じてロボットの首を自動的に動かします。首の動きは、顔が検出されなければ周囲を見回し、検出されたらその方向を向きます。顔の検出のみ行い、ロボットの首を動かさない場合は「顔検出」をお使いください。

ブロックには開始・終了があり、この間に挟まれた部分で顔の検出と追従を行います。顔追従の中に別の顔追従や顔検出のブロックを入れると、カメラの使用が重複してプログラムの実行エラーが発生するため、これらのブロックは必ず同時に1個だけ実行されるようにしてください。

◆設定項目:
 ・faceSearch…顔の検出を有効にするか否か。
        「顔が見つかったか?」を使うときは、必ずtrueに設定する


◆分岐条件: 
 なし



顔が見つかったか?

blk_isdetect.PNG


顔検出、及び顔追従の実行中に、顔が検出されたかどうかで処理を分岐します。ノイズによる誤動作を防ぐため「連続で顔が検出された回数」で条件分岐を行うことができます。分岐条件の「integerValue」を「0」、「operation」を「>」に設定すると、顔が検出されたら必ず条件が成立するようになります。

なお、顔検出、及び顔追従ブロックの外で本ブロックを使用するとプログラムの実行時にエラーが発生するので、必ずこれらのブロックの間に入れてお使いください。

◆設定項目:
 なし


◆分岐条件: 最小数=2、最大数=2
 ・isOnlyElse…2番目以降の条件の場合、比較条件式を出力せずに「else」を出力するかを設定。
               trueの場合、condition,recogtimesの内容に関わらず「else」を出力する
 ・condition…比較演算子を設定。=,!=,<,<=,>,>=から選択。
 ・recogtimes…顔の連続検出回数と比較する数値。任意の変数または定数から設定



性別の判定

blk_gender.PNG


顔検出、及び顔追従の実行中に、現在検出している顔の性別によって条件分岐を行います。分岐条件の登録数や内容は固定で、各分岐の条件は、1番目が「男性か?」、2番目の分岐が「女性か?」、3番目の分岐が「いずれでもない」です。顔が検出されていない場合も3番目の分岐に進みます。

なお、本ブロックは、「ageSexDetect」の設定をtrueにした顔検出、及び顔追従ブロックの中でお使いください。この設定がfalseになっていたり、これらのブロックの外で本ブロックを使うと、プログラムの実行時にエラーが発生します。

◆設定項目:
 なし


◆分岐条件: 
 なし(設定変更不可)



年齢の判定

blk_old.PNG


顔検出、及び顔追従の実行中に、検出された顔の年齢によって条件分岐を行います。ブロックの実行時点で顔を検出していない場合、年齢は-1になります。

なお、本ブロックは、「ageSexDetect」の設定をtrueにした顔検出、及び顔追従ブロックの中でお使いください。この設定がfalseになっていたり、これらのブロックの外で本ブロックを使うと、プログラムの実行時にエラーが発生します。

◆設定項目:
 なし


◆分岐条件: 最小数=2、最大数=無限
 ・isOnlyElse…2番目以降の条件の場合、比較条件式を出力せずに「else」を出力するかを設定。
               trueの場合、condition,ageの内容に関わらず「else」を出力する
 ・condition…比較演算子を設定。=,!=,<,<=,>,>=から選択。
 ・age…検出した顔の年齢と比較する数値。任意の変数または定数から設定



笑顔の判定

blk_smile.PNG


顔検出、及び顔追従の実行中に、検出された顔の笑顔の点数によって条件分岐を行います。笑顔の点数は整数で取得され、一般的な「笑顔」の閾値は45付近です。ブロックの実行時点で顔を検出していない場合、笑顔の値は0になります。

なお、本ブロックは、「smileDetect」の設定をtrueにした顔検出、及び顔追従ブロックの中でお使いください。この設定がfalseになっていたり、これらのブロックの外で本ブロックを使うと、プログラムの実行時にエラーが発生します。

◆設定項目:
 なし


◆分岐条件: 最小数=2、最大数=無限
 ・isOnlyElse…2番目以降の条件の場合、比較条件式を出力せずに「else」を出力するかを設定。
               trueの場合、condition,smilepointの内容に関わらず「else」を出力する
 ・condition…比較演算子を設定。=,!=,<,<=,>,>=から選択。
 ・smilepoint…検出した顔の笑顔の点数と比較する数値。任意の変数または定数から設定



年齢の取得

blk_get_old.PNG


顔検出、及び顔追従の実行中に、現在検出している顔の年齢を取得します。取得した年齢は変数faceDetectResultAgeに代入されます。ブロックの実行時点で顔を検出していない場合、年齢は-1になります。

なお、本ブロックは、「ageSexDetect」の設定をtrueにした顔検出、及び顔追従ブロックの中でお使いください。この設定がfalseになっていたり、これらのブロックの外で本ブロックを使うと、プログラムの実行時にエラーが発生します。

◆設定項目:
 なし


◆分岐条件:
 なし



笑顔の点数取得

blk_get_smilepoint.PNG

顔検出、及び顔追従の実行中に、現在検出している笑顔の点数を取得します。取得した点数は変数faceDetectResultSmileに代入されます。ブロックの実行時点で顔を検出していない場合、笑顔の値は0になります。

なお、本ブロックは、「ageSexDetect」の設定をtrueにした顔検出、及び顔追従ブロックの中でお使いください。この設定がfalseになっていたり、これらのブロックの外で本ブロックを使うと、プログラムの実行時にエラーが発生します。

◆設定項目:
 なし


◆分岐条件:
 なし



識別した顔の確率

blk_faceScore.PNG


取得した顔の特徴量が登録されている顔にどれだけ似ているかをスコアとして数値で返します。

◆設定項目:
 なし


◆分岐条件:
 ・isOnlyElse…2番目以降の条件の場合、比較条件式を出力せずに「else」を出力するかを設定。
               trueの場合、condition,scoreの内容に関わらず「else」を出力する
 ・condition…比較演算子を設定。=,!=,<,<=,>,>=から選択。
 ・score…検出した顔の確率と比較する数値。任意の変数または定数から設定



顔の特徴の取得

blk_get_facechar.PNG


認識した顔の特徴を取得します。

本ブロックははじめに、顔の認識ができたかどうかを判定し、認識できた場合はその顔の特徴を取得してブロック上側に接続された処理を実行します。顔の認識に失敗した場合(顔が見えなかったなど)は特徴の取得を行わず、ブロック下側に接続された処理を実行します。

また、登録済みのユーザの場合、名前を関連付けします。なお、本ブロックは顔認識機能が有効である必要があります。必ず顔検出・顔追跡ブロックの中で使用してください。

◆設定項目:
 ・timeout…顔の特徴取得がタイムアウトするまでの時間(msec単位)


◆分岐条件:
 なし



顔の自動サーチの可否

blk_auto_faceSearch.PNG


顔追跡中に顔が見つからない場合、自動的に首を動かして周囲の顔をサーチするかどうかの設定を行います。顔追跡を使用するプログラムで、一時的にサーチを無効にしたい場合などに使用します。

◆設定項目:
 ・faceSearch…顔未検出時にサーチを行う(True)か否(False)か


◆分岐条件:
 なし



登録された顔か

blk_face_know.PNG


顔の特徴を取得した結果が登録された顔であるか判定します。

◆設定項目:
 なし


◆分岐条件:
 ・isOnlyElse…2番目以降の条件の場合、比較条件式を出力せずに「else」を出力するかを設定。
               trueの場合、内容に関わらず「else」を出力する。



登録した顔の削除

blk_face_del.PNG


指定した顔の登録情報を削除します。

◆設定項目:
 ・username…削除する顔の名前を文字列で入力


◆分岐条件:
 なし



登録した顔のクリア(全消去)

blk_face_del_all.PNG


保存されている全ての顔の登録情報を削除します。

◆設定項目:
 なし


◆分岐条件:
 なし



顔の登録

blk_face_reg.PNG


取得した顔の特徴に名前を関連付けします。登録に使用する顔の情報(特徴量)の精度が低いと登録に失敗します。この際、ロボットに失敗の原因をしゃべらせることができます。

◆設定項目:
 ・username…登録する顔の名前を文字列で入力
 ・interval…繰り返し中で登録ブロックを利用する際、何回登録に失敗するごとにエラーメッセージを
             ロボットにしゃべらせるかの設定。
             0にするとロボットがエラーメッセージをしゃべらなくなる。
 ・isSync…ロボットがエラーメッセージをしゃべる際に、しゃべり終えるまで次の処理に進むのを待つかどうかを設定


◆分岐条件:
  なし(設定変更不可)



写真を撮る

blk_photo.PNG


本体内蔵のカメラで写真を撮影します。撮影した画像は/var/sota/photo/上に指定の名前で保存されます。ファイル形式はjpgで、拡張子(*.jpg)は自動的に付加されます。

◆設定項目:
 ・filename…保存データのファイル名を入力


◆分岐条件:
 なし



動体検知の開始

blk_motdetect_Start.PNG


ロボット本体のカメラで動体検出を行います。動体検知は「カメラの映像に大きな変化が発生したかどうか」を検出できます。例えば人の顔が見えなくても、カメラの前を横切ったり扉が開いたりして映像に大きな変化が発生することで動きを検出できます。検出をトリガーに処理を開始する場合は、「動きを検出したか」ブロックを使います。

なお、ブロックの利用上の注意として顔検出の中に別の顔検出や顔追跡のブロックを入れると、カメラの使用が重複してプログラムの実行エラーが発生するため、これらのブロックは必ず同時に1個だけ実行されるようにしてください。


◆設定項目:
 なし


◆分岐条件:
 なし



動きを検出したか

blk_motdetect_isdetect.PNG


動体検知を行っている場合、動きの変化を検知して分岐を行います。このブロックは「動体検出の開始」ブロックで囲われた中で必ず使用してください。

◆設定項目:
 なし


◆分岐条件:
 condition…比較演算子を設定。=,!=,<,<=,>,>=から選択。
 threshold…取得した検出値と比較する閾値。double型の実数で設定する。



動体検知の検出値を取得

blk_motdetect_getdetectparam.PNG


動体検知を行っている場合、最新の検出値(動きの変化の大きさ)を取得し、変数(Double)motiondetectresultに代入します。このブロックは「動体検出の開始」ブロックで囲われた中で必ず使用してください。

◆設定項目:
 なし


◆分岐条件:
 なし



顔が見えている時間が何秒か

blk_detectduration.PNG


顔認識の実行中、顔が見え続けている時間(ミリ秒)の長さで分岐します。このブロックは「顔認識」及び「顔追跡」ブロックで囲われた中で必ず使用してください。

◆設定項目:
 なし


◆分岐条件:
 condition…比較演算子を設定。=,!=,<,<=,>,>=から選択。
 msec…取得した時間と比較する閾値。long型の整数で設定する。



顔が見えている時間を取得

blk_detectduration_get.PNG


顔認識の実行中、顔が見え続けている時間(ミリ秒)を変数(long)detectDurationに代入します。このブロックは「顔認識」及び「顔追跡」ブロックで囲われた中で必ず使用してください。

◆設定項目:
 なし


◆分岐条件:
 なし



顔が見えなくなった時間が何秒か

blk_nodetectduration.PNG


顔認識の実行中、顔が見えなくなった際の累積時間(ミリ秒)の長さで分岐します。このブロックは「顔認識」及び「顔追跡」ブロックで囲われた中で必ず使用してください。

◆設定項目:
 なし


◆分岐条件:
 condition…比較演算子を設定。=,!=,<,<=,>,>=から選択。
 msec…取得した時間と比較する閾値。long型の整数で設定する。



顔が見えなくなった時間を取得

blk_nodetectduration_get.PNG


顔認識の実行中、顔が見えなくなった際の累積時間(ミリ秒)を変数(long)noDetectDurationに代入します。このブロックは「顔認識」及び「顔追跡」ブロックで囲われた中で必ず使用してください。

◆設定項目:
 なし


◆分岐条件:
 なし






TCP/IPクライアント

blk_tcp_client.PNG


同一ネットワークに存在する別のロボット及び端末に対して、TCP/IPで接続し、任意の文字列を送信します。文字列の最後には必ず改行コード(\n)が付加されます。分岐条件の登録数や内容は固定で、各分岐の条件は、1番目が「送信成功」、2番目の分岐が「それ以外(失敗)」です。

◆設定項目:
 ・data…接続先に送信する文字列。送信時には末尾に改行コード(\n)が付加される
 ・host…接続先のホスト名(IPアドレス)
 ・port…通信に使用するポート番号。


◆分岐条件: 最小数=2、最大数=2
 なし(設定変更不可)



TCP/IPサーバ初期化

blk_tcp_server_init.PNG


TCP/IPサーバの初期化を行います。TCP/IPサーバ受信のブロックを使う場合は、必ず本ブロックの開始・終了の間に入れてください。

◆設定項目:
 ・port…通信に使用するポート番号
 ・timeout…クライアントからの接続待ち受け時間(msec単位)。接続が行われた後は、この設
       定時間に関係なく、改行コードが出現するまで受信を続ける


◆分岐条件:
 なし 



TCP/IPサーバ受信

blk_tcp_server.PNG


同一ネットワークに存在する別のロボット及び端末からのTCP/IP接続に対して対応し、任意の文字列を受信します。メッセージの受信は改行コード(\n)が出現するまで行います。また、正常にメッセージを受信できたら「OK\n」のメッセージを返信します。

条件分岐は、受信したメッセージと文字列の比較で行い、両者が完全に一致した場合に条件が成立します。

本ブロックは、必ずTCP/IPサーバ初期化のブロックの間に入れてください。正しい場所で使用しないと、プログラムの実行時にエラーが発生します。

◆設定項目:
 なし 


◆分岐条件: 最小数=2、最大数=無限
 ・isOnlyElse…2番目以降の条件の場合、比較条件式を出力せずに「else」を出力するかを設定。
               trueの場合、dataの内容に関わらず「else」を出力する
 ・data…受信したデータと比較する文字列。定数または変数から設定可能。
      両者が完全一致したら条件が成立する






時刻の取得

blk_get_time.PNG


実行時の時刻を文字列として取得します。取得した時刻は変数time_stringに代入されます。

◆設定項目:
 なし


◆分岐条件:
 なし



年月日の取得

blk_getdate.PNG


実行時の年月日を文字列として取得します。取得した時刻は変数date_stringに代入されます。

◆設定項目:
 なし


◆分岐条件:
 なし



ローカル時間の取得

blk_getlocaltime.PNG


ローカル時間をロボット内のカレンダーより取得し、変数(LocalDateTime)localDateTimeに代入します。取得した情報から日時などを個別に切り出す場合は「日時の切り出し」ブロックを使います。

◆設定項目:
 なし


◆分岐条件:
 なし



日時の切り出し

blk_getdatetimeelement.PNG


項目dateTimeに記録された日時情報から、年・月・日・時・分・秒のうち一つをtypeで指定し、変数(int)getDateTimeElementに代入します。このブロックの主な使い方は、まず「ローカル時間の取得」ブロックで変数localDateTimeを取得し、そこから個別の要素を切り出すために使用します。

◆設定項目:
 ・dateTime…要素の取得元に使用するLocalDateTimeオブジェクト
 ・type…切り出す要素の選択。
         Year(年),MonthValue(月),DayOfMonth(日),Hour(時),Minuit(分),Second(秒)より選択


◆分岐条件:
 なし






発話

image_saywords.png


「say_words」の項目で設定した文章をロボットに発話させます。また、発話中にロボットの動作も自動的に実行します。音声の合成処理はネットワーク上のサーバで行うため、インターネットの接続環境が必要です。また、本ブロックはライセンスを供与されたユーザのみ利用できます。

バージョン1.23.2より以下のような仕様となります
 ・発話開始時に現在再生中の「発話」または「音声合成」の音声を停止します
 ・日本語以外の発話ができます(言語単位で有料オプションライセンスが必要)

◆設定項目:
 ・lang…発話させる言語
 ・say_words…発話させる文章
 ・scene…発話するシーン
 ・Intonation…声の抑揚を1~15で設定。標準は11
 ・pitch…声の高さを1~20で設定。標準は13
 ・speechRate…話す速さを5~11で設定。標準は11


◆分岐条件:
 なし



発話(ファイル)

image_sayfile.png


ロボット内に記録されているwaveサウンドファイルを再生し、それに合わせてモーションを実行します。ファイルパスのルートディレクトリは/var/sota/tts/になります。

バージョン1.23.2より以下のような仕様となります
 ・発話開始時に現在再生中の「発話」または「音声合成」の音声を停止します

◆設定項目:
 ・file…保存した音声合成ファイル名
 ・scene…発話するシーン


◆分岐条件:
 なし



発話(リソース)

image_sayresource.png


リソースに登録したwaveサウンドファイルを再生し、それに合わせてモーションを実行します。

バージョン1.23.2より以下のような仕様となります
 ・発話開始時に現在再生中の「発話」または「音声合成」の音声を停止します

◆設定項目:
 ・file…発話する音声ファイル(*.wav形式 リソースから選択)
 ・scene…発話するシーン


◆分岐条件:
 なし



発話・音声合成の停止

image_saystop.png


実行中の発話、または音声合成を中断します。

◆設定項目:
 なし


◆分岐条件:
 なし



待機動作の開始

blk_idling_start.PNG


待機動作を開始します。ブロックには開始・終了があり、間に挟んだ処理を実行する間だけ、待機動作を行います。

◆設定項目:
 なし


◆分岐条件:
 なし



待機動作の一時停止

blk_idling_pause.PNG


待機動作を一時停止します。ブロックには開始・終了があり、間に挟んだ処理を実行する間だけ、待機動作を停止します。

◆設定項目:
 なし


◆分岐条件:
 なし



名前の取得

blk_get_name.PNG


音声認識を行い名前を取得します。取得結果はメンバ変数speechRecogResultに格納されます。

◆設定項目:
 ・retry…聞き返す回数
 ・timeout…音声認識がタイムアウトするまでの時間(msec単位)


◆分岐条件:
 ・isOnlyElse…2番目以降の条件の場合、比較条件式を出力せずに「else」を出力するかを設定。
               trueの場合、内容に関わらず「else」を出力する



音声認識(ベストスコア)

blk_voice_recog.PNG


ロボットのマイクで取得した音声をテキストに変換し、その結果に応じて処理を分岐します。分岐条件には、認識結果と比較する文字列を設定でき、その文字列が認識結果に含まれていた場合に条件が成立します。例えば、比較する文字列に「こんにちは」と設定した場合、認識結果が「こんにちは」「どうも、こんにちは」のいずれも条件が成立します。

音声の認識処理はネットワーク上のサーバで行うため、インターネットの接続環境が必要です。また、本ブロックはライセンスを供与されたユーザのみ利用できます。

◆設定項目:
 なし


◆分岐条件:
 なし



音声認識(正規表現)

blk_voice_recog_regex.PNG


基本的な動作は上記の音声認識と同様です。本ブロックでは分岐条件に正規表現が使用可能です。

◆設定項目:
 なし


◆分岐条件: 最小数=2、最大数=無限
 ・isOnlyElse…2番目以降の条件の場合、比較条件式を出力せずに「else」を出力するかを設定。
               trueの場合、wordの内容に関わらず「else」を出力する。
 ・word…認識結果と比較する文字列。定数または変数から設定可能。
     認識結果の中にwordの文字列が含まれたら条件成立。



音声合成

blk_tts.PNG


「speechText」の項目で設定した文章をロボットに発話させます。発話ブロックと異なり、ロボットの動作は行わずに音声のみ出力します。音声の合成処理はネットワーク上のサーバで行うため、インターネットの接続環境が必要です。また、本ブロックはライセンスを供与されたユーザのみ利用できます。

バージョン1.23.2より以下のような仕様となります
 ・発話開始時に現在再生中の「発話」または「音声合成」の音声を停止します
 ・日本語以外の発話ができます(言語単位で有料オプションライセンスが必要)

◆設定項目:
 ・lang…発話させる言語
 ・speechText…音声合成する文章
 ・isSync…発話が終了するまで処理を停止するか(発話終了の同期待ち)
 ・Intonation…声の抑揚を1~15で設定。標準は11
 ・pitch…声の高さを1~20で設定。標準は13
 ・speechRate…話す速さを5~11で設定。標準は11


◆分岐条件:
 なし



音声合成して保存

blk_tts_cache.PNG


音声合成を行い、生成された音声データを発話せずにファイルへ保存します。音声の合成処理はネットワーク上のサーバで行うため、インターネットの接続環境が必要ですが、音声合成が利用できない環境で再生できるようにあらかじめ音声をファイルへキャッシュすることを想定したブロックです。ファイルは/var/sota/tts/上へ保存されます。また、本ブロックはライセンスを供与されたユーザのみ利用できます。

バージョン1.23.2より日本語以外の合成データを保存できます(言語単位で有料オプションライセンスが必要)


◆設定項目:
 ・lang…発話させる言語
 ・speechText…音声合成する文章
 ・filename…保存するファイル名
 ・Intonation…声の抑揚を1~15で設定。標準は11
 ・pitch…声の高さを1~20で設定。標準は13
 ・speechRate…話す速さを5~11で設定。標準は11


◆分岐条件:
 なし



音声認識して文字列を取得

blk_stt.PNG


 ロボットのマイクで取得した音声をテキストに変換し、その結果(文字列)を'speechRecogResult'に代入します。

音声の認識処理はネットワーク上のサーバで行うため、インターネットの接続環境が必要です。また、本ブロックはライセンスを供与されたユーザのみ利用できます。

バージョン1.23.2より日本語以外の認識ができます(言語単位で有料オプションライセンスが必要)


◆設定項目:
 ・lang…発話させる言語
 ・timeout…音声認識がタイムアウトするまでの時間(msec単位)


◆分岐条件:
 なし



はい/いいえの取得

image_yesorno.PNG


 音声認識を行い、肯定/否定によって条件分岐を行います。分岐条件の登録数や内容は固定で、各分岐の条件は、1番目が「肯定」、2番目の分岐が「否定」、3番目の分岐が「いずれでもない」です。

音声の認識処理はネットワーク上のサーバで行うため、インターネットの接続環境が必要です。また、本ブロックはライセンスを供与されたユーザのみ利用できます。

◆設定項目:
 ・retry…聞き返す回数
 ・timeout…音声認識がタイムアウトするまでの時間(msec単位)


◆分岐条件:
 なし



音声認識中断ワードの追加

image_addabortword.png


 音声認識中断ワードを追加登録します。音声認識中に登録したワードを検出すると、例外を発生させ、プログラムそのものを終了させることが出来ますが、「音声認識の中断をキャッチ」ブロックを利用することで、プログラムそのものを終了せずに、例外をキャッチして任意の処理を実行させることが可能です。

◆設定項目:
 ・word…音声認識による中断ワード


◆分岐条件:
 なし



音声認識中断ワードの全消去

image_deleteabortwords.png


 登録した音声認識中断ワードを全て消去します。

◆設定項目:
 なし


◆分岐条件:
 なし



音声認識の中断をキャッチ

image_catch.png


 上の分岐の音声認識中に音声認識中断ワードが検出されると、下の分岐に進みます。

◆設定項目:
 なし


◆分岐条件:
 なし



音声認識して結果をRecogResultで取得

image_recogresult.png


 音声認識をし、得られた結果を認識結果のクラスRecogResult recogresultに代入します。

 バージョン1.23.2より日本語以外の認識ができます(言語単位で有料オプションライセンスが必要)


◆設定項目:
 ・lang…発話させる言語
 ・timeout…音声認識がタイムアウトするまでの時間(msec単位)


◆分岐条件:
 なし






文字列を正規表現でマッチング

image_stringmatching.png


 文字列を正規表現を含む文字列と比較し、その結果によって条件分岐を行います。

◆設定項目:
 ・word…条件分岐の評価にかける文字列を任意の文字列・変数から設定する。


◆分岐条件:
・isOnlyElse…2番目以降の条件の場合、比較条件式を出力せずに「else」を出力するかを設定。
              trueの場合、wordの内容に関わらず「else」を出力する。
・word…条件分岐にかける文字列と比較する文字列。正規表現を含むことが出来る。定数または変数から設定可能。
    評価にかけた文字列と一致したら条件成立。



テキストリソース読み込み

image_readtext.png


 リソースに登録したテキストファイルを読み込んで、変数readTextに代入します。

◆設定項目:
 ・file…読み込むファイル名を文字列・変数で設定。


◆分岐条件:
 なし



GPTを利用した対話の初期化処理

gpt_init.png


※GPT関連のブロックを利用する場合は、下記手順に従って必要な参照jarを追加してください。
 >>GPT関連ブロックの参照jarの追加

 GPTを利用した対話の初期化処理を実行します。

 通常はプログラム実行時に1度だけ呼び出すようにブロックを配置してください。

 また、後述の「GPTを利用した対話の初期化処理(シンプル)」と併用せず、どちらか一方のみを利用してください。

 GPTのAPIキーはOpenAIのサイトで発行してください。


◆設定項目:
 ・apiKey…GPTのAPIキー
 ・systemMess…GPTのシステムメッセージ


◆分岐条件:
 なし



GPTを利用した対話の初期化処理(シンプル)

gpt_init.png


※GPT関連のブロックを利用する場合は、下記手順に従って必要な参照jarを追加してください。
 >>GPT関連ブロックの参照jarの追加

 GPTを利用した対話の初期化処理を実行します。システムメッセージはテンプレート化されており、パラメータ設定をして利用します。

 通常はプログラム実行時に1度だけ呼び出すようにブロックを配置してください。

 また、前述の「GPTを利用した対話の初期化処理」と併用せず、どちらか一方のみを利用してください。

 GPTのAPIキーはOpenAIのサイトで発行してください。


◆設定項目:
 ・apiKey…GPTのAPIキー
 ・name…名前
 ・age…年齢
 ・firstPersonPhrase…一人称


◆分岐条件:
 なし



GPTを利用した対話

gpt_talk.png


※GPT関連のブロックを利用する場合は、下記手順に従って必要な参照jarを追加してください。
 >>GPT関連ブロックの参照jarの追加

 GPTを利用した対話を実行します。

 対話結果情報はメンバ変数 'gptDialogueResult' に格納されます。

 また、回答内容(文字列)を 'gptDialogueContent' に代入します。

 GPTのAPIにリクエストを送信するため、インターネットの接続環境が必要です。


◆設定項目:
 ・text…対話のテキスト


◆分岐条件:
 なし


◆対話結果情報(gptDialogueResult):
 ・content…回答内容(String)
 ・usage…使用統計情報
 ・usage.prompt_tokens…プロンプトトークン(int)
 ・usage.completion_tokens…完了トークン(int)
 ・usage.total_tokens…トークンの総数 (プロンプト + 完了)(int)





GPT関連ブロックの参照jarの追加

 GPT関連のブロックを利用する際は、以下の点順で「gptdialogue.jar」をダウンロードし、ブロックを使用しているプロジェクトに参照jarとして追加してください。
gptdialogue.jarのダウンロード

参照jarへの追加手順

  1. VstoneMagicのエクスプローラで「DefaultJar」を右クリック
  2. ポップアップメニューの「追加」→「参照jar」をクリック
  3. ファイル選択で、ダウンロードした「gptdialogue.jar」を選択
    vstonemagic_gpt.png



目次