5

私はC++とOpenCVを使ったロボットプロジェクトに取り組んでいます。このステップで、私は次のような問題に直面しました。

2つのメソッドがmoveRight()ありmoveLeft()、コードで連続して呼び出しましたが、問題は、最初のメソッドが時間(ロボットの移動の時間)を必要とするため、2番目のメソッドが実行されないことですが、Sleep(5000)それらの間に置くと(5つだと思います)移動には数秒で十分です)、すべてOKです。

Sleep(他の問題が発生するため)の使用を回避するプログラミングソリューションとは何ですか?

4

3 に答える 3

6

間接参照のレイヤーを追加してみてください。実行するアクションのキューを追加し、moveLeftとmoveRightにアクションをキューに入れ、他の場所(別のスレッド)で、次のアクションを実行する前に前のアクションが完了するのを待つことにより、キューからアクションを正しく実行します。理想的には、アクションが終了したかどうかを確認する方法が必要なので、イベントベースの方法でコーディングできます。

于 2012-12-13T09:00:04.740 に答える
2

ロボット工学では決して「推測」してはいけません。移動にかかる時間を知り、測定し、それをコードで使用する必要がありますたとえば、moveRight()頻繁に呼び出して、実行されている時間を確認します。実行中に戻るようtrueにし、それを呼び出す条件として使用しますmoveLeft()

于 2012-12-13T09:26:46.273 に答える
1

タイマーを使用できます。MoveRight() を実行するときにタイマーを 5 秒に設定し、タイマーが終了したら Moveleft() を実行します。

于 2012-12-13T09:20:23.647 に答える