忍者ブログ
ロボット、千葉ロッテマリーンズについていいかげんなことを書きます。
[578]  [577]  [576]  [575]  [574]  [573]  [572]  [571]  [570]  [568]  [567
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

前回はpush型の通信を扱いましたが、今回はpull型で独自の通信を実装してみます。

とりあえずOutPortCorbaCdrConsumer、OutPortCorbaCdrProviderクラスを継承したクラスを適当に作成してください。



OutPortTestProvider.py
import OpenRTM_aist
class OutPortTestProvider(OpenRTM_aist.OutPortCorbaCdrProvider):
  def __init__(self):
    OpenRTM_aist.OutPortCorbaCdrProvider.__init__(self)
    self.setInterfaceType("test")
  def __del__(self):
    OpenRTM_aist.OutPortCorbaCdrProvider.__del__(self)
    if os.path.exists(self.file_path):
      os.remove(self.file_path)
def OutPortTestProviderInit():
  factory = OpenRTM_aist.OutPortProviderFactory.instance()
  factory.addFactory("test",
                     OutPortTestProvider,
                     OpenRTM_aist.Delete)
OutPortTestConsumer.py

import OpenRTM_aist
class OutPortTestConsumer(OpenRTM_aist.OutPortCorbaCdrConsumer):
  def __init__(self):
    OpenRTM_aist.OutPortCorbaCdrConsumer.__init__(self)
def OutPortTestConsumerInit():
  factory = OpenRTM_aist.OutPortConsumerFactory.instance()
  factory.addFactory("test",
                     OutPortTestConsumer,
                     OpenRTM_aist.Delete)


あとはrtc.confのmanager.modules.preloadにファイル名を記述して初期化関数を呼び出すようにしてください。



これで準備完了です。
前回と同じくOutPortCorbaCdrConsumer、OutPortCorbaCdrProviderクラスを継承しただけなので通常の通信と何も変わりません。


とりあえずRTC_AからRTC_Bにデータを送信するとして手順を説明します。
今回はpull型なのでRTC_B側にあるOutPortCorbaCdrConsumerのget関数内でoutportcdr.get関数を使ってデータを取得しています。outportcdrはDataPort.idlで定義されたOutPortCdrのオブジェクトリファレンスなので、これを使ってOutPortCorbaCdrProviderのget関数を呼び出しています。OutPortCorbaCdrProviderのget関数内ではバッファからデータを取り出して送信するようにしています。この時点でRTC_Bにデータは送信されています。


とりあえず前回のコードを少し拡張してpull型にも対応させたものがこれです。
rtc.confに4つもファイル名を書くのは面倒なので纏めてみました。
C++で実装する場合もまとめてビルドして、OutPort~ConsumerInit・OutPort~ProviderInit、InPort~ConsumerInit・InPort~ProviderInitを呼び出す関数を作成しておくと使いやすいかもしれないです。








にほんブログ村 科学ブログ ロボットへ
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・

人気ブログランキングへ
PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
フリーエリア
最新CM
[08/31 ysuga]
[08/31 Nobu]
[08/31 ysuga]
[12/11 Nobu]
[12/11 Kanamura]
最新TB
プロフィール
HN:
Nobu
年齢:
35
性別:
男性
誕生日:
1988/09/22
職業:
あれ
趣味:
妄想、自堕落
バーコード
ブログ内検索
P R
カウンター
忍者ブログ [PR]