左右のトリガー(アナログ)ボタンを使ってみる
図2の左トリガー(アナログ)と右トリガー(アナログ)を使ってシミュレーション環境でロボット(LEGO NXT)をボタンを押している間左旋回、右旋回させます。まず、Visual Programming Language 2008 R2 ExpressのVPLエディタを起動します。
1. 必要なブロックを配置する
図3はXInputControllerとSimulatedGenericDifferentialDriveブロックを「ダイアグラム領域」に配置した状態を示したものです。
XInputControllerブロックはXbox 360のコントローラをPC利用時に使うサービスで、SimulatedGenericDifferentialDriveブロックはシミュレーション環境で2つのモータをもつロボットを制御するためのサービスです。
XInputControllerブロックの右側に三角と丸のマークが上下に配置されています。上の三角は結果を出力するピンで、下の丸は通知を出力するピンです。今回は下の丸い通知出力ピン上でマウスを左クリックしたまま、SimulatedGenericDifferentialDriveブロック左側の入力ピンまでドラックし、この2つのブロックを接続します。これで、Xbox 360コントローラの信号の状態をパソコンで受けとり、モータの状態を決定します。
2. [Connections]ダイアログを設定する
1.で、XInputControllerとSimulatedGenericDifferentialDriveブロックを接続すると、図4のような[Connections]ダイアログが表示されるので、XInputControllerブロックのどの機能を使用するかを設定します。今回は左右のトリガー(アナログ)ボタンを使用してロボットをそれぞれ左旋回、右旋回させたいので、From側でトリガーの状態が変更した場合に通知を発生する「TriggersChanged」、To側でモータの出力をセットする「SetDrivePower」を選択し、[OK]ボタンを押します。
![図4:XInputControllerとSimulatedGenericDifferentialDriveブロックを接続した時の[Connections]ダイアログ](http://cz-cdn.shoeisha.jp/static/images/article/4291/RDS_03_002.gif)
3. [Data Connections]ダイアログを設定する
2.で[OK]ボタンを押すと、[Data Connections]ダイアログが表示されます。左右のモータを制御したいので、LeftWheelPowerとRightWheelPowerに対して図5のようにValue側でそれぞれ左のトリガー(アナログ)ボタンの値を持つ「Left」、右のトリガー(アナログ)ボタンの値を持つ「Right」を選択し、[OK]ボタンを押します。
![図5:[Data Connections]ダイアログ](http://cz-cdn.shoeisha.jp/static/images/article/4291/RDS_03_003.gif)
4. シミュレーション環境を指定する
図6にここまでのVPL図を示します。
図6において、SimulatedGenericDifferentialDriveブロックを選択し、右下の「Properties」欄の[Configuration]プロパティで「Use a manifest」を指定します。
引き続き、[Manifest]プロパティでマニフェストファイルを指定します。マニフェストファイルとは、サービス実行時の各種情報を保持しているXMLファイルです。下方にある[Import]ボタンを押すと、[Import Manifest]ダイアログが表示されるので、LEGO NXT Tribotのシミュレーション環境が設定されている「LEGO.NXT.Tribot.Simulation.Manifest.xml」を指定し、[OK]ボタンを押します。設定後の「Properties」欄を図7に示します。
詳細は第2回の図を参考にしてください。

5. 作成したVPL図を実行する
メニューのRunからStartを選択すると、DSSランタイムが実行され[Run]ダイアログ、[Visual Simulation Environment]画面がそれぞれ続けて立ち上がります。図8にVSE画面を示します。
左右のトリガーボタンを押している間、ロボットがそれぞれ、左旋回、右旋回する様子を確認してください。実行を終了するときは[Run]ダイアログの[STOP]ボタンを押します。



