忍者ブログ
ロボット、千葉ロッテマリーンズについていいかげんなことを書きます。
[331]  [330]  [329]  [328]  [327]  [325]  [324]  [323]  [322]  [321]  [320
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

・・・そろそろ書くネタがなくなりそう.

多分,あと3回ぐらいでこの企画も終わりです.

さすがに毎日更新はきつい.毎日更新してないけど.

とりあえず,記事の数が20を越えたのでこれで勘弁して欲しい.



それはさておき,今回はデータポート追加RTC実行コンテキストデータポートコールバックをPythonで作成します.

OpenRTM-aist-Python-1.0.1がひっそりと公開されてるので,まだインストールしてない人はそちらを入れた方が良いかも.


まずはデータポート追加RTCから.

サンプルはここからダウンロード出来ます.


とは言ってもC++とほぼ同じで,

データポートの追加は,


self._inIn = OpenRTM_aist.InPort("in", self._d_in)
self.registerInPort("in",self._inIn)

self._outOut = OpenRTM_aist.OutPort("out", self._d_out)
self.registerOutPort("out",self._outOut)



のような感じです.

削除は,


self.removePort(self._inIn)
self.removePort(self._outOut)




とするだけ.
若干Pythonの方が簡単です.



続いて,実行コンテキストを作成します.

サンプルはここからダウンロード出来ます.


rtc.confでDLLの替わりに,


manager.modules.preload: TestExecutionContext.py


とPythonソースファイルを読み込みます.


肝心のソースですが,特にC++と違う所はないため省略します.



続いて,データポートコールバックをPythonで実装します.

サンプルはここからダウンロード出来ます.


コネクタ・バッファのコールバックはOpenRTM-aist-Python-1.0.1のサンプルそのままなので手抜き省略します.


インポートのコールバックは,


class MyOnRead(OpenRTM_aist.OnRead):
   def __init__(self):
           pass
   def __call__(self):
     print u"read() 関数が呼ばれました。"

class MyOnReadConvert(OpenRTM_aist.OnReadConvert):
   def __init__(self):
           pass
   def __call__(self, value):
     tmp = RTC.TimedLong(RTC.Time(0,0),0)
     tmp.data = 2*value.data
     return tmp

・・・

self._inIn.setOnRead(MyOnRead())
self._inIn.setOnReadConvert(MyOnReadConvert())



という感じ.

__call__というメソッドが呼び出されるみたいですね.


アウトポートのコールバックは


class MyOnWrite(OpenRTM_aist.OnWrite):
   def __init__(self):
           pass
   def __call__(self, value):
     print u"write() 関数が呼ばれました。"

class MyOnWriteConvert(OpenRTM_aist.OnWriteConvert):
   def __init__(self):
           pass
   def __call__(self, value):
     tmp = RTC.TimedLong(RTC.Time(0,0),0)
     tmp.data = value.data * value.data
     return tmp

・・・

self._outOut.setOnWrite(MyOnWrite())
self._outOut.setOnWriteConvert(MyOnWriteConvert())



となります.



今日はこの辺にしといてやります.

次回はARTExecutionContextを使ってみます.






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

人気ブログランキングへ

PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
カレンダー
10 2024/11 12
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
年齢:
36
性別:
男性
誕生日:
1988/09/22
職業:
あれ
趣味:
妄想、自堕落
バーコード
ブログ内検索
P R
カウンター
忍者ブログ [PR]