忍者ブログ
ロボット、千葉ロッテマリーンズについていいかげんなことを書きます。
[619]  [618]  [617]  [616]  [614]  [613]  [612]  [611]  [610]  [609]  [608
×

[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生成機能が無いのでどこからかライブラリを入手する必要があります。

とりあえず、このライブラリを使います。





これで実装に必要な準備は整ったのですが、面倒くさいのでやるかどうか未定です。









にほんブログ村 科学ブログ ロボットへ
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・

人気ブログランキングへ
PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
フリーエリア
最新CM
[08/31 ysuga]
[08/31 Nobu]
[08/31 ysuga]
[12/11 Nobu]
[12/11 Kanamura]
最新TB
プロフィール
HN:
Nobu
年齢:
35
性別:
男性
誕生日:
1988/09/22
職業:
あれ
趣味:
妄想、自堕落
バーコード
ブログ内検索
P R
カウンター
忍者ブログ [PR]