Skip to content
This repository has been archived by the owner on Jul 23, 2020. It is now read-only.

BodyRTCとコントローラモジュールの同期 #190

Open
y-masutani opened this issue Dec 23, 2017 · 1 comment
Open

BodyRTCとコントローラモジュールの同期 #190

y-masutani opened this issue Dec 23, 2017 · 1 comment

Comments

@y-masutani
Copy link
Contributor

先日,学会で宮本様にお目にかかった時に伺ったのですが,BodyRTCとコントローラモジュールを同期させて実行する方法があるとのこと. #158 で中岡様に解説していただいたことの解決法だと理解しました.実際に試してみたいので,具体的な方法を教えていただけないでしょうか.よろしくお願いいたします.

@s-nakaoka
Copy link
Owner

「BodyRTCとコントローラモジュールを同期させて実行する」というのは、もう少し正確に言うと、「外部で生成したRTCのonExecuteの実行を、BodyRTCのonExecuteの実行と同期させて、シミュレーションと同期させる」、ということになりますでしょうか。

宮本さんがどのような方法を想定されたのかは分かりませんが、この件で私の頭に思い浮かんだのは、OpenHRP3の時に導入された"ClockGenerator"という機能です。

この機能の仕組みとしては、ClockGeneratorを生成すると、これに対応するCORBAオブジェクトが生成されます。そこに"subscribe"という関数があり、これを使うことで、シミュレーションの進行のたびに登録した関数がコールバック的に呼ばれることになります。そして、それを用いた実行コンテキストを用意して、その実行コンテキストを使うようにすれば、外部のRTCであっても、シミュレーションと同期した動作になるというわけです。

これについて、ChoreonoidではOpenHRPプラグイン内のOpenHRPClockGeneratorItemというものがこれに対応するのですが、今確認したところ、まだ実装が不完全のようで、使える状態にはなっていませんでした。OpenHRP3の時からほとんど使われていなかったので、とりあえずこの機能を忘れないように、かたちだけ残していたのだと思います。

ただ、宮本さんは他の方法を知っているのかもしれません。ここをご覧になっていたら、何かコメントいただけると助かります>宮本さん

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants