SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Microsoft Robotics Developer Studio 2008 入門

Robotics Developer StudioとXbox 360コントローラで
ロボット制御シミュレーションを体験してみよう

Microsoft Robotics Developer Studio 2008 入門(3)

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に示します。

図9:Bボタン、Yボタンを使うための準備
図9:Bボタン、Yボタンを使うための準備

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に示します。

図10:Ifブロックを設定したVPL図
図10:Ifブロックを設定したVPL図

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図を示します。

図11:Bボタン、Yボタンを使えるように追加したVPL図
図11:Bボタン、Yボタンを使えるように追加したVPL図

 上記、「左右のトリガー(アナログ)ボタンを使ってみる」の手順4.と同様にマニフェストファイルに「LEGO.NXT.Tribot.Simulation.Manifest.xml」を指定します。

10. 作成したVPL図を実行する

 メニューのRunからStartを選択すると、DSSランタイムが実行され[Run]ダイアログ、[Visual Simulation Environment]画面がそれぞれ続けて立ち上がります。

 Yボタンを押すとロボットが前進し、Bボタンを押すとロボットが停止する様子を確認してください。実行を終了するときは[Run]ダイアログの[STOP]ボタンを押します。

次のページ
方向パッドを使ってみる

この記事は参考になりましたか?

Microsoft Robotics Developer Studio 2008 入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト asa(asa)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4291 2009/09/17 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー