[openrtm-users 01437] Re: OpenRTM-aist-1.0.0でのonWriteコールバックについて

Ando Noriaki n-ando @ aist.go.jp
2010年 10月 22日 (金) 01:47:47 JST


末永さま

安藤です

詳しく見てないのではずしてたらすみません。
addConnectorDataListener の第3引数に false を与えるとどうなりますか?

http://www.openrtm.org/OpenRTM-aist/documents/current/cxx/classreference_ja/classRTC_1_1InPortBase.html#87108f42506a526d05dd72d67a1654af


2010年10月22日0:55 Tsuyoshi Suenaga <tsuyo-s @ is.naist.jp>:
> OpenRTM-aistユーザの皆さん
>
> 奈良先端大の末永です.
>
> 以前,産総研の安藤様からのメール[openrtm-users 00512]で
> onWriteコールバックを用いた通信方法(OpenRTM-aist-0.4.2用)がありましたが,
> こちらをセック中本様からのメール[openrtm-users 01328]を参考に
> OpenRTM-aist-1.0.0 用に書き換えてみました.
>
> 一応,動いてはいるのですが,RTSystemEditorからPipe RTCをexitした際に
> 異常終了で終わっていることに気が付きました.
>
> あくまで終了時だけなので影響は少ないのですが,あまり気持ちの良いものではありません.
> 何か記述で間違っていたり,勘違いしている点などありますでしょうか?
> 何かお気づきの方がおりましたら,ご教授頂けましたら幸いです.
>
> どうぞよろしくお願い致します.
>
>
> ・添付ファイルの説明
> Pipe_042.tar.g_  OpenRTM-aist-0.4.2用(ほぼ安藤様のファイル)
> Pipe_100.tar.g_  OpenRTM-aist-1.0.0用
> GetAndSendTimedLong.tar.g_  動作テスト用
> diff_Pipe_cpp.pdf  Pipe.cppの差分
> diff_Pipe_h.pdf  Pipe.hの差分
> OnWriteCallBack.png  実行結果
> error_when_exiting.txt  終了時に出力されるエラー(gdb表示)
> ※ 添付ファイル *.tar.g_ は *.tar.gz にリネームして解凍してください。
>
> ・参考にしたメール
> [openrtm-users 01328] OpenRTM-aist-1.0.0-RELEASEにおけるRC1からの変更点
> [openrtm-users 00512] Re: onWriteConvert
>
> 以上.
>
>
> 2008年7月8日20:19 Ando Noriaki <n-ando @ aist.go.jp>:
>> From  Ando Noriaki <n-ando @ aist.go.jp>
>> 日付    2008年7月8日20:19
>> 件名    [openrtm-users 00512] Re: onWriteConvert
>>
>>
>> 産総研 安藤です
>>
>> 先ほどのメールの回答です。
>>
>> 添付のサンプルをご覧ください。
>> 添付ファイル Pipe.tar.g_ は Pipe.tar.gz にリネームして解凍してください。
>>
>> このコンポーネントはTimedLong型のInPort/OutPortをひとつづつもち、
>> InPortに入ってきたデータをOutPortへコールバックを使って即座に
>> 伝送するものです。
>>
>> コンパイル後、ConsoleInとConsoleOutの間にはさんで接続してください。
>> Pipeコンポーネントはコールバックを使用しているので、
>> onExecuteでデータの読み込み+書き出しをしなくても、
>> InPortから入ったデータが即座にOutPortから出て行きます。
>> したがって、Active化しなくても動作します。
>>
>>
>>
>> 2008/07/08 19:48 Ando Noriaki <n-ando @ aist.go.jp>:
>>> 産総研 安藤です
>>>
>>> 高エネ研の安様より以下のようなメールをいただきましたので、
>>> 参考までにOpenRTM MLに転送させていただきます。
>>>
>>>
>>> ---------- 転送されたメッセージ ----------
>>> 差出人: Yoshiji Yasu <Yoshiji.Yasu @ kek.jp>
>>> 日付: 2008/07/08 10:02
>>> 件名: [rtm-kek 00535] onWriteConvert
>>> 宛先: rtm-kek @ m.aist.go.jp
>>>
>>>
>>> 安です。onWriteConvertについて質問です。
>>>
>>> proc1, proc2, proc3という3つのコンポーネントの中のproc2にコールバックを
>>> 入れようとしています。やりたいことは、proc2のInPortの RingBufferのwrite
>>> のタイミングで、proc2のメインメソッドをすっ飛ばして、write時のコールバッ
>>> クでOutPortのwrite を実行してしまうということです。
>>>
>>> InPortCorbaConsumer.hで
>>> status = _ptr()->put(tmp);
>>> でCORBAのデータ転送とRingBufferのputメソッドを行います。
>>> OutPort.h, InPort.hのwriteメソッドの中で、
>>> status = this->put((*m_OnWriteConvert)(value));
>>> という形でコールバックが呼ばれます。
>>>
>>> proc1はOutPortのwriteをすると、RingBufferにput/getしてから _ptr()->putで
>>> CORBA転送しproc2のRingBufferにデータが書き込まれます。書き込まれた
>>> タイミングでコールバックするには、InPortCorbaConsumer.hにコールバックす
>>> るような仕掛けがないといけないのではないでしょうか?
>>>
>>> コールバックの例題をみると、
>>> OnWriteConvertの場合は、proc1ないしはproc2がOutPortのwriteを行うときに
>>> フィルタープログラムをコールバックに入れて転送するという使い方が自然のよ
>>> うですし、
>>> onReadConvertの場合は、proc2ないしはproc3がInPortのreadを行うときにやは
>>> りフィルタープログラムをコールバックに入れて読み込むという使い方が自然の
>>> ようです。
>>>
>>> 私の理解が間違っているかもしれません。
>>>
>>> --
>>> Yoshiji Yasu @ Online group, Institute of Particle and Nuclear Studies,
>>> High Energy Accelerator Research Organization ( KEK ),
>>> E-mail : Yoshiji.YASU @ kek.jp
>>>
>>>
>>>
>>>
>>>
>>> --
>>> 安藤慶昭@独立行政法人産業技術総合研究所 研究員
>>>  知能システム研究部門 タスクインテリジェンス研究グループ
>>>  〒305-8568 茨城県つくば市梅園1-1-1 中央第2
>>>  TEL: 029-861-5981 FAX: 029-862-6631
>>>  n-ando @ aist.go.jp, n-ando @ ieee.org
>>>
>>
>>
>>
>> --
>> 安藤慶昭@独立行政法人産業技術総合研究所 研究員
>>  知能システム研究部門 タスクインテリジェンス研究グループ
>>  〒305-8568 茨城県つくば市梅園1-1-1 中央第2
>>  TEL: 029-861-5981 FAX: 029-862-6631
>>  n-ando @ aist.go.jp, n-ando @ ieee.org
>>
>
>
>
> --
> --------------------------------------------
> 末永 剛 (Tsuyoshi Suenaga)
> 奈良先端科学技術大学院大学 情報科学研究科
> ロボティクス講座 研究員
> e-mail: tsuyo-s @ is.naist.jp
> URL:    http://robotics.naist.jp/~tsuyo-s/
> --------------------------------------------
>



-- 
安藤慶昭@独立行政法人産業技術総合研究所 知能システム研究部門
    統合知能研究グループ 主任研究員, 博士(工学)
    〒305-8568 つくば市梅園1-1-1 中央第2
    e-mail: n-ando @ aist.go.jp, web: http://staff.aist.go.jp/n-ando
    OpenRTM-aist: http://www.openrtm.org

Noriaki Ando, Ph.D.
    Senior Research Scientist, RT-Synthesis R.G., ISRI, AIST
    AIST Tsukuba Central 2, Tsukuba, Ibaraki 305-8568 JAPAN
    e-mail: n-ando @ aist.go.jp, web: http://staff.aist.go.jp/n-ando
    OpenRTM-aist: http://www.openrtm.org



openrtm-users メーリングリストの案内