OpenRTM-aist 2.0以上が必要なため、以下の手順でソースコードからビルドを行う必要がある。
独自シリアライザの実装には以下のファイルを作成する必要がある。
TestSerializer.pyを以下のように作成します。
#!/usr/bin/env python # -*- coding: euc-jp -*- import OpenRTM_aist import RTC #以下はシリアライザの実装 class TestSerializer(OpenRTM_aist.ByteDataStreamBase): def __init__(self): pass def __del__(self): pass def serialize(self, data): if data._NP_RepositoryId == RTC.TimedLong._NP_RepositoryId: bdata = str(data.data) return OpenRTM_aist.ByteDataStreamBase.SERIALIZE_OK, bdata else: return OpenRTM_aist.ByteDataStreamBase.SERIALIZE_ERROR, "" def deserialize(self, cdr, data_type): if data_type._NP_RepositoryId == RTC.TimedLong._NP_RepositoryId: data_type.data = int(cdr)+1 return OpenRTM_aist.ByteDataStreamBase.SERIALIZE_OK, data_type else: return OpenRTM_aist.ByteDataStreamBase.SERIALIZE_ERROR, data_type #以下はモジュールロード時に呼び出される関数 def TestSerializerInit(mgr): OpenRTM_aist.SerializerFactories.instance().addSerializer("test:RTC.TimedLong", # addFactory関数の第1引数で登録名を設定。以下で独自シリアライザを利用するときはこの名前を使用する。 TestSerializer, RTC.TimedLong) #OpenRTM_aist.SerializerFactory.instance().addSerializerGlobal("test", #addSerializerGlobalを使うと特定のデータ型だけではなく、全てのデータ型でTestSerializerを使用可能にする TestSerializer)
シリアライザにはserialize関数、deserialize関数を実装する必要がある。 serialize関数はRTMのデータをバイト列のデータ等に変換してリターンコードと変換後のデータを返す。
deserialize関数はバイト列のデータなどをRTMのデータに変換してリターンコードと変換後のデータを返す。
TestSerializer.pyをRTC実行時にロードして利用できるようにする。
rtc.confに以下のように記述することでロードできる。モジュール探索パスは適宜変更する。
manager.modules.load_path: . manager.modules.preload: TestSerializer.py
データポート接続時にmarshaling_typeのオプションでシリアライザを設定できる。
manager.components.preconnect: ConsoleOut0.in?port=ConsoleIn0.out&marshaling_type=test
RT System Editorで設定する場合はdataport.marshaling_typeといパラメータで設定する。
これで独自シリアライザ(TestSerializer)が使用可能になったため、ConsoleInとConsoleOutで通信すると標準入力した数値に1を足した数値が表示される。
以下はConsoleInとConsoleOutのデータポートを接続してアクティベートするrtc.confの例。
manager.modules.load_path: . manager.modules.preload: TestSerializer.py, ConsoleOut.py manager.components.precreate: ConsoleOut manager.components.preconnect: ConsoleOut0.in?port=ConsoleIn0.out&marshaling_type=test manager.components.preactivation: ConsoleOut0, ConsoleIn0
モーションエディタ/シミュレータ
動力学シミュレータ
統合開発プラットフォーム
産総研が提供するRTC集
東京オープンソースロボティクス協会
ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク
OpenRTM-aistのインストール
OpenRTM-aist 2.0以上が必要なため、以下の手順でソースコードからビルドを行う必要がある。
独自シリアライザの作成
独自シリアライザの実装には以下のファイルを作成する必要がある。
Pythonファイルの作成
TestSerializer.pyを以下のように作成します。
シリアライザにはserialize関数、deserialize関数を実装する必要がある。 serialize関数はRTMのデータをバイト列のデータ等に変換してリターンコードと変換後のデータを返す。
deserialize関数はバイト列のデータなどをRTMのデータに変換してリターンコードと変換後のデータを返す。
独自シリアライザの利用
TestSerializer.pyをRTC実行時にロードして利用できるようにする。
rtc.confに以下のように記述することでロードできる。モジュール探索パスは適宜変更する。
データポート接続時にmarshaling_typeのオプションでシリアライザを設定できる。
RT System Editorで設定する場合はdataport.marshaling_typeといパラメータで設定する。
これで独自シリアライザ(TestSerializer)が使用可能になったため、ConsoleInとConsoleOutで通信すると標準入力した数値に1を足した数値が表示される。
以下はConsoleInとConsoleOutのデータポートを接続してアクティベートするrtc.confの例。