[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 メーリングリストの案内