start-jsk / rtmros_common

OpenRTM - ROS interoperability packages
http://wiki.ros.org/rtmros_common
12 stars 52 forks source link

openhrp3, hrpsys等を使う時のデフォルトのポート番号をデフォルトでない値にする #141

Closed k-okada closed 10 years ago

k-okada commented 10 years ago

From kei.ok...@gmail.com on July 25, 2013 01:49:13

Issue 140 にもあるようにname server関連のトラブルが耐えないので, ポート番号をデフォルトではなくして,rtmlaunch みたいなの( Issue 105 )を 使ってnmae serverを立ち上げる(デフォルトのポートをつかうとsudoで killしなければいけない場合がある)ほうが,トラブルが減ると思いますが どうでしょうか?

Original issue: http://code.google.com/p/rtm-ros-robotics/issues/detail?id=141

k-okada commented 10 years ago

From noz...@jsk.imi.i.u-tokyo.ac.jp on July 24, 2013 21:57:22

賛成です。 http://code.google.com/p/rtm-ros-robotics/issues/detail?id=139&can=1&q=2888 をみても、rosmake時に専用ポートでomninamesをあげるように変わってきてます。

あとは、(必須でないですが)地味に欲しい機能として、 roslaunchのようにコマンドラインで補完ができる、などがあります。

k-okada commented 10 years ago

From nakaokat on July 24, 2013 22:10:27

naming serverは立ち上げ忘れることが多いので、自動になると便利ですね。

外でomninamesをあげてある場合にはそのままそれを使ってほしいので、 rtm-naming, rtm-naming-restartのポートも同じポートに変えて、 sudoではなくすという感じでしょうか。

コマンドライン補完はrtshellなどと同じようにbashrcで読み込めるようにしておけばよさそうです。

k-okada commented 10 years ago

From kei.ok...@gmail.com on July 30, 2013 04:08:37

alias rtmlaunch='rospack find hrpsys_ros_bridge/scripts/rtmlaunch' としたらrtmlaounchが使えると思います. ー ポートの変更 (3003にしますか?) ー 補間 等を対応してくれると嬉しいです.

k-okada commented 10 years ago

From nakaokat on July 30, 2013 04:12:58

補完はどこかに complete -F "_roscomplete_launch" -o filenames "rtmlaunch" と書けばできます。

k-okada commented 10 years ago

From kei.ok...@gmail.com on August 20, 2013 00:45:18

岡田です.

本件,対応しました.ポートは昔と同じ5005にしました. 以下のファイルを変更しただけでhironx_ros_bridge_simulation.launchがうごいたので,他のロボットも変更なしで動くはずですが,動かなければ教えて下さい.

使い方ですが,,, alias rtmlaunch='rospack find hrpsys_ros_bridge/scripts/rtmlaunch' として, rtmlaunch hogheoge hogehoge.launch としてください. rtmlaunchの中でnameserverを5005で立ち上げてからroslauchを呼び出します. source rospack find openrtm_tools/scripts/rtshell-setup.sh としておこうとタブ補間が聞くはずです.また,rtshell-setup.shを読み込むか, export RTCTREE_NAMESERVERS=localhost:5005 としておく必要があります.

rtmlaunchしたあと,もう一度rtmlaunchするとnameserverを立ち上げ直すので,おかしいことが起こるかもしれません.どうすべきか,アイデアがあれば教えてください.

送信しています hrpsys_ros_bridge/launch/hrpsys_ros_bridge.launch 送信しています hrpsys_ros_bridge/scripts/rtmlaunch 送信しています hrpsys_tools/launch/hrpsys.launch 送信しています openrtm_tools/scripts/rtshell-setup.sh

k-okada commented 10 years ago

From kei.ok...@gmail.com on August 20, 2013 00:45:50

r5165 です.

k-okada commented 10 years ago

From nothewo...@gmail.com on August 20, 2013 23:27:34

rostestはどうすればよろしいでしょうか。

rtmlaunchのmainの部分をかえてみみて、

from rostest import rostestmain try: rostestmain()

なrtmtestをつくるかんじでしょうか。

あと、openrtm_tools/scripts/rtmlaunch.pyはなにか別なものに リネームするとよさそうですね。

k-okada commented 10 years ago

From kei.ok...@gmail.com on August 21, 2013 20:12:01

rtmlaunchのmainの部分をかえてみみて、 なrtmtestをつくるかんじでしょうか。 そうですね.rtmlaunchをimportして動くようなrtmtestができるといいですね. (あるいは,rtmlaunch/rtmtestがなんかのファイルをimportして動くようにする)

あと、openrtm_tools/scripts/rtmlaunch.pyはなにか別なものに リネームするとよさそうですね。

そうですが,deb[1]でいれると,rosrunせずにrtmlaunch だけで立ち上がるようにできるので, (いまそうなっているか未確認ですが),まぁ大丈夫じゃないかと思っています. https://code.ros.org/lurker/attach/3@20130821.233703.f7040f98.attach

k-okada commented 10 years ago

From gm130s on August 22, 2013 07:28:44

rtmlaunchデフォルトでないポートで立ち上げようとしているので,rtmlaunchでは/var/run/:cosnames:pidがあれば,already startedと判断しているのは間違いではないでしょうか?

k-okada commented 10 years ago

From gm130s on August 22, 2013 07:30:31

http://code.google.com/p/rtm-ros-robotics/wiki/hironx_ros_bridge?ts=1377181772&updated=hironx_ros_bridge に対処法 ($ sudo /etc/init.d/omniorb4-nameserver stop) を書きましたが,このチケットがなおったら消して下さい.

k-okada commented 10 years ago

From you...@jsk.imi.i.u-tokyo.ac.jp on August 22, 2013 08:29:25

すいません、ついていけてないのですが、 hrpsys_gazebo_atlas/launch/atlas_hrpsys.launchがエラーになっています。 本件と関係あるかもわからないのですが、関係あるなら修正方法等お教え願います。

core service [/rosout] found process[modelloader-1]: started with pid [18802] IDL:omg.org/CORBA/TRANSIENT:1.0 [modelloader-1] process has finished cleanly log file: /home/lyouhei/.ros/log/5fe87046-0adf-11e3-a547-00018eabb2f3/modelloader-1.log respawning... [modelloader-1] restarting process process[modelloader-1]: started with pid [18805] IDL:omg.org/CORBA/TRANSIENT:1.0 [modelloader-1] process has finished cleanly log file: /home/lyouhei/.ros/log/5fe87046-0adf-11e3-a547-00018eabb2f3/modelloader-1.log respawning...

k-okada commented 10 years ago

From you...@jsk.imi.i.u-tokyo.ac.jp on August 22, 2013 08:36:17

すいません、読めていませんでした。 これまでroslaunchしていたのを、以下に変更しろということですね。

rtmlaunch hogheoge hogehoge.launch

k-okada commented 10 years ago

From kei.ok...@gmail.com on August 22, 2013 08:54:17

岡田です. すいません. 1)今まで rosrun openrtm_aist rtm-naming してから roslaunch hogehgoe hogehoge.launch していました.

これからは rosrun openrtm_aist rtm-naming 5005 roslaunch hogehgoe hogehoge.launch とするか, alias rtmlaunch='rospack find hrpsys_ros_bridge/scripts/rtmlaunch' rtmlaucn hogehoge hogehgoe.launch してください(rtmlaunchは5005でnameserverをあげてからroslaunchします)

ただし,後者の場合このチケットがクローズされるまでは, sudo /etc/init.d/omniorb4-nameserver stop してから実行して下さい.

k-okada commented 10 years ago

From kei.ok...@gmail.com on August 22, 2013 19:53:04

r5216 で直したつもりです. sudo /etc/init.d/omniorb4-nameserver stop しなくてもOKなはずなので確認して下さい.

k-okada commented 10 years ago

From nakaokat on August 25, 2013 19:58:03

今さらの指摘になってしまいますが、 http://ja.wikipedia.org/wiki/TCP%E3%82%84UDP%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%9D%E3%83%BC%E3%83%88%E7%95%AA%E5%8F%B7%E3%81%AE%E4%B8%80%E8%A6%A7 によると、ポート5005は

5005/TCP,UDP,DCCP RTP (Real-time Transport Protocol) control protocol (RFC 3551, RFC 4571)

となっていて、どうも公式に割り当てられているポートなので、勝手にkillしてしまってよいものかと思います。 例えば15005ならば他では使われていないようです。

k-okada commented 10 years ago

From emijah.s on August 25, 2013 23:02:33

そうですね。そもそもOpenHRPで5005から2809に移した理由は2809がデフォルトのCORBAポーとだったからと記憶しています。RTPように開いているので、Windowsなどでは元々開いていて使いやすいのかもしれないですね。高い番号のポートも使用中かどうか確認してから使う必要もありそうです。

k-okada commented 10 years ago

From nao.luna...@gmail.com on August 28, 2013 00:45:23

実機のHIROとの接続を試したのですが,

その時に ~/ros/groovy/rtm-ros-robotics/openrtm_common/hrpsys/build/hrpsys-base-source/python の252行目あたりが

    try:
            n = sys.argv.index('-ORBInitRef')
            nshost = re.match('NameService=corbaloc:iiop:(\w+):2809/NameService', sys.argv[n+1]).group(1)
    except:
            nshost = socket.gethostname()

となっていたので,接続できず,2809を5005に変えたところHIROと接続ができるようになりました.

ネームサーバのデフォルトポートが5005に変わったそうですが, こちらの変更はコミットしなくても大丈夫でしょうか?

ご確認お願いします.

k-okada commented 10 years ago

From kei.ok...@gmail.com on August 28, 2013 00:55:13

はい.ありがとうございます. 一つ調べてもらいたいんですが,ここは変更しない状態で export RTCTREE_NAMESERVERS=localhost:5005 export ORBInitRef="NameService=corbaloc:iiop:localhost:5005/NameService" のexportをやめた状態だと接続できる,ということはあるでしょうか? 特に2番目のexportはなくて大丈夫なはず,と思っています.

k-okada commented 10 years ago

From kei.ok...@gmail.com on August 28, 2013 01:15:09

nakaokatさんのご指摘の通り15005にしてみました. https://code.google.com/p/rtm-ros-robotics/source/detail?r=5283 https://code.google.com/p/hrpsys-base/source/detail?r=826 で変更したつもりです.漏れがあれば教えて下さい.

svn up ; rosmake でOKだと思いますが,hrpsysは(roscd hrpsys; make download)として ソースを落としてからmakeとする必要があると思います(説明が雑なので分からなかったらだれかフォローして下さい)

実機の方は、/opt/jsk/binの NameServer.sh, ModelLoader.sh, rtcd.sh に情報があるので,

== NameServer.sh

/opt/jsk/bin/omniNames -logdir /tmp -start >

$LOG_DIR/NameServer-$DATESTRING.log 2>&1 & /opt/jsk/bin/omniNames -logdir /tmp -start 15005 > $LOG_DIR/NameServer-$DATESTRING.log 2>&1 & ==

== ModelLoader.sh

(openhrp-model-loader -ORBInitRef

NameService=corbaloc:iiop:localhost:2809/NameService > $LOG_DIR/ModelLoader-$DATESTRING.log 2>&1 )& (openhrp-model-loader -ORBInitRef NameService=corbaloc:iiop:localhost:15005/NameService > $LOG_DIR/ModelLoader-$DATESTRING.log 2>&1 )&

==rtcd.shは rtcd -f $JSK_DIR/etc/$ROBOT/hrprtc/rtcdRobotMode.conf > $LOG_DIR/rtcd-$DATESTRING.log 2>&1 なので、 === /opt/jsk/etc/HIRONX/hrprtc/rtcdRobotMode.conf を変更

corba.nameservers: localhost:2809

corba.nameservers: localhost:15005

と変更する.

手元のターミナル亜で export RTCTREE_NAMESERVERS=localhost:2709 となっていれば, export RTCTREE_NAMESERVERS=hiro014:15005 に変更する.

実機のつなげ方

./hironx.py RobotHardware0 /opt/jsk/etc/HIRONX/model/main_dof15.wrl -- -ORBInitRef NameService=corbaloc:iiop:hiro014:15005/NameService として、RTCを立ち上げて(ここはダサいので要変更) roslaunch hironx_ros_bridge hironx_ros_bridge.launch nameserver:=hiro014 としてブリッジを立ち上げる.

k-okada commented 10 years ago

From nao.luna...@gmail.com on August 28, 2013 01:21:51

その2つをしない状態でも,接続できませんでした.

また,.bashrcに, export RTCTREE_NAMESERVERS=hiro014:5005 export ORBInitRef="NameService=corbaloc:iiop:hiro014:5005/NameService"

export RTCTREE_NAMESERVERS=localhost:5005

export ORBInitRef="NameService=corbaloc:iiop:localhost:5005/NameService"

のように,hiro014の方を設定しても, [hrpsys.py] finding RTCManager and RobotHardware Manager not found [hrpsys.py] wait for RTCmanager : yken-hiro-sim と出てしまいました.

改善案としては, nshost = re.match('NameService=corbaloc:iiop:(\w+):2809/NameService', sys.argv[n+1]).group(1)

の部分を, nshost = re.match('NameService=corbaloc:iiop:(\w+):\d+/NameService', sys.argv[n+1]).group(1)

のように変更すると,どのようなポート番号でも対応できそうな気がするのですが, いかがでしょうか?

k-okada commented 10 years ago

From nao.luna...@gmail.com on August 28, 2013 01:23:12

投稿がかぶりました.

ありがとうございます,そちらを試してみます.

k-okada commented 10 years ago

From nao.luna...@gmail.com on August 28, 2013 01:52:47

岡田先生,以下の2点がコミットされていないような気がします. これらを変更すると,rtmlaunch hironx_ros_bridge hironx_ros_bridge.launchが立ち上がりました.

~/ros/groovy/rtm-ros-robotics/rtmros_common/hrpsys_ros_bridge/scripts/rtmlaunch

port_number = 15005

~/ros/groovy/rtm-ros-robotics/rtmros_common/hrpsys_ros_bridge/launch/hrpsys_ros_bridge.launch

確認お願いします.

k-okada commented 10 years ago

From kei.ok...@gmail.com on August 28, 2013 01:55:42

おお,ありがとうございます. r5284 で直しました.

k-okada commented 10 years ago

From kei.ok...@gmail.com on August 28, 2013 11:42:43

Status: Fixed