[openrtm-users 00080] VC++連携について

3 個の投稿 / 0 new
最終投稿
root
オフライン
Last seen: 1日 9時間 前
登録日: 2009-06-23 14:31
[openrtm-users 00080] VC++連携について

いつも御世話になります。宇田@NECシステムテクノロジーです

VC++とRTミドルウェアの連携方式についてお伺いします。

VC++で書かれたアプリケーションからRTミドルウェアのコンポーネント
を利用したいのですが、この場合の実装方法としてはどのような構成が
考えられますでしょうか?

1つの手段として、先日ご紹介頂きましたPython版OpenRTM-aist-0.2.0
をCOMインターフェース経由で呼び出す方法があるかと思いますが、他に
もっと良い方法がありましたらご教授をお願い致します。

┌───────────┐
│VC++ アプリケーション │
└─────┬─────┘

≪COM インターフェース≫

┌───┴───┐
│Python 仲介部 │
└───┬───┘

┌─────┴─────┐
│Python版 RTミドル環境 │
└───────────┘

なお上記のPython版OpenRTMですが、既にWeb上で入手可能でしょうか?
また将来的に、VC++版のOpenRTM-aistをリリースされる予定はござい
ますでしょうか?

未定義
root
オフライン
Last seen: 1日 9時間 前
登録日: 2009-06-23 14:31
[openrtm-users 00081] VC++連携について

あんどう@産総研です

> いつも御世話になります。宇田@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のパフォーマンス測定・評価なども行っているので、
リリースはまだしばらくかかりそうです。
すみませんが、もうしばらくお待ちください。

root
オフライン
Last seen: 1日 9時間 前
登録日: 2009-06-23 14:31
[openrtm-users 00082] VC++連携について

いつも御世話になります。宇田@NECシステムテクノロジーです

ご回答ありがとうございます。

> あんどう@産総研です
>
> > いつも御世話になります。宇田@NECシステムテクノロジーです
> >
> > VC++とRTミドルウェアの連携方式についてお伺いします。
>
> 返事が遅くなり申し訳ございません。
>
> > VC++で書かれたアプリケーションからRTミドルウェアのコンポーネント
> > を利用したいのですが、この場合の実装方法としてはどのような構成が
> > 考えられますでしょうか?
>
> この利用するというのは、VC++で書かれたアプリ内部に組み込んで
> 利用するということでしょうか?
> もしくは、分散オブジェクトとして利用するということでしょうか?

こちらでは、アプリ内部に組み込むことを考えていました。

ただ、実際にはその組込コンポーネントと外部の様々なコンポーネントを
接続して使いたいと思っていましたので、その意味ではリモート方式でも
同じ目的が果たせるように思えます。

> VC++で開発するアプリ内部に組み込むのであれば、
>
> 1. マネージャのインスタンスをどこかで生成
> 2. createComponent() でコンポーネントを生成
> 3. runManager()でマネージャを起動
>
> してやれば、createComponent() の戻り値がコンポーネントへの
> ポインタですので、あとは何とかなると思います。
> runManager()はブロックしてしまうので、不都合があれば、
> runManagerNoBlocking()で別スレッドでマネージャを起動すれば、
> 他にイベントループがあるようなプログラムでも、動くと思います。

この場合、OpenRTMの依存パッケージとして最小限必要なものは何になり
ますでしょうか? (フルセットのパッケージが必要でしょうか?)

> VC++で作ったアプリから、リモートのコンポーネントを
> 操作したい場合は、単にCORBAのオブジェクトを操作要領で
> コンポーネントを操作すれば可能だと思います。
>
> この場合も、
> 1. マネージャのインスタンスをどこかで生成
> 2. マネージャのfindComponent 等のメソッドを使ってコンポーネント
>   へのオブジェクトリファレンスを取得してコンポーネントを操作
>
> というやり方でやれば、素のCORBAのプログラムを書くよりは
> 少しは楽に出来るのではないかと思います。

どうもありがとうございます。こちらも参考にさせて頂きます。

> > 1つの手段として、先日ご紹介頂きましたPython版OpenRTM-aist-0.2.0
> > をCOMインターフェース経由で呼び出す方法があるかと思いますが、他に
> > もっと良い方法がありましたらご教授をお願い致します。
> >
> > ┌───────────┐
> > │VC++ アプリケーション │
> > └─────┬─────┘
> > │
> > ≪COM インターフェース≫
> > │
> > ┌───┴───┐
> > │Python 仲介部 │
> > └───┬───┘
> > │
> > ┌─────┴─────┐
> > │Python版 RTミドル環境 │
> > └───────────┘
>
> すみません。COMに関しては全然詳しくないので、あまりお力になれません。
> 逆にご教授願いたいくらいです。上記のような方法で連携できるのですか?
> もしよろしければ、その方法をML上でご紹介いただければ助かります。

私も試したわけではないのですが、例えば以下のサイトにPythonのクラス
をCOMオブジェクトとして登録する方法が記載されていましたので、Python
版のRTミドル環境があれば、それとVC++アプリとを仲介するPythonクラス
を作成し、COMオブジェクトとして登録すれば、両者の連携が実現できるの
ではないかと考えました次第です。

http://www.oreilly.com/catalog/pythonwin32/chapter/ch12.html

Implementing COM Objects in Python

> > なお上記のPython版OpenRTMですが、既にWeb上で入手可能でしょうか?
> > また将来的に、VC++版のOpenRTM-aistをリリースされる予定はござい
> > ますでしょうか?
>
> 研究所でのソフトウエア公開の手続きをまだとっていないので、
> 一般には公開しておりません。
> #内緒ですが、あとで個人的にお送りいたします。(笑
>
> 手続きが終わり次第公開したいと思います。
>
>
> ちなみに、現在次期バージョンの実装を行っているのですが、
> 研究の一環としてRTCのパフォーマンス測定・評価なども行っているので、
> リリースはまだしばらくかかりそうです。
> すみませんが、もうしばらくお待ちください。

ありがとうございます。度々お手数をお掛けしてすみません。

ご支援感謝いたします。

コメントを投稿するにはログインまたはユーザー登録を行ってください

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

Webサイト統計
ユーザ数:2209
プロジェクト統計
RTコンポーネント307
RTミドルウエア35
ツール22
文書・仕様書2

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク