hrpsys hrp4c.launchにてfindRTCmanagerで例外が発生します

151 views
Skip to first unread message

Shintaro Noda

unread,
Apr 18, 2012, 3:05:18 AM4/18/12
to rtm-ros-...@googlegroups.com
http://code.google.com/p/rtm-ros-robotics/wiki/ROS_English
のインストールを行いサンプルプログラム hrp4c.launchを実行してみたのですが
HRP4Cのモデルは表示されるのですが歩きません

以下が出続けて、RTCmanagerに繋がらない(rtcd)

[hrpsys.py] start hrpsys
exception in findRTCmanager(noda-laptop)
[hrpsys.py] wait for RTCmanager :  None
exception in findRTCmanager(noda-laptop)

rtcdをhrpsys/scripts/hrpsys.launchからなくして、
rtcd以外全て起動したあとにrtcdを個別に起動すると、
rosrun openrtm rtcd -o corba.nameservers:localhost:2809 -o naming.formats:%n.rtc -o logger.file_name:/tmp/rtc%p.log -o exec_cxt.periodic.rate:200 -o manager.shutdown_onrtcs:NO\
 -o manager.is_master:YES -o manager.modules.load_path:/home/noda/ros/electric/rtm-ros-robotics/rtmros_common/hrpsys/lib -o example.SequencePlayer.config_file:/home/noda/ros/el
ectric/rtm-ros-robotics/rtmros_common/hrpsys/share/hrpsys/samples/HRP-4C/HRP-4C.conf __name:=rtcd __log:=/home/noda/.ros/log/340d96bc-8922-11e1-b76f-00216a8ea8c0/rtcd-7.log

上記の個所が
[hrpsys.py] wait for RTCmanager :  <rtm.RTCmanager instance 2>
[hrpsys.py] createRTCmanager :  <rtm.RTCmanager instance 2>
[hrpsys.py] creating components
[hrpsys.py] createComps -> Simulation :  <rtm.RTcomponent instance 3>
[hrpsys.py] createComps -> SequencePlayer :  <rtm.RTcomponent instance 4>
[hrpsys.py] createComps -> HGcontroller :  <rtm.RTcomponent instance 5>
[hrpsys.py] createComps -> StateHolder :  <rtm.RTcomponent instance 6>
[hrpsys.py] activating components
となりmanagerが見付かる

たいみんぐが問題?

これとは別に、seq.rtc, StateHolder0.rtc, HGcontroller0.rtcが
2個所にいるような気がすのですが、あってますでしょうか。
noda@noda-laptop:~/ros/electric/rtm-ros-robotics/rtmros_common/hrpsys/launch$ rtls localhost/
AbsTransformToPosRpy0.rtc  ModelLoader  seq.rtc  Simulator0.rtc  Viewer0.rtc  noda-laptop.host_cxt/  HGcontroller0.rtc  StateHolder0.rtc
noda@noda-laptop:~/ros/electric/rtm-ros-robotics/rtmros_common/hrpsys/launch$ rtls localhost/noda-laptop.host_cxt/manager.mgr/
seq.rtc  HGcontroller0.rtc  StateHolder0.rtc


以下 Consoleのメッセージの全文です

// --------------- Console -------------------
noda@noda-laptop:~$ roslaunch hrpsys hrp4c.launch
... logging to /home/noda/.ros/log/29d22a96-8918-11e1-91b3-00216a8ea8c0/roslaunch-noda-laptop-7519.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://noda-laptop:35385/

SUMMARY
========

PARAMETERS
 * /rosversion
 * /rosdistro

NODES
  /
    rtm_naming (openrtm/rtm-naming-restart)
    hrpsys_kill_all (openhrp3/openhrp-shutdown-servers)
    viewer (hrpsys/ViewerComp)
    simulator (hrpsys/SimulatorComp)
    modelloader (openhrp3/openhrp-model-loader)
    rtcd (openrtm/rtcd)
    hrpsys (hrpsys/hrpsyspy)
    abstransform2posrpy (hrpsys/AbsTransformToPosRpy)
    rtmlaunch_hrpsys (hrpsys/hrpsys-launch.sh)

WARNING: unrecognized tag rtactivate
WARNING: unrecognized tag rtconnect
WARNING: unrecognized tag sphinxdoc
auto-starting new master
process[master]: started with pid [7534]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 29d22a96-8918-11e1-91b3-00216a8ea8c0
process[rosout-1]: started with pid [7547]
started core service [/rosout]
process[rtm_naming-2]: started with pid [7559]
process[hrpsys_kill_all-3]: started with pid [7561]
omniNames: no process found
process[viewer-4]: started with pid [7562]
openhrp-aist-dynamics-simulator: no process found
process[simulator-5]: started with pid [7565]
openhrp-collision-detector: no process found
process[modelloader-6]: started with pid [7567]
openhrp-controller-bridge: no process found
process[rtcd-7]: started with pid [7570]
[modelloader-6] process has died [pid 7567, exit code -9].
log files: /home/noda/.ros/log/29d22a96-8918-11e1-91b3-00216a8ea8c0/modelloader-6*.log
respawning...
[modelloader-6] restarting process
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
openhrp-path-planner: no process found
process[modelloader-6]: started with pid [7584]
process[hrpsys-8]: started with pid [7587]
process[abstransform2posrpy-9]: started with pid [7592]
[hrpsys_kill_all-3] process has finished cleanly.
log file: /home/noda/.ros/log/29d22a96-8918-11e1-91b3-00216a8ea8c0/hrpsys_kill_all-3*.log
[modelloader-6] process has finished cleanly.
log file: /home/noda/.ros/log/29d22a96-8918-11e1-91b3-00216a8ea8c0/modelloader-6*.log
respawning...
[modelloader-6] restarting process
process[modelloader-6]: started with pid [7607]

Wed Apr 18 14:34:27 2012:

Starting omniNames for the first time.
Wrote initial log file.
Read log file successfully.
Root context is IOR:010000002b00000049444c3a6f6d672e6f72672f436f734e616d696e672f4e616d696e67436f6e746578744578743a312e300000010000000000000074000000010102000f0000003139322e3136382e39372e3132360000f90a00000b0000004e616d6553657276696365000300000000000000080000000100000000545441010000001c00000001000000010001000100000001000105090101000100000009010100035454410800000063528e4f01001db8
Checkpointing Phase 1: Prepare.
Checkpointing Phase 2: Commit.
Checkpointing completed.
process[rtmlaunch_hrpsys-10]: started with pid [7630]
nshost = noda-laptop
[hrpsys.py] start hrpsys
exception in findRTCmanager(noda-laptop)
[hrpsys.py] wait for RTCmanager :  None
exception in findRTCmanager(noda-laptop)
[hrpsys.py] wait for RTCmanager :  None
exception in findRTCmanager(noda-laptop)
[hrpsys.py] wait for RTCmanager :  None
以下 exception in findRTCmanager(noda-laptop)
[hrpsys.py] wait for RTCmanager :  None が続きます

Kei Okada

unread,
Apr 19, 2012, 11:37:43 AM4/19/12
to rtm-ros-...@googlegroups.com
おそくなりました.

roscd openrtm; svn up; rm -fr build/OpenRTM-aist-1.*; make
roscd hrpsys; svn up; make clean; make
して,もう一度試してみて下さい.

タイミングの問題は解決していないので,rtcdが立ち上がっていないときは,
roslaunch --args rtcd hrp4c.launch | bash
としてみてください.

ここさえ乗りきれば,
rosrun hrpsys hrpsyspy `rospack find
hrpsys`/share/hrpsys/samples/HRP-4C/HRP4C.py

で歩き出すと思います.

%%%

http://www.openrtm.org/pipermail/openrtm-users/2012-April/003665.html
で安藤様にご教示いただいた方法でコンポーネントのインスタンス名を
実行時に決められるようにしました.これで,simulatorcompを立ち上げたときに
$(arg SIMULATOR_NAME)で,インスタンス名をセットしています.
興味のある人は,hrpsys/launch/hrp4c.launch をご覧下さい.


2012/4/18 Shintaro Noda <s-n...@jsk.imi.i.u-tokyo.ac.jp>:

> --
> このメールは Google グループのグループ「rtm-ros-robotics」の登録者に送られています。
> このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/rtm-ros-robotics/-/iM4tqstVL1sJ
> にアクセスしてください。
> このグループに投稿するには、rtm-ros-...@googlegroups.com にメールを送信してください。
> このグループから退会するには、rtm-ros-roboti...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/rtm-ros-robotics?hl=ja
> からこのグループにアクセスしてください。

Shunichi Nozawa

unread,
Apr 20, 2012, 1:50:36 AM4/20/12
to rtm-ros-...@googlegroups.com
野沢です。

roslaunch hrpsys hrp4c.launch
を試してみました。

Could not Connect : No such object: /localhost/$(arg
SIMULATOR_NAME).rtc:state
実行するとSimulator.rtcでなく$(arg SIMULATOR_NAME)に
接続されるようですね。

launchの変数名が解決されないという同様の問題がありましたが、
http://code.google.com/p/rtm-ros-robotics/issues/detail?id=24

よくよく考えると,hrpsys_ros_bridge/launch/hrpsys_ros_bridge.launchの
<rtconnect from="$(arg ROBOT_NAME)(Robot)0.rtc:left-eye"
to="ImageSensorROSBridge0.rtc:image" />
の部分はちゃんとROBOT_NAMEが解決されてデータポートが接続されますね。

動いているケースもあるようなのですが、rtmlaunch.pyと
hrpsys-launch.shとで違うのでしょうか。


2012年4月20日0:37 Kei Okada <k-o...@jsk.t.u-tokyo.ac.jp>:

Kei Okada

unread,
Apr 20, 2012, 2:14:06 AM4/20/12
to rtm-ros-...@googlegroups.com
> よくよく考えると,hrpsys_ros_bridge/launch/hrpsys_ros_bridge.launchの
> <rtconnect from="$(arg ROBOT_NAME)(Robot)0.rtc:left-eye"
> to="ImageSensorROSBridge0.rtc:image" />
> の部分はちゃんとROBOT_NAMEが解決されてデータポートが接続されますね。

rtconnect/rtactivateの部分はrtmlaunch.py の
<node name="rtmlaunch_hrpsys_ros_bridge" pkg="openrtm"
type="rtmlaunch.py" args="$(find
hrpsys_ros_bridge)/launch/hrpsys_ros_bridge.launch"/>
<rtconnect from="StateHolder0.rtc:qOut"
to="HrpsysSeqStateROSBridge0.rtc:rsangle" />
<rtconnect from="StateHolder0.rtc:basePoseOut"
to="HrpsysSeqStateROSBridge0.rtc:pose" />
にあるように,一度rtmlaounch.py を立ち上げて引数に自身のlaunchをとって,中をパースしてrtshellで接続,という
かなり雑な方法になっています.rtmlaunch.pyの最後の方に

139 nameserver = os.getenv("RTCTREE_NAMESERVERS","localhost")
140 robotname = os.getenv("ROBOT_NAME","")

という,部分があって,これに環境変数を渡すためにhrpsys-launch.sh があります.

ROBOT_NAME=`rosrun openhrp3 extract-robotname -ORBInitRef
NameService=corbaloc:iiop:$RTCTREE_NAMESERVERS:2809/NameService $1`
ROBOT_NAME=$ROBOT_NAME RTCTREE_NAMESERVERS=$RTCTREE_NAMESERVERS rosrun
openrtm rtmlaunch.py $2

ticketは
https://code.ros.org/trac/ros/ticket/3515
にあるのですが,パッチが必要ということで,pythonが得意な人は挑戦してくれると助かります.

2012/4/20 Shunichi Nozawa <nothe...@gmail.com>:

Reply all
Reply to author
Forward
0 new messages