2024年11月7日

002-1.NXT ソフトウェア入門-第6回「テキストで動くロボット」

レゴマインドストームNXTのプログラム開発環境「NXTソフトウェア」について紹介していくコーナーです。
前回はファイルを読み込むプログラム(ファイルアクセスブロック)の紹介でしたが、今回はその技術を応用したロボットについて紹介します(文/松原 拓也)。

前回と同じく、メモ帳かエディタを使って、このように「MyFile.txt」を編集します。
そして、このファイルをインテリジェントブロックへ転送します。

それから、前回の最後に紹介したテキスト表示プログラムを実行します。すると、写真のように表示されます。

一見、意味不明なテキストですが、これに次のような意味を持たせています。

fow=前進
right=右回転
fow=前進
left=左回転
fow=前進

、、、ロボットの動きに関連付けしているわけです。
今回はこのテキストにしたがって動くロボットを作ってみたいと思います。

では、下準備として、ロボットを作ります。
最低限の部品で作れる3輪ロボットを考えてみました。
AポートとCポートにモーターを接続しています。

ロボットを裏返した様子です。組み立ての参考にしてください。

前作のテキスト表示プログラムを改造します。
「スイッチブロック」を追加して、テキストの比較を行います。
コントロールを「値」、タイプを「テキスト」に設定します。問題となるのが、。右の「条件」の部分です。

今まではよく「ヘルプを読んでください」と書いてきましたが、
今回に限っては違います。テキストの比較についてはヘルプに
書かれてません。ちょっと困りました。
ためしに条件の部分に「fow」を入力しました。

「移動ブロック」を使って、AとCモーターを回します。

テキストの比較を図で表すとこのようになります。
比較の対象となるテキストは「テキスト_1」という変数に入っています。この中身が「fow」の場合にはモーターを前進させるようにしてみました。

以上の設定で実行させてみたのですが、、、うまく動きませんでした。
どうやら、「fow」のテキストを検出しても、スイッチブロックの分岐で下側のみを通過してしまうようです(本来は上側も通過するはず)。

気になるのは「2.fow」の部分にあるv字のチェックマークです。「*」ボタンを押すとチェックが入るのですが、画面の説明によると「現在の条件を初期設定にする」とのことです。なにがどう初期設定なのか、、、?言葉の意味がわかりません。
デフォルトって意味でしょうか。そうだったとして、下側を通過する意味にはならないし。

いろいろと思考錯誤した結果、結局、チェックマークを「fow」ではない側に設定するとうまくいきました。ただ、条件がイコールな状態なのに、分岐部分の「×」側が実行されるという謎は残りました。

[Download]プログラムその1(NXTソフトウェア用)

「fow」だけではなく、「right」「left」のテキストにも反応して動くようにプログラムしてみました。

[Download]プログラムその2(NXTソフトウェア用)

左回転(旋回)時の設定です。

右回転(旋回)時の設定です。

動作中の様子です。テキストの内容に合わせて、動いています。

ロボットは、
fow=前進

right=右回転

fow=前進

left=左回転

fow=前進
の順で動きます。
テキストファイルの内容を書きかえれば、ロボットの動きを変えることができます。

テキストファイルをインテリジェントブロックに転送するさいに、毎回、NXTソフトウェアを立ち上げていたのでは少々面倒です。
そこで、もっと簡単にファイル転送が行えないか考えてみました。
ここで登場するのが「NeXTTool.exe」です。このツールは「BricxCC」というマインドストーム用の統合開発環境に付属するユーティリティソフトです。BricxCCはフリーソフトです(対応OSはWindows)。

コマンドプロンプトで
「NeXTTool" /COM=usb -download=MyFile.txt」
と入力すると、 USB経由でMyFile.txtをインテリジェントブロックに転送することができます。
NXTソフトウェアを使わずにすぐ転送できて便利です。

【Download】(downtext.zip / 321 Bytes) NeXTToolを呼び出すサンプルバッチファイル

今回はテキストを読み取るプログラムを紹介しましたが、逆にテキスト書き込むプログラムも作ることができます。もし、この両方のプログラムを作り込めば、パソコンなしでロボットをプログラムして動かすこともできるのではないでしょうか。夢が膨らみます。
以上で、6回に渡って続けてきました「NXTソフトウェア講座」は終了です。まだまだ極めるに至ってはいませんが、、、。ぜひ、ここで紹介しそびれた機能や命令についても試してみてください。

当ブログの内容は、弊社製品の活用に関する参考情報として提供しております。
記載されている情報は、正確性や動作を保証するものではありません。皆さまの創意工夫やアイデアの一助となれば幸いです。