[openrtm-users 03344] OpenRTM-aist-1.1.2 RTC Builder で自動生成されるデータポートのコードの仕様変更? (Python) について

Tomohiro UMETANI umetani @ konan-u.ac.jp
2016年 12月 23日 (金) 16:20:25 JST


openrtm-users メーリングリストのみなさま

甲南大学の梅谷です.
先日のRTミドルウェアコンテスト2016では
大変お世話になりました.

現在,OpenRTM-aist-1.1.2-RELEASE (Python)の,
Ver. 1.1.2 Windows用インストーラ (32bit版)をインストールし,
使用しております.
インストール元は以下のところのものです.
http://www.openrtm.org/openrtm/ja/node/6034

OpenRTM-aist-1.1.2 付属のOpenRTP でのRTC Builder で
データポートがあるPythonのコンポーネントのコードを出力したのですが,
自動出力されるデータポートのコードがver. 1.1.2 では,
以下のように変更されていました.

ここから
=====
	outdata_arg = [None] * ((len(RTC._d_TimedLong) - 4) / 2)
	self._d_outdata = RTC.TimedLong(*outdata_arg)
	"""
	"""
	self._data_outOut = OpenRTM_aist.OutPort("data_out", self._d_outdata)
=====
ここまで

自動出力される変数の名前が変わっているのは良いのですが,
特に上2行に関しては,ver. 1.1.0 では,TimedLong型の場合
=====
	self._d_outdata = RTC.TimedLong(RTC.Time(0,0),0)
=====

のように出力されていたと認識しています.TimedLongSeq型の場合は
	RTC.TimedLongSeq(RTC.Time(0,0),[])
でした.

このためかどうかわかりませんが,
1.1.0時代のコードを手掛かりに,データポートから値を出力させるプログラムを
1.1.2で出力されたコードに1.1.0と同じ方法で,
タイムスタンプを付けるコードをそのまま書くと,
Execute時にエラーが出てしまいます.

実行時のrtc ログの抜粋(一部)を以下に示します
====
2016-12-23 15:16:26,710 SdoServiceAdmin WARNING No available SDO service in the factory: IDL:OpenRTM/ComponentObserver:1.0
2016-12-23 15:16:26,710 SdoServiceAdmin ERROR type 90c1ad6d-06bc-4969-b10e-306291cf0653 already exists.
2016-12-23 15:16:28,378 rtobject ERROR Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\OpenRTM_aist\RTObject.py", line 1560, in on_execute
    ret = self.onExecute(ec_id)
  File "C:\Users\umetani\workspace\DataPortSample\DataPortSample.py", line 187, in onExecute
    OpenRTM_aist.setTimestamp(self._d_outdata)
  File "C:\Python27\lib\site-packages\OpenRTM_aist\OutPort.py", line 51, in setTimestamp
    data.tm.sec  = tm.sec
AttributeError: 'NoneType' object has no attribute 'sec'

2016-12-23 15:16:32,388 ec_worker ERROR State of the RTC is not ACTIVE_STATE.
2016-12-23 15:16:32,411 ec_worker WARNING ExecutionContext is already stopped.
2016-12-23 15:16:32,411 ec_base ERROR Invoking on_shutdown() for each RTC failed.
====

添付ファイルには,数が多く紛らわしくて申し訳ありませんが,
以下のものを添付いたします.
=====
1. 確認したRTコンポーネントのXMLファイル RTC.xml
2. 実行時のログ  rtc1164.log
3. RTC Builder で自動出力したコード DataPortSample_output.py
4. エラーが出ることを確認したコード DataPortSample_1.1.2.py
5. データポートの宣言を1.1.0の方法に修正したもの DataPortSample_1.1.0.py
  (これは正しく動作します)  
=====

RTミドルウェアコンテストでのコンポーネント改良時,
1.1.2で自動生成したテンプレートをもとに
コンポーネントを作成しているときに,このエラーに遭遇しました.

不勉強で申し訳ありませんが,
データポートの宣言部分(自動生成される部分です)を修正せずに,
現行の1.1.2 のバージョンで,正しくタイムスタンプを付けることができる
コードの書き方をご教示いただけないでしょうか.
よろしくお願い申し上げます.

この場合「サンプルのコードを読むように」と良くいわれるのですが,
インストール時に入っている examples のコードは

	RTC.TimedLong(RTC.Time(0,0),0)

で宣言されており,現行のバージョンで自動出力されたコードの
書き方とは異なっております.そのため,困ってしまいました.
最終的には,RTミドルウェアコンテストの他の参加者の方が
アップロードされていたコードを参考に,
1.1.0でのデータポート宣言方法にコードを修正して,
実行できるようになった次第です.

#バグを生む原因になりますので,
#自動生成されるコードを修正することは避けたいです.

なにとぞよろしくお願い申し上げます.

-- 
Tomohiro UMETANI
E-mail: umetani @ konan-u.ac.jp
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: DataPortSample_1.1.0.py
型:         text/x-python
サイズ:     5650 バイト
説明:       無し
URL:        <http://www.openrtm.org/pipermail/openrtm-users/attachments/20161223/5d13d34a/attachment.py>
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: rtc1164.log
型:         application/octet-stream
サイズ:     2472 バイト
説明:       無し
URL:        <http://www.openrtm.org/pipermail/openrtm-users/attachments/20161223/5d13d34a/attachment.obj>
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: DataPortSample_1.1.2.py
型:         text/x-python
サイズ:     5597 バイト
説明:       無し
URL:        <http://www.openrtm.org/pipermail/openrtm-users/attachments/20161223/5d13d34a/attachment-0001.py>
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: DataPortSample_output.py
型:         text/x-python
サイズ:     5483 バイト
説明:       無し
URL:        <http://www.openrtm.org/pipermail/openrtm-users/attachments/20161223/5d13d34a/attachment-0002.py>
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: RTC.xml
型:         application/xml
サイズ:     2802 バイト
説明:       無し
URL:        <http://www.openrtm.org/pipermail/openrtm-users/attachments/20161223/5d13d34a/attachment.xml>


More information about the openrtm-users mailing list