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

Ando Noriaki n-ando @ aist.go.jp
2009年 7月 31日 (金) 18:18:41 JST


俵様

安藤です

いただいたlogの424行目で、
Jul 31 17:04:18 TRACE: steer: getConnectorProfiles(): size = 1
とありますので、m_connectorsのサイズは1ですね。

OutPortBase.cpp 200行目あたりで以下のようにログを出力しています。
  ConnectorBase::ProfileList OutPortBase::getConnectorProfiles()
  {
    RTC_TRACE(("getConnectorProfiles(): size = %d", m_connectors.size()));

デバッガでご覧になった0という数値は、本当にm_connectorsのsize()ですか?

いただいたlogをgetConnectorProfilesでgrepしたのですが、

> grep 'getConnectorProfiles' rtc4472.log
Jul 31 17:04:18 TRACE: steer: getConnectorProfiles(): size = 1
Jul 31 17:04:18 TRACE: vel: getConnectorProfiles(): size = 1
Jul 31 17:04:19 TRACE: steer: getConnectorProfiles(): size = 1
Jul 31 17:04:19 TRACE: vel: getConnectorProfiles(): size = 1
Jul 31 17:04:20 TRACE: steer: getConnectorProfiles(): size = 1
Jul 31 17:04:20 TRACE: vel: getConnectorProfiles(): size = 1

このように、steerポートもvelポートもどちらも m_connectors のサイズは
1となっており、ログの結果からも、少なくともPortBaseのConnectorProfile、
OutPortのOutPortConnectorの数、ともに正常なようにみえます。

他のところに原因があるのではないでしょうか?


2009/07/31 17:41 に 俵 崇文@AIST<tawara-takafumi @ aist.go.jp> さんは書きました:
> 安藤様
>
> お世話になっております。俵です。
>
> 下記コードを適応したログを添付いたします。
> 出力タイミングは、これまでの通り
> steerポートとvelポートのwriteメソッドの直前になります。
>
> 以上です。
> よろしくお願いします。
>
> Ando Noriaki wrote 2009/07/31 16:29:
>> 俵様
>>
>> 安藤です
>>
>> 前回のメールで申し上げた通り、ConnectorProfileは存在するが、
>> m_connectorsのサイズが0ということですよね。
>> いただいたコードと表示結果からは、ConnectorProfileは正常である
>> ということしかわかりません。
>> ただし、以前いただいたログには
>> Jul 28 15:08:10 TRACE: steer: OutPortPushConnector created
>> Jul 28 15:08:10 PARANOID: steer: connector push backed: 1
>> とあるので、connector は生成されているっぽいです。
>>
>> とりあえず、OutPortのPushConnectorのProfileを
>> 以下のようにして表示させてみていただけますか?
>>
>>   ConnectorBase::ProfileList prof(m_outport.getConnectorProfiles());
>>   for (int i(0), len(prof.size()); i < len; ++i)
>>   {
>>     RTC_DEBUG(("ConnectorProfile::name: %s", prof[i].name));
>>     RTC_DEBUG(("ConnectorProfile::id: %s", prof[i].id));
>>     RTC_DEBUG(("ConnectorProfile::properties:"));
>>     rtclog.level(Logger::RTL_DEBUG) << prof[i].properties;
>>   }
>>
>>
>>
>>
>> 2009/07/31 15:39 に 俵 崇文@AIST<tawara-takafumi @ aist.go.jp> さんは書きました:
>>> 安藤様、清水様
>>>
>>> お世話になっております。俵です。
>>>
>>> 助言を参考にして
>>> PortService,ConnectorProfile,ConnectorProfile::ports
>>> の状態を表示する関数を添付ファイルのように変更しました。
>>> 表示結果も合わせて添付いたします。
>>>
>>> ConnectorProfileは結果の通り存在しますが、
>>> m_connectorsのサイズはデバッガ上確認した場合0のままでした。
>>> 以上です。
>>> よろしくお願いいたします。
>>>
>>> Ando Noriaki wrote 2009/07/31 11:45:
>>>> 俵様
>>>>
>>>> 安藤です
>>>>
>>>> out()関数は、オペレーションのout引数に_var型変数を渡す時に使うものです。
>>>>
>>>> out()を呼ぶとオブジェクトリファレンスがreleaseされてnilリファレンス
>>>> になりますので、その後新たにオブジェクトリファレンスを代入しない限り
>>>> omniORB: ERROR -- the application attempted to invoke an operation
>>>>  on a nil reference.
>>>> のようなエラーが出ます。
>>>>
>>>>
>>>> 2009/07/31 11:38 に 俵 崇文@AIST<tawara-takafumi @ aist.go.jp> さんは書きました:
>>>>> 安藤様
>>>>> お世話になっております。 俵です。
>>>>>
>>>>>> portServiceList[h]->get_connector_profiles()->length();
>>>>>> を呼ぶ前に
>>>>>> portServiceList[h].out()
>>>>>> を呼んでいませんか?
>>>>> はい。呼んでおります。
>>>>>
>>>>> 以上です。
>>>>>
>>>>> Ando Noriaki wrote 2009/07/31 10:43:
>>>>>> 俵様
>>>>>>
>>>>>> 安藤です
>>>>>>
>>>>>> portServiceList[h]->get_connector_profiles()->length();
>>>>>> を呼ぶ前に
>>>>>> portServiceList[h].out()
>>>>>> を呼んでいませんか?
>>>>>>
>>>>
>>>
>>
>>
>>
>
>
> --
> _/_/_/_/_/_/_/_/_/_/_/_/_/
> 株式会社 スプリング(http://www.spring.cc/)
> つくば事業所 俵 崇文
> 俵 崇文@スプリング<tawara @ spring-inc.co.jp>
> 俵 崇文@AIST<tawara-takafumi @ aist.go.jp>
> 事業所 TEL:029-871-7710
> 事業所 FAX:029-830-7037
> _/_/_/_/_/_/_/_/_/_/_/_/_/
>



-- 
安藤慶昭@独立行政法人産業技術総合研究所 研究員
                  知能システム研究部門 統合知能研究グループ
                  〒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 メーリングリストの案内