Nao さんの赤玉検出 API を使って何かしようとしています。私はすべてを一歩一歩やりたいと思っています。コールバックの先頭に callbackMutex every を書きました。if ステートメントのコールバックでイベントをサブスクライブ解除します。
関数は機能しますが、「INFO: Thread limit reached」エラーまたは unsubscribe イベント エラーが発生することがあります。
Nao はいつも赤いボールを目にしますが、多くのスレッドを作成します (と思います)。1 つのスレッドのみを使用するにはどうすればよいですか?
私はc ++で書いています。
私はこのように購読します:
memory.subscribeToEvent("redBallDetected", "moduleName", "fuctionName");
Nao がボールを見ると、この関数が呼び出されます。
void moduleName::functionName()
{
ALCriticalSection section(callbackMutex);
//create some proxies and declare some variables
try
{
//do movements
}
catch(const ALError& e) {
qiLogError("module.name") << e.what() << std::endl;
}
}
setWalkTargetVelocity を使用してロボットを歩き、if ステートメントでロボットが歩くか停止するかをチェックします。スレッドを開始または停止するために何も使用しませんでした。