[openrtm-users 00081] Re: VC++連携について
Noriaki Ando
n-ando @ aist.go.jp
2006年 7月 13日 (木) 14:45:03 JST
あんどう@産総研です
> いつも御世話になります。宇田@NECシステムテクノロジーです
>
> VC++とRTミドルウェアの連携方式についてお伺いします。
返事が遅くなり申し訳ございません。
> VC++で書かれたアプリケーションからRTミドルウェアのコンポーネント
> を利用したいのですが、この場合の実装方法としてはどのような構成が
> 考えられますでしょうか?
この利用するというのは、VC++で書かれたアプリ内部に組み込んで
利用するということでしょうか?
もしくは、分散オブジェクトとして利用するということでしょうか?
VC++で開発するアプリ内部に組み込むのであれば、
1. マネージャのインスタンスをどこかで生成
2. createComponent() でコンポーネントを生成
3. runManager()でマネージャを起動
してやれば、createComponent() の戻り値がコンポーネントへの
ポインタですので、あとは何とかなると思います。
runManager()はブロックしてしまうので、不都合があれば、
runManagerNoBlocking()で別スレッドでマネージャを起動すれば、
他にイベントループがあるようなプログラムでも、動くと思います。
VC++で作ったアプリから、リモートのコンポーネントを
操作したい場合は、単にCORBAのオブジェクトを操作要領で
コンポーネントを操作すれば可能だと思います。
この場合も、
1. マネージャのインスタンスをどこかで生成
2. マネージャのfindComponent 等のメソッドを使ってコンポーネント
へのオブジェクトリファレンスを取得してコンポーネントを操作
というやり方でやれば、素のCORBAのプログラムを書くよりは
少しは楽に出来るのではないかと思います。
> 1つの手段として、先日ご紹介頂きましたPython版OpenRTM-aist-0.2.0
> をCOMインターフェース経由で呼び出す方法があるかと思いますが、他に
> もっと良い方法がありましたらご教授をお願い致します。
>
> ┌───────────┐
> │VC++ アプリケーション │
> └─────┬─────┘
> │
> ≪COM インターフェース≫
> │
> ┌───┴───┐
> │Python 仲介部 │
> └───┬───┘
> │
> ┌─────┴─────┐
> │Python版 RTミドル環境 │
> └───────────┘
すみません。COMに関しては全然詳しくないので、あまりお力になれません。
逆にご教授願いたいくらいです。上記のような方法で連携できるのですか?
もしよろしければ、その方法をML上でご紹介いただければ助かります。
> なお上記のPython版OpenRTMですが、既にWeb上で入手可能でしょうか?
> また将来的に、VC++版のOpenRTM-aistをリリースされる予定はござい
> ますでしょうか?
研究所でのソフトウエア公開の手続きをまだとっていないので、
一般には公開しておりません。
#内緒ですが、あとで個人的にお送りいたします。(笑
手続きが終わり次第公開したいと思います。
ちなみに、現在次期バージョンの実装を行っているのですが、
研究の一環としてRTCのパフォーマンス測定・評価なども行っているので、
リリースはまだしばらくかかりそうです。
すみませんが、もうしばらくお待ちください。
安藤慶昭@独立行政法人産業技術総合研究所 研究員
知能システム研究部門 タスクインテリジェンス研究グループ
〒305-8568 茨城県つくば市梅園1-1-1 中央第2
TEL: 029-861-5981 FAX: 029-861-5971
n-ando @ aist.go.jp, n-ando @ ieee.org
openrtm-users メーリングリストの案内