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

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


俵様

安藤です

portServiceList[h]->get_connector_profiles()->length();
を呼ぶ前に
portServiceList[h].out()
を呼んでいませんか?

2009/07/31 10:24 に 俵 崇文@AIST<tawara-takafumi @ aist.go.jp> さんは書きました:
> 清水様
>
> お世話になっております。俵です。
>
>> 何らかの接続はあるようですが、
>> それでもm_connectorsのサイズがゼロだから
>> データ通信が出来ないのですよね。
> はい。
>
>> ConnectorProfileのサイズと
>> m_connectorsのサイズが
>> 一致しているか確かめてみてはどうでしょうか。
>>
>> もしConnectorProfileがある(接続がある)のに
>> m_connectorsがゼロだとすれば、
>> それはRTM側の問題かもしれませんね。
> 件の確認コードでポートごとに
> portServiceList[h]->get_connector_profiles()->length();
> を実行したところ
>
> omniORB: ERROR -- the application attempted to invoke an operation
>  on a nil reference.
> と表示される例外が発生しました。
>
> 具体的には、
> get_connector_profiles()
> をコールして、RTCSK.CCファイルの
> RTC::ConnectorProfileList*
> RTC::_objref_PortService::get_connector_profiles()
>> _invoke(_call_desc);
> でメッセージが表示されました。
>
> なんらかの原因で接続処理が中途のままということでしょうか?
>
> 以上です。
> よろしくお願いします。
>
> Masayuki Shimizu wrote 2009/07/30 23:33:
>> 俵様
>>
>> 清水です。
>>
>> 何らかの接続はあるようですが、
>> それでもm_connectorsのサイズがゼロだから
>> データ通信が出来ないのですよね。
>>
>> ConnectorProfileのサイズと
>> m_connectorsのサイズが
>> 一致しているか確かめてみてはどうでしょうか。
>>
>> もしConnectorProfileがある(接続がある)のに
>> m_connectorsがゼロだとすれば、
>> それはRTM側の問題かもしれませんね。
>>
>> # もしくはConnectorProfileのサイズと
>> m_connectorsのサイズが一致しない
>> ケースが理論的にあり得るのでしょうか???
>> (OpenRTM-aistの開発者の方、教えてください。)
>>
>> 清水
>>
>> --- 俵 崇文@AIST <tawara-takafumi @ aist.go.jp> wrote:
>>
>>> 清水様
>>>
>>> 俵です。
>>>
>>> ご指南ありがとうございます。
>>>
>>>> ConnectorProfile::ports
>>>> を調べて希望通りの接続となっているかを
>>>> 確かめればできます。
>>> 試しに添付ファイルのconsoleOutPortRefInfo.txt
>>> にある通りport等の状態を出力する関数を作成して、
>>>   #初歩的なことと存じますが、
>>>   #この方法が正しいのか自信がありませんので
>>>   #おかしな点がございましたらご指摘願います。
>>> writeする直前に実行してみました。
>>> 出力結果は添付ファイルResult.txtとなりましたが、
>>> 具体的に接続状態を判別する方法がわかりませんので、
>>> ご教示願います。
>>>
>>>
>>>> それと、接続プログラムの、
>>>> CORBA_SeqUtil::push_back(cprof.properties,
>>>> NVUtil::newNV("dataport.dataflow_type",
>>>>  "Push"));
>>>> の所は、"Push"ではなく"push"が正しいようです。
>>> の件ですが、
>>> [openrtm-users 00849] Re: SimpleIO   の run.sh
>>> のエラー
>>> のコードによると"Push"となっているので"Push"のままにい
>> たしました。
>>> ただし、
>>> rtm\InPortBase.cpp(180):
>>> coil::normalize(dflow_type);
>>> rtm\InPortBase.cpp(240):
>>> coil::normalize(dflow_type);
>>> rtm\OutPortBase.cpp(379):
>>> coil::normalize(dflow_type);
>>> rtm\OutPortBase.cpp(438):
>>> coil::normalize(dflow_type);
>>> によりdataflow_typeプロパティは大文字、小文字が混在し
>> ても
>>> 特に問題がなさそうな気がします。
>>> ちなみに今回は"push"に変更して実行いたしました。
>>> 以上です。
>>> よろしくお願いします。
>>>
>>> Masayuki Shimizu wrote 2009/07/29 12:51:
>>>> 俵様
>>>>
>>>> 静岡大 清水です。
>>>>
>>>> 少し気になったのでコメントです。
>>>>
>>>> OutPortにwriteする前にポートが希望通り
>>>> 接続されていることを確認してますでしょうか。
>>>>
>>>> ポート接続の確認は、少々面倒なのですが、
>>>> PortService::get_connector_profiles()
>>>> でConnectorProfileを全て取得し、
>>>> 各プロファイルごとに、
>>>> ConnectorProfile::ports
>>>> を調べて希望通りの接続となっているかを
>>>> 確かめればできます。
>>>>
>>>> それと、接続プログラムの、
>>>> CORBA_SeqUtil::push_back(cprof.properties,
>>>
>>>> NVUtil::newNV("dataport.dataflow_type",
>>>
>>>>  "Push"));
>>>> の所は、"Push"ではなく"push"が正しいようです。
>>>>
>>>> 清水
>>>>
>>>> --- 俵 崇文@AIST <tawara-takafumi @ aist.go.jp>
>>> wrote:
>>>>> 安藤様
>>>>> 俵です。
>>>>>
>>>>> 返信ありがとうございます。
>>>>>
>>>>>> 要は、自作のプログラムからポートの接続をすると、
>>>>>>
>>> OutPortからInPortへデータがいかないということでよろし
>>>> いでしょうか?
>>>>> はい。
>>>>>
>>>>>
>>> 「OutPortに値が格納できない」というのがどういう現象を
>>>> 指しているのですか。
>>>>> 具体的にはVirtualRobotRTCが持つ
>>>>> RTC::OutPort<RTC::TimedDoubleSeq> インスタンス
>>>>>
>>> からRTC::OutPort<RTC::TimedDoubleSeq>::write()の実行を
>>>>> デバッガで追ったところrtm/OutPort.hの170行目
>>>>> virtual bool write(DataType& value)
>>>>> {
>>>>>   if (m_OnWrite != NULL)
>>>>>   {
>>>>>     (*m_OnWrite)(value);
>>>>>   }
>>>>>   // check number of connectors
>>>>>   size_t conn_size(m_connectors.size());
>>>>>   if (!(conn_size > 0)) { return true; }
>>>>>
>>>>> で戻ってしまう現象です。
>>>>>
>>> SimpleIOだと同様にデバッグで追ってもそのまま戻らず実行
>>>> されたので、
>>>>> m_connectorsのサイズが0によることが原因で
>>>>>
>>> バッファに値が書き込まれていないと判断いたしました。
>>>>>
>>> これらのポートをRTSystemEditorで接続するとどうなります
>>>> か?
>>>>> 手動で接続することはできましたが、
>>>>>
>>> その後続行すると自動接続時と同様の動作になりました。
>>>>> 以上です。よろしくお願いします。
>>>>>
>>>>> Ando Noriaki wrote 2009/07/29 9:49:
>>>>>> 俵様
>>>>>>
>>>>>> 安藤です
>>>>>>
>>>>>> 要は、自作のプログラムからポートの接続をすると、
>>>>>>
>>> OutPortからInPortへデータがいかないということでよろし
>>>> いでしょうか?
>>> 「OutPortに値が格納できない」というのがどういう現象を
>>>> 指しているのですか。
>>> これらのポートをRTSystemEditorで接続するとどうなります
>>>> か?
>>>>>> 2009/07/28 15:40 に
>>>>> 俵 崇文@AIST<tawara-takafumi @ aist.go.jp>
>>>>> さんは書きました:
>>>>>>> 安藤様
>>>>>>> 俵です。
>>>>>>>
>>>>>>> 返信送れて申し訳ありません。
>>>>>>> その後試行錯誤してみたのですが、
>>>>>>> 結局狙い通りの動作がえられませんでした。
>>>>>>> また問題点を整理するための時間が必要でした。
>>>>>>> 改めて質問させてください。
>>>>>>>
>>>>>>>
>>> 外部プロセスとコアロジックRTC(図ではSampleSV)の仲介を
>>>> 行なう
>>> ControllerBridgeをOpenRTM0.4.2からOpenRTM1.0.0に
>>> 対応する過程でOutPortのバッファに値が格納できない現象
>>>> に対処したいので
>>>>>>> ご教示ください。
>>>>>>>
>>>>>>>              torque
>>>>>>>      ┌←───────←┐
>>>>>>> ┌──□──┐      ┌──□──┐
>>>>>>> │  Virtual │steer │ SampleSV │
>>>>>>> │          □→─→□          │
>>>>>>> │  Robot   │      │          │
>>>>>>> │          □→─→□          │
>>>>>>> │  RTC     │ vel  │  RTC     │
>>>>>>> └─────┘      └─────┘
>>>>>>> □:ポート
>>>>>>>      ControlllerBridgeの動作例
>>>>>>>
>>>>>>> 添付したファイルは上図のRTC構築時のログです。
>>>>>>>
>> 実行例ではControlllerBridgeはSampleSVRTCとVirtualRobotRTC
>>>>>>>>
>> 生成して対応するポートを接続します。図ではVirtualRobotRTC
>>>> 側の
>>>>>>> steer OutPort、vel
>>>>> OutPortに値が格納できませんでした。
>>>>>>> 特にポート接続ではOpenRTMのサンプルSimpleIOの
>>>>>>>
>>> ConnectorComp.cppを参考にして以下のコードを作成しまし
>>>> た。
>>>>>>> bool
>>> Controller_impl::connectPorts(Port_Service_Ptr_Type
>>>>> outPort,
>>>>>>>
>>>>> Port_Service_Ptr_Type inPort)
>>>>>>> {
>>>>>>>    // connect ports
>>>>>>>    RTC::ConnectorProfile cprof;
>>>>>>>    cprof.connector_id = "";
>>>>>>>    cprof.name =
>>> CORBA::string_dup("connector0");
>>>>>>>    cprof.ports.length(2);
>>>>>>>    cprof.ports[0] =
>>>>> Port_Service_Type::_duplicate(inPort);
>>>>>>>    cprof.ports[1] =
>>>>> Port_Service_Type::_duplicate(outPort);
>>>>>>> #ifdef OPENRTM_VERSION_042
>>>>>>>    CORBA_SeqUtil::push_back(cprof.properties,
>>>>>>>
>>>>> NVUtil::newNV("dataport.interface_type",
>>>>>>>                     "CORBA_Any"));
>>>>>>>    CORBA_SeqUtil::push_back(cprof.properties,
>>>>>>>
>>>>> NVUtil::newNV("dataport.dataflow_type",
>>>>>>>                     "Push"));
>>>>>>>    CORBA_SeqUtil::push_back(cprof.properties,
>>>>>>>
>>>>> NVUtil::newNV("dataport.subscription_type",
>>>>>>>                     "Flush"));
>>>>>>> #else
>>>>>>>    CORBA_SeqUtil::push_back(cprof.properties,
>>>>>>>
>>>>> NVUtil::newNV("dataport.interface_type",
>>>>>>>                     "corba_cdr"));
>>>>>>>    CORBA_SeqUtil::push_back(cprof.properties,
>>>>>>>
>>>>> NVUtil::newNV("dataport.dataflow_type",
>>>>>>>                     "Push"));
>>>>>>>    CORBA_SeqUtil::push_back(cprof.properties,
>>>>>>>
>>>>> NVUtil::newNV("dataport.subscription_type",
>>>>>>>                     "flush"));
>>>>>>> #endif
>>>>>>>    RTC::ReturnCode_t result =
>>>>> inPort->connect(cprof);
>>>>>>>    return (result == RTC::RTC_OK);
>>>>>>> }
>>>>>>>
>>>>>>>
>>> サンプルConnectorCompとControlllerBridgeの主な相違点は
>>>>>>>>>>> 1)SimpleIOでは異なるプロセスで別々のRTCを生成、
>>>>>>> 接続もConnectorCompプロセスで行なっているが、
>>>>>>>
>>> ControlllerBridgeでは同じプロセスで2つのRTCを生成し、
>>>>>>> ポート間を接続して値を授受している。
>>>>>>> 2)接続数が複数であること
>>>>>>> 3)RTCにInPortとOutPortが混在すること
>>>>>>>
>>> です。0.4.2を利用した場合は問題なく動作していました。
>>> ちなみにRTSystemEditorで動作を追った場合、各RTCの登録
>>>>>>>>>>> ポート間接続時のライン描画を確認しました。
>>>>>>> 以上です。
>>>>>>> よろしくお願いいたします。
>>>>>>>
>>>>>>> Ando Noriaki wrote 2009/07/24 10:38:
>>>>>>>> 俵様
>>>>>>>>
>>>>>>>> 安藤です
>>>>>>>>
>>>>>>>> お世話になっております。
>>>>>>>>
>>>>>>>>
>>> 申し訳ございませんが、下記のメールはご質問でしょうか?
>>>>>>>> 意図がよくつかめませんでした。
>>>>>>>>
>>>>>>>> 2009/07/24 10:11 に
>>>>> 俵 崇文@AIST<tawara-takafumi @ aist.go.jp>
>>>>> さんは書きました:
>>>>>>>>> 安藤様
>>>>>>>>>
>>>>>>>>> 俵です。
>>>>>>>>>
>>>>>>>>> 早速の返信ありがとうございます。
>>>>>>>>>
>>>>>>>>>
>>> 仕様変更により接続するまでバッファが無い旨了解いたしま
>>>> した。
>>> 1)RTC::PortBase::connectの戻り値がtrueである。
>>> 2)RTCSystemEditorでは動作確認時に接続ラインが描画表示
>>>> される。
>>> 3)ログにはnotify_connect()以下の接続の処理が記録されて
>>>> いる
>>> 等の理由により接続は成功していると当方では判断していま
>>>> した。
>>>>>>>>> ログからは読み取れませんでしたが、
>>>>>>>>>
>>>>> 未接続の段階でwriteメンバを呼び出してしまっている
>>>>>>>>> というご指摘については調査してみます。
>>>>>>>>>
>>>>>>>>> 以上です。
>>>>>>>>> よろしくお願いいたします。
>>>>>>>>>
>>>>>>>>> Ando Noriaki wrote 2009/07/23 14:05:
>>>>>>>>>> 俵さま
>>>>>>>>>>
>>>>>>>>>> 安藤です
>>>>>>>>>>
>>>>>>>>>>
>>> 1.0からは、バッファはコネクタに属する構造に変更されま
>>>> した。
>>>>
>> したがって、接続するまではバッファが存在せずOutPortにwrite
>>>>>>>>>> しても値はどこにも格納されません。
>>>>>>>>>>
>>> このような仕様で不都合が生じるようでしたら、どのような
>>>> ケースで
>>> 問題になるのか利用例を教えていただけますでしょうか。
>>>>>>>>>> よろしくお願いいたします。
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> 2009/07/23 13:52 に
>>>>> 俵 崇文@AIST<tawara-takafumi @ aist.go.jp>
>>>>> さんは書きました:
>>>>>>>>>>> 産総研 知能システム研究部門
>>>>> ヒューマノイド研究グループ
>>>>>>>>>>> にてお世話になっております 俵です。
>>>>>>>>>>>
>>>>>>>>>>>
>>> 現在OpenHRP3.1.0β2ベースで可能であればOpenRTM0.4.2へ
>>>>>>> 互換性を保ったままOpenRTM1.0.0-RC1への対応をしておりま
>>>> す。
>>>>>>>>>>> OpenRTM1.0.0-RC1に対応した場合、
>>>>>>>>>>> bool OutPort<DataType>::write(DataType&
>>>>> value)
>>>>>>>>>>> の処理中m_connectorsのサイズが0による理由で
>>>>>>>>>>>
>>> バッファに値を格納できない現象に遭遇しております。
>>> 初期化方法に問題があると疑って動作を追っているのですが
>>>>>>>>>>>>>>> ログなどによると
>>>>>>>>>>> Jul 23 10:56:41 PARANOID: steer: connector
>>>>> push backed: 1
>>>>>>>>>>> Jul 23 10:56:41 DEBUG: steer:
>>>>> publishInterface() successfully finished.
>>>>>>>>>>> Jul 23 10:56:41 PARANOID: steer: 0
>>> connectors
>>>>> are existing
>>>>>
>>> と一見m_connectorsコンテナにコネクタインスタンスが
>>>>>>>>>>> 格納されるているようです。
>>>>>>>>>>>
>>>>>>>>>>>
>>>>> このような場合の対処方法についてご教示ください。
>>>>>>>>>>> 動作時のログも添付いたします。
>>>>>>>>>>> よろしくお願いします。
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> _/_/_/_/_/_/_/_/_/_/_/_/_/
>>>>>>>>>>>
>>> 株式会社 スプリング(http://www.spring.cc/)
>>>>>>>>>>> つくば事業所 俵 崇文
>>>>>>>>>>>
>>> 俵 崇文@スプリング<tawara @ spring-inc.co.jp>
>>>>>>>>>>> 俵 崇文@AIST<tawara-takafumi @ aist.go.jp>
>>>>>>>>>>> 事業所 TEL:029-871-7710
>>>>>>>>>>> 事業所 FAX:029-830-7037
>>>>>>>>>>> _/_/_/_/_/_/_/_/_/_/_/_/_/
>>>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> _/_/_/_/_/_/_/_/_/_/_/_/_/
>>>>>>>>> 株式会社 スプリング(http://www.spring.cc/)
>>>>>>>>> つくば事業所 俵 崇文
>>>>>>>>> 俵 崇文@スプリング<tawara @ spring-inc.co.jp>
>>>>>>>>> 俵 崇文@AIST<tawara-takafumi @ aist.go.jp>
>>>>>>>>> 事業所 TEL:029-871-7710
>>>>>>>>> 事業所 FAX:029-830-7037
>>>>>>>>> _/_/_/_/_/_/_/_/_/_/_/_/_/
>>>>>>>>>
>>>>>>>>>
>>>>>>> --
>>>>>>> _/_/_/_/_/_/_/_/_/_/_/_/_/
>>>>>>> 株式会社 スプリング(http://www.spring.cc/)
>>>>>>> つくば事業所 俵 崇文
>>>>>>> 俵 崇文@スプリング<tawara @ spring-inc.co.jp>
>>>>>>> 俵 崇文@AIST<tawara-takafumi @ aist.go.jp>
>>>>>>> 事業所 TEL:029-871-7710
>>>>>>> 事業所 FAX:029-830-7037
>>>>>>> _/_/_/_/_/_/_/_/_/_/_/_/_/
>>>>>>>
>>>>>>
>>>>> --
>>>>> _/_/_/_/_/_/_/_/_/_/_/_/_/
>>>>> 株式会社 スプリング(http://www.spring.cc/)
>>>>> つくば事業所 俵 崇文
>>>>> 俵 崇文@スプリング<tawara @ spring-inc.co.jp>
>>>>> 俵 崇文@AIST<tawara-takafumi @ aist.go.jp>
>>>>> 事業所 TEL:029-871-7710
>>>>> 事業所 FAX:029-830-7037
>>>>> _/_/_/_/_/_/_/_/_/_/_/_/_/
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>> --
>>> _/_/_/_/_/_/_/_/_/_/_/_/_/
>>> 株式会社 スプリング(http://www.spring.cc/)
>>> つくば事業所 俵 崇文
>>> 俵 崇文@スプリング<tawara @ spring-inc.co.jp>
>>> 俵 崇文@AIST<tawara-takafumi @ aist.go.jp>
>>> 事業所 TEL:029-871-7710
>>> 事業所 FAX:029-830-7037
>>> _/_/_/_/_/_/_/_/_/_/_/_/_/
>>>> Print RTC::PortService_var info
>>> _PD_repoId: IDL:omg.org/CORBA/Object:1.0
>>> ConnectorProfileList[0]
>>>   name: connector0
>>>   connector_id: 67ca269d-5737-4437-8580-9dc69725892d
>>>   properties:
>>> dataport.interface_type: corba_cdr
>>> dataport.dataflow_type: push
>>> dataport.subscription_type: flush
>>> dataport.corba_cdr.inport_ior:
>>>
>> IOR:010000001a00000049444c3a4f70656e52544d2f496e506f72744364723a312e30000000010000000000000064000
>> 000010102000d0000003139322e3136382e36352e310000060e0e000000fe6844714a00000a8c000000000e00000200000000000000080000000100000000545
>> 441010000001c00000001000000010001000100000001000105090101000100000009010100
>>> dataport.corba_cdr.inport_ref: not a string value
>>>
>>>   ports[0]
>>>     in()->_is_nil(): false
>>>     inout()->_is_nil(): false
>>>     out()->_is_nil(): true
>>>   ports[1]
>>>     in()->_is_nil(): false
>>>     inout()->_is_nil(): false
>>>     out()->_is_nil(): true
>>>
>>>
>>> Print RTC::PortService_var info
>>> _PD_repoId: IDL:omg.org/CORBA/Object:1.0
>>> ConnectorProfileList[0]
>>>   name: connector0
>>>   connector_id: 6f1fefad-d13d-460b-87e1-81592e104ae7
>>>   properties:
>>> dataport.interface_type: corba_cdr
>>> dataport.dataflow_type: push
>>> dataport.subscription_type: flush
>>> dataport.corba_cdr.inport_ior:
>>>
>> IOR:010000001a00000049444c3a4f70656e52544d2f496e506f72744364723a312e30000000010000000000000064000
>> 000010102000d0000003139322e3136382e36352e310000060e0e000000fe6844714a00000a8c000000000f00000200000000000000080000000100000000545
>> 441010000001c00000001000000010001000100000001000105090101000100000009010100
>>> dataport.corba_cdr.inport_ref: not a string value
>>>
>>>   ports[0]
>>>     in()->_is_nil(): false
>>>     inout()->_is_nil(): false
>>>     out()->_is_nil(): true
>>>   ports[1]
>>>     in()->_is_nil(): false
>>>     inout()->_is_nil(): false
>>>     out()->_is_nil(): true
>>>> void consoleOutPortRefInfo(PortService_ptr portRef)
>>> {
>>>
>>>     if(portRef->_is_nil() ){
>>>         std::cout << "portRef is nill" << std::endl;
>>>     } else {
>>>         std::cout << "Print RTC::PortService_var
>>> info" << std::endl;
>>>         std::string spcStr("  ");
>>>         std::cout << "_PD_repoId: " <<
>>> portRef->_PD_repoId << std::endl;
>>>         ConnectorProfileList_var  profileList =
>>> portRef->get_connector_profiles();
>>>         for(_CORBA_ULong i = _CORBA_ULong(0); i <
>>> profileList->length(); ++i){
>>>             ConnectorProfile& localConPro =
>>> profileList[i];
>>>             std::cout << "ConnectorProfileList[" <<
>>> i << "]" << std::endl;
>>>             std::cout << spcStr << "name: " <<
>>> localConPro.name << std::endl;
>>>             std::cout << spcStr << "connector_id: "
>>> << localConPro.connector_id << std::endl;
>>>
>>>             std::cout << spcStr << "properties: " <<
>>> std::endl;
>>>             std::cout <<
>>> ::NVUtil::toString(localConPro.properties) <<
>>> std::endl;
>>>
>>>             PortServiceList& portServiceList =
>>> localConPro.ports;
>>>             for(_CORBA_ULong h = _CORBA_ULong(0); h
>>> < portServiceList.length(); ++h){
>>>                 std::string spcStr2 = spcStr;
>>>                 spcStr2 += spcStr;
>>>                 std::cout << spcStr << "ports[" << h
>>> << "]" << std::endl;
>>>                 std::cout << spcStr2 <<
>>> "in()->_is_nil(): " <<
>>>
>>> (portServiceList[h].in()->_is_nil() ? "true" :
>>> "false" ) << std::endl;
>>>                 std::cout << spcStr2 <<
>>> "inout()->_is_nil(): " <<
>>>
>>> (portServiceList[h].inout()->_is_nil() ? "true" :
>>> "false" ) << std::endl;
>>>                 std::cout << spcStr2 <<
>>> "out()->_is_nil(): " <<
>>>
>>> (portServiceList[h].out()->_is_nil() ? "true" :
>>> "false" ) << std::endl;
>>>             }
>>>         }
>>>     }
>>> }
>>
>>
>>
>>
>
>
> --
> _/_/_/_/_/_/_/_/_/_/_/_/_/
> 株式会社 スプリング(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 メーリングリストの案内