ロボット、千葉ロッテマリーンズについていいかげんなことを書きます。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
今日3回目の更新ですが,日付は16日なので勘弁してください.
そろそろ,管理人急病※とかでサボろうかと思ってる所です.
※下痢気味とか風邪気味とかです.
それはさておき,今回はrtctreeをいぢくってみます.
OpenRTM-aistの公式HPの説明を読みながら手探りでやってみます.
・・・なんか,OpenRTM-aistの公式HPの表示がおかしいような気がしますけど,僕だけですかね?
今回は簡単なのでソースは配布しません.
まず,インストールしてない場合はPython2.6とOpenRTM-aist-Python-1.0.0とrtctreeをインストールしてください.
インストールが完了したら,Pythonのコマンドライン上で打ち込むか,またはソースファイルを作成して,
import rtctree.tree
と記述してください.
今回はOpenRTM-aist-Python-1.0.0のサンプルSeqIOを使うので,SeqIn.pyとSeqOut.pyを起ち上げておいてください.
そして,
tree = rtctree.tree.RTCTree(servers='localhost:2809')
としてRTCツリーを作成してください.
ここで,
print tree
とすると中身が分かります.
そして,
CompIn = tree.get_node(['/', 'localhost:2809','SequenceOutComponent0.rtc'])
CompOut = tree.get_node(['/', 'localhost:2809','SequenceInComponent0.rtc'])
のようにして,RTCまでのパスを指定してRTCのオブジェクトを取得してください.
ここで,
CompIn.activate_in_ec(0)
CompOut.activate_in_ec(0)
とすると,アクティブになります.
RTCのオブジェクトさえ取得できれば,あとの手順はほぼ同じです.
CompIn.deactivate_in_ec(0)
CompOut.deactivate_in_ec(0)
で非アクティブです.
exitする場合は,
CompIn.exit()
とします.
その他にも,
EC = CompIn.owned_ecs
EC[0].activate_component(CompIn.object)
のように実行コンテキストを取得してアクティブにできるみたいですね.
ポートを接続する場合は,
portIn = CompIn.get_port_by_name('Short')
portOut = CompOut.get_port_by_name('Short')
ポートのオブジェクトを名前で取得して,
portIn.connect(dest=portOut,name='Short_Short')
とすれば接続するようです.
接続を切る場合は
CompIn.disconnect_all()
として,RTC全ての接続を切るか,
Connect = portIn.connections
Connect[0].disconnect()
として,ポートの接続のリストを取得して切る方法があるようです.
本当はもうちょっとやりたいのですが,ネタ切れ防止のためこのぐらいにしといてあげます.
これでとりあえず次回まで余裕ができたので,次回はrtshellをいぢくってみます.
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
そろそろ,管理人急病※とかでサボろうかと思ってる所です.
※下痢気味とか風邪気味とかです.
それはさておき,今回はrtctreeをいぢくってみます.
OpenRTM-aistの公式HPの説明を読みながら手探りでやってみます.
・・・なんか,OpenRTM-aistの公式HPの表示がおかしいような気がしますけど,僕だけですかね?
今回は簡単なのでソースは配布しません.
まず,インストールしてない場合はPython2.6とOpenRTM-aist-Python-1.0.0とrtctreeをインストールしてください.
インストールが完了したら,Pythonのコマンドライン上で打ち込むか,またはソースファイルを作成して,
import rtctree.tree
と記述してください.
今回はOpenRTM-aist-Python-1.0.0のサンプルSeqIOを使うので,SeqIn.pyとSeqOut.pyを起ち上げておいてください.
そして,
tree = rtctree.tree.RTCTree(servers='localhost:2809')
としてRTCツリーを作成してください.
ここで,
print tree
とすると中身が分かります.
そして,
CompIn = tree.get_node(['/', 'localhost:2809','SequenceOutComponent0.rtc'])
CompOut = tree.get_node(['/', 'localhost:2809','SequenceInComponent0.rtc'])
のようにして,RTCまでのパスを指定してRTCのオブジェクトを取得してください.
ここで,
CompIn.activate_in_ec(0)
CompOut.activate_in_ec(0)
とすると,アクティブになります.
RTCのオブジェクトさえ取得できれば,あとの手順はほぼ同じです.
CompIn.deactivate_in_ec(0)
CompOut.deactivate_in_ec(0)
で非アクティブです.
exitする場合は,
CompIn.exit()
とします.
その他にも,
EC = CompIn.owned_ecs
EC[0].activate_component(CompIn.object)
のように実行コンテキストを取得してアクティブにできるみたいですね.
ポートを接続する場合は,
portIn = CompIn.get_port_by_name('Short')
portOut = CompOut.get_port_by_name('Short')
ポートのオブジェクトを名前で取得して,
portIn.connect(dest=portOut,name='Short_Short')
とすれば接続するようです.
接続を切る場合は
CompIn.disconnect_all()
として,RTC全ての接続を切るか,
Connect = portIn.connections
Connect[0].disconnect()
として,ポートの接続のリストを取得して切る方法があるようです.
本当はもうちょっとやりたいのですが,ネタ切れ防止のためこのぐらいにしといてあげます.
これでとりあえず次回まで余裕ができたので,次回はrtshellをいぢくってみます.
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
PR
この記事にコメントする