1

次のアクションを実行する必要があるかなり単純なロボットを制御する Java コードを作成しています。PID ラインフォロワー、超音波検出、色検出。

これは Java での最初のプログラムであるため、OOP に関して学ぶべきことがたくさんあります。

ロボットは、線が道路上の色を伴うトラックを実行します。ロボットは定期的に色をチェックし、見つかった場合は、読み取った色に基づいて異なる動作をする必要があります。

したがって、このプロセスは次の疑似 (Java) コードのように実行されるはずです。

Initialize and calibrate sensors.
while (! Button.ENTER.isDown)
Run PID-controller
If (ColorSensorColor = 0 || ColorSensorColor = 2)
    if (color = 0)
        turn left
    if (color = 2)
        turn right
while (UltraSonicDistance < 30cm)
    free-roll motors

したがって、私の質問は次のとおりです。メイン スレッドと並行して ColorSensor と UltraSonicSensor を実行できる 2 つのスレッドを構築するにはどうすればよいですか?

最新の実際のコードはここにあります

最後に、ご意見をお寄せいただきありがとうございます。interwebz で優れたチュートリアルを探しましたが、すべての OOP の母体を理解するには脳細胞が少なすぎるようです。

4

1 に答える 1

0

/r/javahelp kindle の /u/evil_burrito は、次の有効な提案で回答しました。

まず、リアルタイム JVM をまだ検討していない場合は、検討することをお勧めします。コントローラーを中断せずに実行する必要がある場合は、それを考慮する必要があります。FWIW、RT は私の専門分野ではありません。ただし、スレッドに関する基本的な質問は簡単に答えられます。超音波センサーとカラーセンサーそれぞれの内部クラスを作成します。これらのクラスに Runnable を実装させます。run メソッドで、適切なセンサーを確認し、外部クラスの volatile 変数を更新します。ScheduledExecutorService を使用して、これらのクラスごとにセンサー チェックを実行します (内部クラスのインスタンスを作成し、1 ミリ秒または 100 マイクロ秒などの間隔で実行されるようにエグゼキューターに送信します)。メインクラスは、揮発性変数の値を監視して、中断なしで何をすべきかを決定するだけです。

于 2015-04-28T17:45:06.087 に答える