忍者ブログ
ロボット、千葉ロッテマリーンズについていいかげんなことを書きます。
[579]  [578]  [577]  [576]  [575]  [574]  [573]  [572]  [571]  [570]  [568
×

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

ものすごい今更ですが、RTC起動時のコマンドライン引数について説明します。

まずコマンドラインオプションには以下のようなものがあります。



-f コンフィギュレーションファイル(rtc.conf)の指定
-l ロードするモジュールの指定(未実装らしい)
-o その他のオプション(何でも設定可能)
-d マスターマネージャに設定(ソースコードには「デフォルトのコンフィギュレーションを使う。」と書いてあるが、実際にはマスターマネージャに設定しているだけなので最終的にどうなるかは不明)
-p ポート番号設定(corba.endpoint)
-a マネージャのCORBAサーバントを起動しないようにする(外部からマネージャの操作はできなくなる)


よく使うのは-fだと思います。


testComp.exe -f rtc.conf




-oは何でも設定できるので使いこなせれば便利です。


testComp.exe  -o "manager.modules.preload: test2.dll" -o "manager.components.precreate: test2"










次にこれも基本的な話らしいのですが、corbaloc形式でマスターマネージャにアクセスする方法を説明します。

#!/usr/bin/env python
# -*- coding: euc-jp -*-
from omniORB import CORBA
import RTM
orb = CORBA.ORB_init([], CORBA.ORB_ID)
mgrloc = "corbaloc:iiop:localhost:2810/manager"
mobj = orb.string_to_object(mgrloc)
mgr = mobj._narrow(RTM.Manager)

ソースコードとしてはこれだけです。
CORBAのstring_to_objectにURLを渡してオブジェクトリファレンスを取得するだけです。

以下のような形式でURLを記述する事でアクセスできます。


corbaloc:iiop:ホスト名:ポート番号/マネージャ名



ホスト名、ポート番号はrtc.confのcorba.master_managerで設定できます。
マネージャ名はmanger.nameで設定してください。

後はrtc.confにはmaanger_naming_formatsという項目があるわけですが、これはネームサーバに登録するフォーマットの指定なのでcorbaloc形式でアクセスする場合には関係ありません。





corbaname形式を使えばネームサーバーに登録された名前からオブジェクトリファレンスを取得できます。


(省略)
mgrname = "corbaname::localhost:2809/NameService#manager.mgr"
mobj = orb.string_to_object(mgrname)
mgr = mobj._narrow(RTM.Manager)






後はCORBAでは一番基本的なIOR形式です。


mgrior = "IOR:010000001400000049444c3a52544d2f4d616e616765723a312e300001000000000000005c000000010102000c0000003139322e3136382e302e3200fa0a0000070000006d616e61676572000200000000000000080000000100000000545441010000001c00000001000000010001000100000001000105090101000100000009010100"
mobj = orb.string_to_object(mgrior)
mgr = mobj._narrow(RTM.Manager)



とは言ってもマネージャを操作するのにIORを使う人はあまりいないかもしれないです。そもそもIORを取得する手段があるかどうか不明です。





まあでも実際にマネージャやRTCを操作するプログラムを作ろうと思ったら、ルートコンテキストから登録されたオブジェクトを検索するプログラムを組む事が多いし、あまりcorbaloc形式を使ったことはありません。


from omniORB import CORBA
import OpenRTM_aist
import RTM
orb = CORBA.ORB_init([], CORBA.ORB_ID)
address = "localhost:2809"
ns = OpenRTM_aist.CorbaNaming(orb, address)
name_cxt = ns.getRootContext()
bl,bi = name_cxt.list(100)
for b in bl:
    
    if b.binding_name[0].kind == "mgr":
        mobj = OpenRTM_aist.CorbaConsumer()
        mobj.setObject(name_cxt.resolve(b.binding_name))
        mgr = mobj.getObject()._narrow(RTM.Manager)






まあでも実際にマネージャを操作する場合はrtshellとかRTシステムエディタみたいな何らかのツールを使うだろうから、知っていてもあまり役には立たないかもしれないです。














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

人気ブログランキングへ
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]