[openrtm-users 00902] Re: OpenRTM1.0.0-RC1 の OutPort に値が格納できない不具合

Masayuki Shimizu masayuki.shimizu @ aist.go.jp
2009年 8月 3日 (月) 15:12:31 JST


俵様
安藤様

清水です。

ログを見る限りでは、m_connectorsのサイズは
やはり1のように思われます。

ただ、コネクタのwrite()は
呼ばれてないようですね。

コネクタタイプがPushであれば、
OutPortのwriteから
OutPortPushConnector::write()が呼ばれ、
ログに「write()」と残るはずです。
どうもそれが見当たらないので、
コネクタのwriteまで辿り着いてない
と思われます。

不可解な挙動ですが、OutPort::write()
から動きを丹念にトレースしていけば、
原因がつかめると思います。

# 安藤様へ
Pull型のOutPortBase::createConnector()
ですが、ログ出力が"OutPortPushConnector created"
となってますが、"Pull"でなくてよいのでしょうか。

あと、OutPortPullConnectorのオペレーションには
ログ出力が無いので、今回のように挙動を
トレースする際に困るように思います。

清水

--- Ando Noriaki <n-ando @ aist.go.jp> wrote:

> 俵様
> 
> 安藤です
> 
> >
> > rtm/OutPort.hによると
> > その後の処理で
> > conn_sizeが0以下の場合
> > m_connectors[i]->write(m_cdr);
> > のループ処理に至らないということで
> > 同じ結果になると思われます。
> > 以上です。
> 
> Aug 03 10:50:00 TRACE: steer:
> getConnectorProfiles(): size = 1
> 
> でも、ログ↑にあるように、m_connectors.size()
> は1を返していますよね。
> 
> write()関数の先頭部分で
> size_t conn_size(m_connectors.size());
> のように代入しているので、conn_sizeは1になりそうな気が
しますが。
> 
> 念のため、OutPort.h の write()
> の後半を以下のように書き換えて
> ログを見てみてはどうでしょうか?
> 
>       bool result(true);
>    RTC_PARANOID(("0: conn_size = %d",
> conn_size));
>    RTC_PARANOID(("0: connectos.size() = %d",
> m_connectors.size()));
>       for (size_t i(0), len(conn_size); i < len;
> ++i)
>         {
>           ReturnCode ret;
>           ret = m_connectors[i]->write(m_cdr);
>       RTC_PARANOID(("1: conn_size = %d",
> conn_size));
>       RTC_PARANOID(("1: connectos.size() = %d",
> m_connectors.size()));
>           if (ret != PORT_OK)
>             {
>               result = false;
>               if (ret == CONNECTION_LOST)
>                 {
>                   disconnect(m_connectors[i]->id());
>                 }
>             }
>         }
>    RTC_PARANOID(("2: conn_size = %d", conn_size));
>    RTC_PARANOID(("2: connectos.size() = %d",
> m_connectors.size()));
>       return result;
> 
> 
> あと、ためしにコンポーネントのソースを送ってみてもらえ
ますか?
> -- 
> 安藤慶昭@独立行政法人産業技術総合研究所 研究員
>                   知能システム研究部門
> 統合知能研究グループ
>                   〒305-8568 茨城県つくば市梅園1-1-1
> 中央第2
>                   TEL: 029-861-5981 FAX:
> 029-862-6631
>                   n-ando @ aist.go.jp, n-ando @ ieee.org
> 
> 




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