3

私は工学クラスのロボットを開発しています。このクラスでは、NXT プログラミング言語を使用する必要があります。移動するには、ロボットは黒い実線に従う必要があります。

ロボットが線を失った場合、左に 1 秒間、または黒い線に到達するまでスキャンします。線が見つからない場合は、右に 2 秒間スキャンして最初の位置に到達し、さらに 1 秒または回転します。

ラインが見つからない場合、ロボットが動き続けるようにループを設定しました。これは 1 秒間実行されます。ラインが見つかった場合、モーションは停止しますが、1 秒間はまだ完了する必要があります。最終的には、私のプログラムは完璧に動作しますが、実際には非常に遅いことを意味します。

tl;dr LEGO Mindstorm プログラミング環境で 2 つの終了条件を使用してループを作成する方法はありますか? 1 秒が経過した後、またはセンサーが目的の入力を取得した後ですか?

4

3 に答える 3

0

できることは、タイムアウトを短くして (たとえば 100 ミリ秒)、行が見つかった場合、またはループが 10 回実行された場合に停止することです。

私はマインドストームの専門家ではありませんが、OR 機能があることを期待しています。

于 2011-12-02T12:06:56.530 に答える
0

Mindstorms には OR 関数はありません。

解決策は、終了変数を作成してから、2 つの switch ステートメントを作成することです。上記の例では、1 つの switch ステートメントにタイマーを指定し、もう 1 つのステートメントにセンサー出力を指定しました。exit 変数を false に設定し、while ループ内で exit 変数が true になるまで実行します。

タイマーが期限切れになった場合は、変数を true に設定します。それ以外の場合は、終了変数を無視します。センサーの出力についても同じことを行います。

これは厄介でかなり長い解決策ですが、かなり制限された LEGO Mindstorms システム内で問題を完全に解決します。

于 2011-12-19T15:57:05.067 に答える