Bボタン、Yボタンを使ってみる
図6のVPL図にBボタン、Yボタンを使う機能を追加してみます。今回はBボタンに停止、Yボタンに前進という動作を割り当て、Yボタンを押すとロボットが前進し、Bボタンを押すとロボットが停止するVPLを作成します。
1. 必要なブロックを「Basic Activities」欄から配置する
左上の「Basic Activities」欄からIf、Data(2個)、Mergeブロックを中央の「ダイアグラム領域」にドラック&ドロップで配置します。
Ifブロックは条件分岐をする場合に使用するブロックです。
また、Dataブロックは特定の値の受け渡しに使用するブロック、Mergeブロックは二つ以上のデーターフローをマージする場合に使用するブロックです。
2. 必要なブロックを「Services」欄から配置する
左下の「Services」欄からSimulatedGenericDifferentialDriveブロックを中央の「ダイアグラム領域」にドラック&ドロップで配置します。
1、2で配置した状態を図9に示します。
3. [Connections]ダイアログを設定する
2.で、XInputControllerとIfブロックを接続すると、[Connections]ダイアログが表示されるので、XInputControllerブロックのどの機能を使用するかを設定します。今回はBやYといったボタンを使用してロボットを制御したいのでFrom側でボタンの状態が変更した場合に通知を発生する「ButtonsChanged」、To側でボタンの状態を受け取る「Condition」を選択し、[OK]ボタンを押します。
4. Ifブロックを設定する
3.で「ButtonsChanged」を指定した場合、A、B、X、Yの4種類のボタンを判別することができます。今回はBボタンに停止、Yボタンに前進という動作を割り当てるため、Ifボタンのテキストボックスに「B」と入力し、テキストボックス下方にあるプラスマークを押すとテキストボックスが追加されるので、「Y」と入力します。この状態を図10に示します。
5. Dataブロックを設定し、Ifブロックと接続する
停止させる場合のスピードとして、Dataブロックのテキストボックスに「0」と入力し、下三角マークを押して、データ型にdoubleを選択します。同様に前進させる場合のスピードとして指定可能な-1.0から1.0までのうち、今回はDataブロックのテキストボックスに「0.8」と入力し、データ型をdoubleとします。2つのDataブロックを設定し終えたら、Ifブロックの「B」の結果出力ピン上でマウスを左クリックしたまま、「0」と入力したDataブロックの入力ピンまでドラックし、この2つのブロックを接続します。また、Ifブロックの「Y」の結果出力ピンと「0.8」と入力したDataブロックの入力ピンも同様に接続します。
6. Dataブロックをマージし、SimulatedGenericDifferentialDriveと接続する
前進、停止とも左右のモータに与える数値は同じでよいのでこの2つのDataブロックをMergeブロックを使用してマージします。マージの方法は2つのDataブロックの結果出力ピン上でそれぞれマウスを左クリックしたままMergeブロックの入力ピンまでドラックします。同様にMergeブロックの結果出力ピンとSimulatedGenericDifferentialDriveの入力ピンを接続します。
7. [7][Connections]ダイアログを設定する
6.でMergeブロックとSimulatedGenericDifferentialDriveを接続すると、[Connections]ダイアログが表示されるので、前進させる駆動力をSimulatedGenericDifferentialDriveに入力するためにFrom側で手順6.でマージした値を持つ「ForwardedOutput」、To側でモータの出力をセットする「SetDrivePower」を選択し、[OK]ボタンを押します。
8. [Data Connections]ダイアログを設定する
7.で[OK]ボタンを押すと、[Data Connections]ダイアログが表示されます。
Dataブロックで入力した値で左右のモータを制御したいので、LeftWheelPowerとRightWheelPowerに対してValue側でそれぞれ手順6.でマージした値を持つ「value」を選択し、[OK]ボタンを押します。
9. シミュレーション環境を指定する
図11にここまでのVPL図を示します。
上記、「左右のトリガー(アナログ)ボタンを使ってみる」の手順4.と同様にマニフェストファイルに「LEGO.NXT.Tribot.Simulation.Manifest.xml」を指定します。
10. 作成したVPL図を実行する
メニューのRunからStartを選択すると、DSSランタイムが実行され[Run]ダイアログ、[Visual Simulation Environment]画面がそれぞれ続けて立ち上がります。
Yボタンを押すとロボットが前進し、Bボタンを押すとロボットが停止する様子を確認してください。実行を終了するときは[Run]ダイアログの[STOP]ボタンを押します。



