iRobot CreateでPlayer(Player/Stage)を使用しています。 playerc_client_readを呼び出して、playerc_position2dプロキシを正しく登録していれば、プロキシのメンバーpx、py、paにxとyで移動した距離にアクセスできるはずです(メートル単位)。回転(ラジアン単位)。マルチスレッドアプリケーションで、作成のオドメトリーデータが正しく取得されない
シングルスレッドアプリケーションでこれを行うことに問題はありません。すべてのオドメトリデータは、私が必要とする場所に完全に入ります。
しかし、ロボットコントローラを独自のスレッド(pthreads)に移動しようとすると、いくつかの問題が発生します。問題は、pxだけが更新されているようだということです。 PYとPAは常にyPositionとラジアンは0どんなにロボットの動きをままここでロボットスレッド
//declare everything (including the playerc_client_t* object and playerc_position2d_t* object)
//connect to server (in pull mode or push mode, it doesn't seem to matter)
//subscribe to position2d proxy
while(!should_quit) {
playerc_client_read(client)
double xPosition = position2d->px;
double yPosition = position2d->py;
double radians = position2d->pa;
//do some stuff
sleep(10 milliseconds)
}
cleanup and unsubscribe
と案の定、唯一xPositionがこれまで設定されているの要旨です0
残ります。
オンラインで他のものを見つけることができませんでした。これは既知のバグですか?他の誰かがこの問題を抱えていますか?なぜこれが起こっているのか、誰かが洞察力を提供することはできますか?ありがとうございました。
全開示:私は大学院生で、これはクラスプロジェクトのためのものです。