ロボット、千葉ロッテマリーンズについていいかげんなことを書きます。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
OpenRTM-aist-1.0以降では通信データをCDRという形式に直列化(マーシャリング)して送信しているわけですが、これによりマーシャリングしたバイナリデータの通信部分をCORBA通信から共有メモリ通信等に変更できるようになっています。
Oilでデータのマーシャリング、アンマーシャリングをするためには以下のようなコードを書く必要があります。
encoder = orb:newencoder()
encoder:put("abcde", orb.types:lookup("::OpenRTM::CdrData"))
--encoder:put({1,2,3}, oil.corba.idl.sequence{oil.corba.idl.long})
--encoder:put(133, oil.corba.idl.long)
decoder = orb:newdecoder(encoder:getdata())
val = decoder:get(orb.types:lookup("OpenRTM::CdrData"))
--val = decoder:get(oil.corba.idl.sequence{oil.corba.idl.long})
--val = decoder:get(oil.corba.idl.long)
あと、IDLファイルで定義した列挙型のデータを利用するには以下のようにします。
LifeCycleState = orb.types:lookup("::RTC::LifeCycleState").labelvalue
state = self.LifeCycleState.ACTIVE_STATE
Lua版のRTミドルウェア実装をしていて気づいたのですが、RTCがCreated状態だとRTシステムエディタ上で黒く表示されます。初めて知りました。
それから一応実装にはUUIDを生成する必要があるのですが、LuaにはデフォルトでUUID生成機能が無いのでどこからかライブラリを入手する必要があります。
とりあえず、このライブラリを使います。
これで実装に必要な準備は整ったのですが、面倒くさいのでやるかどうか未定です。
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
Oilでデータのマーシャリング、アンマーシャリングをするためには以下のようなコードを書く必要があります。
encoder = orb:newencoder()
encoder:put("abcde", orb.types:lookup("::OpenRTM::CdrData"))
--encoder:put({1,2,3}, oil.corba.idl.sequence{oil.corba.idl.long})
--encoder:put(133, oil.corba.idl.long)
decoder = orb:newdecoder(encoder:getdata())
val = decoder:get(orb.types:lookup("OpenRTM::CdrData"))
--val = decoder:get(oil.corba.idl.sequence{oil.corba.idl.long})
--val = decoder:get(oil.corba.idl.long)
あと、IDLファイルで定義した列挙型のデータを利用するには以下のようにします。
LifeCycleState = orb.types:lookup("::RTC::LifeCycleState").labelvalue
state = self.LifeCycleState.ACTIVE_STATE
Lua版のRTミドルウェア実装をしていて気づいたのですが、RTCがCreated状態だとRTシステムエディタ上で黒く表示されます。初めて知りました。
それから一応実装にはUUIDを生成する必要があるのですが、LuaにはデフォルトでUUID生成機能が無いのでどこからかライブラリを入手する必要があります。
とりあえず、このライブラリを使います。
これで実装に必要な準備は整ったのですが、面倒くさいのでやるかどうか未定です。
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
PR
この記事にコメントする