[openrtm-users 00955] Unofficial patch for RtcHandle (Re: OpenRTM-aist-Python-1.0.0仕様変更の確認)

Yosuke Matsusaka yosuke.matsusaka @ aist.go.jp
2009年 9月 14日 (月) 14:32:10 JST


松坂です。

OpenRTM-aist-Python-1.0.0版の情報、ありがとうございました。
自分のスクリプトは無事に移行する事ができました。>栗原さん

末廣先生のRtcHandleが使える事が私がPython版のOpenRTMを使う大きな理由に
なっているのですが、それについても1.0.0で動作させることができましたのでpatchを
送ります。

以下、使用上の注意です。
・本パッチはUnofficial版です(不具合の責任はオリジナルの開発者にはありません)。
・大多数の機能は動作しますが、まだ対応できていない機能(portのread()など)もあります。
・ライセンス形態とその所在はオリジナルのスクリプトに従います。

===================================================================
--- rtc_handle.py
+++ rtc_handle.py
@@ -3,9 +3,9 @@

 import sys
 from omniORB import CORBA, URI
-from omniORB import any
+from omniORB import any, cdrMarshal

-import OpenRTM
+import OpenRTM_aist
 import RTC


@@ -59,7 +59,7 @@
             return ref

     def list_obj(self) :
-        self.rtc_handes = {}
+        self.rtc_handles = {}
         self.obj_list = {}
         return self.list_obj1(self.naming._rootContext, "")

@@ -90,7 +90,7 @@
         if bd.binding_type == CosNaming.nobject :
             tmp = name_context.resolve(bd.binding_name)
             self.obj_list[nam]=tmp
-            print 'objcet '+nam+' was listed.'
+            print 'object '+nam+' was listed.'
             try :
                 tmp = tmp._narrow(RTC.RTObject)
             except :
@@ -174,9 +174,9 @@

 class IOConnector(Connector) :
     def __init__(self, plist, name = None, id="", prop_dict={}) :
-       self.def_prop = {'dataport.dataflow_type':'Push' ,
-                        'dataport.interface_type':'CORBA_Any' ,
-                        'dataport.subscription_type':'Flush'}
+       self.def_prop = {'dataport.dataflow_type':'push' ,
+                        'dataport.interface_type':'corba_cdr' ,
+                        'dataport.subscription_type':'flush'}
        Connector.__init__(self, plist, name, id, prop_dict)

 class ServiceConnector(Connector) :
@@ -253,20 +253,19 @@
         Port.__init__(self, profile, nv_dict)
         self.con = IOConnector([self])
         self.get_info()
-        self.ref = self.con.prop_dict['dataport.corba_any.inport_ref']
+        self.ref = self.con.prop_dict['dataport.corba_cdr.inport_ref']
         self.data_class = eval('RTC.' + self.prop['dataport.data_type'])
         self.data_tc = eval('RTC._tc_' + self.prop['dataport.data_type'])
     def write(self,data) :
-        self.ref.put(CORBA.Any(self.data_tc,
-                         self.data_class(RTC.Time(0,0),data)))
+        self.ref.put(cdrMarshal(self.data_tc,
self.data_class(RTC.Time(0,0),data), 1))

 class RtcOutport(Port) :
     def __init__(self, profile,nv_dict=None) :
         Port.__init__(self, profile, nv_dict)
         self.con = IOConnector([self])
         self.get_info()
-        if 'dataport.corba_any.outport_ref' in self.con.prop_dict :
-           self.ref = self.con.prop_dict['dataport.corba_any.outport_ref']
+        if 'dataport.corba_cdr.outport_ref' in self.con.prop_dict :
+           self.ref = self.con.prop_dict['dataport.corba_cdr.outport_ref']
         else :
            self.ref=None
         self.data_class = eval('RTC.' + self.prop['dataport.data_type'])
@@ -303,7 +302,7 @@
            self.conf_set_data[cc.id]=nvlist2dict(cc.configuration_data)
        self.profile = self.rtc_ref.get_component_profile()
        self.prop = nvlist2dict(self.profile.properties)
-       self.execution_contexts = self.rtc_ref.get_contexts()
+       self.execution_contexts = self.rtc_ref.get_owned_contexts()
        self.port_refs = self.rtc_ref.get_ports()
                 # this includes inports, outports and service ports
     self.ports = {}
@@ -350,4 +349,4 @@
     def __init__(self, name, data_buf, size=8) :
         self.name =  name
         self.data =  data_buf
-        self.OpenRTM.InPort(name,data_buf,OpenRTM.RingBuffer(size))
+        self.OpenRTM_aist.InPort(name,data_buf,OpenRTM_aist.RingBuffer(size))
===================================================================

-- 
Yosuke Matsusaka, Ph.D  <yosuke.matsusaka @ aist.go.jp>
  Interaction Modeling Group /
  National Institute of Advanced Industrial Science and Technology (AIST)
  Tel: 029-862-6726  Web: http://staff.aist.go.jp/yosuke.matsusaka/



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