[choreonoid-users-ja 00221] Re: 即座にkinematicStateの変化を反映するには

KUNIO KOJIMA kunio.einstein @ gmail.com
2017年 1月 8日 (日) 23:08:16 JST


東京大学の小島と申します

私も同じようなことを悩んだことがありまして,ひょっとしたら菅さんが求めているものと異なるかもしれませんが,自分の見つけた解決法を共有させて頂きます

QEventLoop eventLoop;
で宣言したeventLoopに対して
bodyItem->notifyKinematicStateChange();
した直後に
 eventLoop.processEvents();
を行うと,自分の環境ではシグナルが出されて貯まっているeventが全て消化されているように思います
直後に,collision等を取得すると情報が更新されているはずです.

他により適した方法があるかもしれませんが,参考までに.


2017年1月8日 18:14 Yuki Suga <ysuga @ ysuga.net>:

> Choreonoid-MLの皆様:
> お世話になります.SSR/早大の菅です.
>
> もっとコードを読めば良いのですが・・・恥ずかしながらも質問です.
>
> Choreonoidで読み込んだモデルの姿勢を変えて干渉チェックをして干渉に関する情報を返すRTCのプラグインを作っています.
> サービスポートで受け取った関節角度を対象としているモデルに入れてから,
> WorldItemのcollisionsを使って干渉データを取り出すことができると考えているのですが,
> 関節角度を送ってからnotifyKinematicStateChangeを送っても即座には関節(ひいては干渉チェック)
> に反映されないようです(それが仕様だと思います)
>
> マニュアル通りにシグナルで受け取ってもいいのですが,サービスとして実装しているので,
> シグナルが送ってくるまで処理を待つという処理が必要になり無駄と感じています.
> この処理はサービスコール内で処理をしているので,Choreonoid内部のスレッドとは別のスレッドで動いています(動いているはずです)
>
> 無理矢理,関節角度の更新と干渉データのアップデートを促すには,
> プラグインの中でどのように処理をしたら良いのでしょうか?
>
> お教えください.よろしくお願いします.
>
>
> _______________________________________________
> choreonoid-users-ja mailing list
> choreonoid-users-ja @ choreonoid.org
> https://choreonoid.org/mailman/listinfo/choreonoid-users-ja
>
>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://choreonoid.org/pipermail/choreonoid-users-ja/attachments/20170108/83af6fab/attachment.html>


choreonoid-users-ja メーリングリストの案内