[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 メーリングリストの案内