コンピューターをターゲットにしていないが、NXTではなくLabViewでこのプログラムが機能するのはなぜですか?
質問
Lego MindStorms NXT 2.0のLabViewで書かれたプログラムがあります。ターゲットがコンピューターに設定されている場合、プログラムは正常に機能します。ただし、ターゲットをNXTに設定すると、プログラムはコンピューターのターゲットを絞ったときと同じように機能しません。
このプログラムにより、ロボットは、NXTの超音波センサーによって検出されるオブジェクトから30センチ離れたところになるまで前進します。その後、ロボットが停止します。オブジェクトが移動され、NXTの超音波センサーから30センチ以内にオブジェクトがない場合、ロボットはオブジェクトから再び30センチ離れるまで再び前進します。その後、停止します。
これは、ターゲットがLabViewのコンピューターに設定されているときに機能しますが、NXTに設定されている場合は機能しません。 NXTに設定すると、最初のオブジェクトが検出されると、停止します。ただし、オブジェクトが削除され、超音波センサーの30センチ以内にオブジェクトがなくなった場合、ロボットは静止したままで、前進しません。
これがブロック図のスクリーンショットです:
どんな助けも大歓迎です。
解決 3
NXTを遅くするために200msの待機ブロックを追加してこれを修正しました。これはうまくいき、レンガがそれ自体を前進しているように見えました。
他のヒント
NXTでの私の経験は非常に限られていますが、文字列VISを使用して、NXTの画面(私、距離などなど)にいくつかのデバッグデータを表示することをお勧めします。これにより、プログラムがどこにあるかを判断することができ、問題を見つけるのに役立ちます。
サイドポイントとして、LVでは、実行率を制御するものを持たないループを持つことは一般に推奨されません。これは、NXTで実行されているコードでは異なる場合がありますが、ループに簡単な待機を追加することをお勧めします。
あなたのコードに間違いはありませんが、NXTターゲットに展開するときに私がすることは、ループを無限にし(停止を偽定数に置き換えて)、波形チャートを削除することです。 NXTでは必要ありません。