hsnuhayato / rtm-ros-robotics

Automatically exported from code.google.com/p/rtm-ros-robotics
0 stars 0 forks source link

atlas.launch を立ち上げたときに上手くいかないときがある #79

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
atlas.launchを立ち上げるときに、何回かに1回の割合で以下の�
��ラーが
たくさん出てきてhrpsysが使えないときがあります。

必ず発生するわけではないので、何かのタイミングなのか��
�と思っていますが
どこらあたりに問題があり賞でしょうか?

CORBA::SystemException raised by ModelLoader: IDL:omg.org/CORBA/INV_OBJREF:1.0
omniORB: ERROR -- the application attempted to invoke an operation

Original issue reported on code.google.com by you...@jsk.imi.i.u-tokyo.ac.jp on 2 May 2013 at 1:07

GoogleCodeExporter commented 9 years ago
これは、普通のhrpsys_ros_bridge_tutorialsのサンプル実行や実機��
�の実行時にも、
たまにみうけられる症状で、昔からあったように記憶して��
�ます。

rtm-naming-restart, model-loaderの起動のタイミングが、
launchでいっきに立ち上がるときに問題になるのでは、と思��
�ていますが、
ちゃんと調べられていません。

rosrun openrtm rtm-naming-restart stop
roslaunch hrpsys_gazebo atlas.launch
のようにするとうまくいったりするでしょうか。

Original comment by noz...@jsk.imi.i.u-tokyo.ac.jp on 2 May 2013 at 7:21

GoogleCodeExporter commented 9 years ago
> rosrun openrtm rtm-naming-restart stop
> roslaunch hrpsys_gazebo atlas.launch
> のようにするとうまくいったりするでしょうか。

おまじないな気がしますね。これをやっても出る時があり��
�す。
delayed_execみたいなプログラム作ったほうがいいのだろうか��
�

Original comment by you...@jsk.imi.i.u-tokyo.ac.jp on 13 May 2013 at 2:31

GoogleCodeExporter commented 9 years ago
launch 
fileの中でrtm-naming-restartするのは難しいと思いますので,こ�
��は,外すのでいいと思います.

 rosrun openrtm rtm-naming-restart stop
が必要なのは,nameserverがネットワークの変更に弱いことな�
��で,
jenkinsのようにネットワークの変更がない場合はやる必要は�
��いはずで,
必要になってくるのはノートパソコンで,あちらこちらに��
�動しながらマシンをリブート
せずに使う,という状況です.

なので,launchファイルでrtm-naming ... 
は呼ばないようにして,
上手く行かないときに rosrun openrtm rtm-naming-restart restart
するというのでいい気がします
(以下の安藤さんの返事をみるとrtm-namingでも良さそうです�
��認できたら教えてください)

この部分で,NameServerが適切にうごいている,と,仮定する�
��,model loaderが
たちがらない時は,やり直す,ぐらいのコードを,他のプ��
�グラムにいれておけば,
全部立ち上がってくれると思います.

http://www.openrtm.org/openrtm/en/content/openrtm-users-01747-%E3%82%BE%E3%83%B3
%E3%83%93%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%EF%BC%9F

Original comment by kei.ok...@gmail.com on 13 May 2013 at 2:46

GoogleCodeExporter commented 9 years ago
>(以下の安藤さんの返事をみるとrtm-namingでも良さそうです
確認できたら教えてください)
laptopPCを起動する->roslaunch hrpsys_tutorials hrp4c.launch
でうごかなくて、
laptopPCを起動する->yes | rosrun openrtm rtm-naming -> roslaunch 
hrpsys_tutorials hrp4c.launch
で動くことを確認しました。

launchからrtm-naming-restartをけそうとしましたが、
消してみても動かないきがしてきたので変更していません��
�

launchからrtm-naming-restartをけして
laptopPCを起動する->roslaunch hrpsys_tutorials hrp4c.launch
をすると、corbaの通信と思しきところでとまります(だいた
いhrpsys.pyのactivate Componentsあたり)

多分ですが、omniorbの起動が
/etc/rc2.d/S20omniorb4-nameserver
とはやめなため、無線でネットワークがつながろうとする��
�よりもはやくなり、
起動直後の時点ですでに「ネットワークがかわる」
という状況におちいります。

もちろん
1. launchからrtm-naming-restartをけす
2. 起動直後にrtm-namingしてlaunchを実行する
とすると動きます。
ルールとして
起動直後かネットワーク変更後にかならずrtm-namingする
(もしくはnetwork-managerのポストスクリプト実行で必ず実行す�
��ようにする)
みたいなことをやればうまく運用できそうですが、
もっと普通にうごかないものか、とおもい、現状launchはか��
�ていません。

Original comment by noz...@jsk.imi.i.u-tokyo.ac.jp on 15 May 2013 at 9:53

GoogleCodeExporter commented 9 years ago
> 1. launchからrtm-naming-restartをけす
> 2. 起動直後にrtm-namingしてlaunchを実行する

でいいんだと思います.roscoreしてからプログラムを動かす�
��みたいなものなので.

すくなくともlaunchファイルのnodeに書くのは,いまの仕様上�
��他のアプルケーションが
上がっている途中にnameserverをリスタートしてしまうので,�
��るなら,
rtmlaunchみたいなプログラムをつくって,そこで,rtm-namingを�
��たあとに,
roslaunchを呼び出す,みたいなことをするんだと思います.ro
scoreもそうなっていますね.

Original comment by kei.ok...@gmail.com on 15 May 2013 at 10:00

GoogleCodeExporter commented 9 years ago
書いていて消えてしまいましたが、
atlas_hrpsys.launchでは,rtm-naming-restartをしないようにして、別ter
minalでrtm-naming-restartしていますが、
その状況でも、同じ問題が発生することがあります。

Original comment by you...@jsk.imi.i.u-tokyo.ac.jp on 15 May 2013 at 10:05

GoogleCodeExporter commented 9 years ago
その場合は,どのノードがエラーをだしているか知りたい��
�ころです.ちゃんとエラーチェックがされていないんだと�
��います.

Original comment by kei.ok...@gmail.com on 15 May 2013 at 10:34

GoogleCodeExporter commented 9 years ago

errorのログを添付します。

中身を見るとはじめに、以下のエラーが出るようです。
モデルローダーがうまく上がっていない可能性がある??
CORBA::SystemException raised by ModelLoader: IDL:omg.org/CORBA/COMM_FAILURE:1.0

そのあと、こういうふうに出るので、SeqStateROSBridge、Trajector
yBridgeのmodel 
loaderのエラーチェックを確認したいところです。
[HrpsysSeqStateROSBridge] failed to load model[[HrpsysJointTrajectoryBridge] 
failed to\
 load model[]]

以下、抜粋。
process[HrpsysSeqStateROSBridge-4]: started with pid [7348]                     

hrpExecutionContext is registered                                               

[hrpsys.py]  waiting ModelLoader                                                

[hrpsys.py]  start hrpsys                                                       

[hrpsys.py]  finding RTCManager and RobotHardware                               

[ INFO] [1368614424.427853146]: [HrpsysSeqStateROSBridge] @Initilize name : 
HrpsysSeqS\
tateROSBridge0                                                                  

Exception AttributeError: AttributeError("'_DummyThread' object has no 
attribute '_Thr\
ead__block'",) in <module 'threading' from '/usr/lib/python2.7/threading.pyc'> 
ignored
process[HrpsysJointTrajectoryBridge-5]: started with pid [7397]                 

hrpExecutionContext is registered                                               

Exception AttributeError: AttributeError("'_DummyThread' object has no 
attribute '_Thr\
ead__block'",) in <module 'threading' from '/usr/lib/python2.7/threading.pyc'> 
ignored
process[ImageSensorROSBridge-6]: started with pid [7426]                        

hrpExecutionContext is registered                                               

SID 'mat0' that needs  './' prefixed to it to resolve correctly                 

CORBA::SystemException raised by ModelLoader: 
IDL:omg.org/CORBA/COMM_FAILURE:1.0       
failed to load 
model[file:///home/jskuser/ros/fuerte/rtm-ros-robotics/rtmros_common/hr\
psys_gazebo/models/atlas.dae]                                                   

CORBA::SystemException raised by ModelLoader: CORBA::SystemException raised by 
ModelLo\
ader: IDL:omg.org/CORBA/COMM_FAILURE:1.0IDL:omg.org/CORBA/COMM_FAILURE:1.0      

[HrpsysSeqStateROSBridge] failed to load model[[HrpsysJointTrajectoryBridge] 
failed to\
 load model[]]

Original comment by you...@jsk.imi.i.u-tokyo.ac.jp on 15 May 2013 at 12:42

Attachments:

GoogleCodeExporter commented 9 years ago
roslaunch-prefix で xterm -e をつけてmodelloaderを立ち上げると,
CORBA::SystemException raised by ModelLoader: IDL:omg.org/CORBA/COMM_FAILURE:1.0
はmodel loaderから表示されているエラーなのかな.

だとすると,ModelLoaderのデバッグが必要という事になるんだ
ろうけど.
何かの条件が整う前にmodelをloadしようとするとダメになる��
�いう事なのかな.

Original comment by kei.ok...@gmail.com on 15 May 2013 at 1:12

GoogleCodeExporter commented 9 years ago

model-loaderにoutput=screenをつけました。

エラーになる時は、モデルローダーが
Collada Warning: joint axis for target 
node24/node22/node23/node40/node25/node32/node3\
4/node29/node28/node_r_arm_mwx_axis0
Collada Warning: could not find binding for axis: kmodel0/r_arm_mwx/axis0, axis0
Collada Warning: could not find binding for axis: kmodel0/r_arm_mwx/axis0, axis0
のようなメッセージを出します。結果、model-loaderが死ぬよ��
�です。
hrpsys.launchにcolladaの時は、model-loaderが死ぬことがあるのでres
pawnするようにと書いてあるのでcolladaを使うときは既知の問
題なのでしょうか。
ちなみに、respawn=trueの場合も、model-loaderが死んだ段階で同��
�症状になって回復できません。

Original comment by you...@jsk.imi.i.u-tokyo.ac.jp on 15 May 2013 at 1:59

GoogleCodeExporter commented 9 years ago
それで、
このエラーはmodel-loaderにモデルをロードさせている時に、mo
del-loaderが死んだ場合にでるエラーのようです。出している�
��は、model-loaderを呼んでいる方です。
CORBA::SystemException raised by ModelLoader: IDL:omg.org/CORBA/COMM_FAILURE:1.0

同時に複数のmodel-loadの呼び出しがかかった時は、model-loader�
��側で同時にモデルロードが呼ばれているように見えます。
その時にマルチスレッドセーフでない部分があったりする��
�でしょうか?

Original comment by you...@jsk.imi.i.u-tokyo.ac.jp on 15 May 2013 at 2:03

GoogleCodeExporter commented 9 years ago
>> 1. launchからrtm-naming-restartをけす
>> 2. 起動直後にrtm-namingしてlaunchを実行する
>でいいんだと思います.roscoreしてからプログラムを動かす
,みたいなものなので.

launchでrtm-maing-restartしないようにしました。

今後は、起動直後・ネットワークが切り替わった直後に一��
�だけ、roscoreと同じように
rosrun openrtm rtm-naming
を実行する必要があります。

wikiも修正しました。
code.google.com/p/rtm-ros-robotics/wiki/ROS_English?ts=1368701554&updated=ROS_En
glish#Before_executing_Example

また、以下のように
/etc/network/if-up.d/invoke-rtm-naming
rtm-namingを実行するスクリプトをおいておけば、
ネットワークが切り替わるたびにomniNamesが起動します。
(非推奨設定です)

Original comment by noz...@jsk.imi.i.u-tokyo.ac.jp on 16 May 2013 at 10:56

GoogleCodeExporter commented 9 years ago
> 
その時にマルチスレッドセーフでない部分があったりする��
�でしょうか?

なるほど.たしかそれは有りそうです.
modelloader単体で立ち上げて,
モデルをロードするpythonを複数同時にあげるとどうなるか��
�という感じでしょうか?
以下のようにして使えると思います.

import hrp

ml = hrp.findModelLoader()
binfo = ml.getBodyInfo("/home/kanehiro/ladder.dae")

Original comment by kei.ok...@gmail.com on 16 May 2013 at 12:11

GoogleCodeExporter commented 9 years ago

2回連続呼ぶとmodel-loaderがセグフォ。
同時にファイルをロードしようとしている。
./load_colalda.py &
./load_collada.py &

1度呼んでモデルがロードが終了すると、2回目以降はキ��
�ッシュが使われる。
これは問題ない。
./load_collada
./load_collada.py &
./load_collada.py &
./load_collada.py &

以下スクリプト。
load_collada.py
    #!/usr/bin/env python                                                                                              

    import roslib;
    roslib.load_manifest("hrpsys")

    import os
    import rtm
    from rtm import *
    from OpenHRP import *

    obj = rtm.rootnc.resolve([CosNaming.NameComponent('ModelLoader', '')])
    mdlldr = obj._narrow(ModelLoader)
    binfo = mdlldr.getBodyInfo('file:///home/lyouhei/ros/fuerte/rtm-ros-robotics/rtmros_common/hrpsys_gazebo/models/at\
las.dae')

model-loaderのgdb結果、libcollada-domの中で落ちているよう。
    (gdb) run                                                                                                          
    Starting program: /home/lyouhei/ros/fuerte/rtm-ros-robotics/rtmros_common/openhrp3/bin/openhrp-model-loader        
    [Thread debugging using libthread_db enabled]                                                                      
    Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".                                         
    [New Thread 0x7ffff063f700 (LWP 31371)]                                                                            
    [New Thread 0x7fffefdee700 (LWP 31372)]                                                                            
    ready                                                                                                              
    [New Thread 0x7fffef367700 (LWP 31469)]                                                                            
    [New Thread 0x7fffeeb16700 (LWP 31470)]                                                                            
    loading file:///home/lyouhei/ros/fuerte/rtm-ros-robotics/rtmros_common/hrpsys_gazebo/models/atlas.daeloading file:\
///home/lyouhei/ros/fuerte/rtm-ros-robotics/rtmros_common/hrpsys_gazebo/models/a
tlas.dae                               

    Program received signal SIGSEGV, Segmentation fault.                                                               
    [Switching to Thread 0x7fffef367700 (LWP 31469)]                                                                   
    0x00007ffff6a608dc in daeMetaAttribute::setDefaultString(char const*) ()                                           
       from /usr/lib/libcollada-dom2.4-dp.so.0
    (gdb) bt
    #0  0x00007ffff6a608dc in daeMetaAttribute::setDefaultString(char const*) ()
       from /usr/lib/libcollada-dom2.4-dp.so.0
    #1  0x00007ffff6ae12c1 in ColladaDOM150::domAsset::domCoverage::domGeographic_location::domAltitude::registerEleme\
nt(DAE&) ()
       from /usr/lib/libcollada-dom2.4-dp.so.0
    #2  0x00007ffff6ae1511 in ColladaDOM150::domAsset::domCoverage::domGeographic_location::registerElement(DAE&) () f\
rom /usr/lib/libcollada-dom2.4-dp.so.0
    #3  0x00007ffff6ae16a8 in ColladaDOM150::domAsset::domCoverage::registerElement(DAE&) () from /usr/lib/libcollada-\
dom2.4-dp.so.0
    #4  0x00007ffff6ae2353 in ColladaDOM150::domAsset::registerElement(DAE&) ()
       from /usr/lib/libcollada-dom2.4-dp.so.0
    #5  0x00007ffff6aa56b3 in ColladaDOM150::domCOLLADA::registerElement(DAE&) ()
       from /usr/lib/libcollada-dom2.4-dp.so.0
    #6  0x00007ffff6aa4789 in ColladaDOM150::registerDomElements(DAE&) ()
       from /usr/lib/libcollada-dom2.4-dp.so.0
    #7  0x00007ffff6a709db in DAE::init(daeDatabase*, daeIOPlugin*, char const*) ()
       from /usr/lib/libcollada-dom2.4-dp.so.0
    #8  0x000000000046a839 in ColladaReader::InitFromURL(std::string const&) ()
    #9  0x000000000045a311 in BodyInfoCollada_impl::loadModelFile(std::string const&) ()
    #10 0x0000000000448115 in ModelLoader_impl::loadBodyInfoFromModelFile(std::string, OpenHRP::ModelLoader::ModelLoad\
Option) [clone .constprop.1149] ()
    #11 0x0000000000448e2e in ModelLoader_impl::loadBodyInfoEx(char const*, OpenHRP::ModelLoader::ModelLoadOption cons\
t&) ()
    #12 0x0000000000447c87 in ModelLoader_impl::getBodyInfoEx(char const*, OpenHRP::ModelLoader::ModelLoadOption const\
&) ()
    #13 0x0000000000448bdf in ModelLoader_impl::getBodyInfo(char const*) ()
    #14 0x00007ffff79315d4 in _0RL_lcfn_474383644c7db81e_71000000(omniCallDescriptor*, omniServant*) ()
       from /home/lyouhei/ros/fuerte/rtm-ros-robotics/rtmros_common/openhrp3/bin/../lib/libhrpModel-3.1.so.0
    #15 0x00007ffff73cf381 in omniCallHandle::upcall(omniServant*, omniCallDescriptor&) () from /usr/lib/libomniORB4.s\
o.1
    #16 0x00007ffff7934490 in OpenHRP::_impl_ModelLoader::_dispatch(omniCallHandle&) ()
       from /home/lyouhei/ros/fuerte/rtm-ros-robotics/rtmros_common/openhrp3/bin/../lib/libhrpModel-3.1.so.0
    #17 0x00007ffff73c12dd in omni::omniOrbPOA::dispatch(omniCallHandle&, omniLocalIdentity*) () from /usr/lib/libomni\
ORB4.so.1
    #18 0x00007ffff73a6248 in omniLocalIdentity::dispatch(omniCallHandle&) ()
       from /usr/lib/libomniORB4.so.1
    #19 0x00007ffff73e9b92 in omni::GIOP_S::handleRequest() ()
       from /usr/lib/libomniORB4.so.1
    #20 0x00007ffff73ea9d0 in omni::GIOP_S::dispatcher() ()
       from /usr/lib/libomniORB4.so.1
    #21 0x00007ffff73e73b3 in omni::giopWorker::real_execute() ()
       from /usr/lib/libomniORB4.so.1
    #22 0x00007ffff73e7a2f in omni::giopWorker::execute() ()
       from /usr/lib/libomniORB4.so.1
    #23 0x00007ffff7399425 in omniAsyncWorkerInfo::run() ()
       from /usr/lib/libomniORB4.so.1
    #24 0x00007ffff7399b4f in omniAsyncWorker::run(void*) ()
       from /usr/lib/libomniORB4.so.1
    #25 0x00007ffff70d44d3 in omni_thread_wrapper ()
       from /usr/lib/libomnithread.so.3
    #26 0x00007ffff768ae9a in start_thread ()
       from /lib/x86_64-linux-gnu/libpthread.so.0
    #27 0x00007ffff55d5ccd in clone () from /lib/x86_64-linux-gnu/libc.so.6
    #28 0x0000000000000000 in ?? ()
    (gdb) quit

Original comment by you...@jsk.imi.i.u-tokyo.ac.jp on 16 May 2013 at 3:35

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
OpenHRP3 
r2600で直しました.これで大丈夫だとおもいます.確認した
らcloseしてください.> Youhei

https://openrtp.jp/redmine/issues/2159

Original comment by kei.ok...@gmail.com on 18 May 2013 at 8:01

GoogleCodeExporter commented 9 years ago
rtmros_commonでsvn upしてrosmake 
openhrp3すると以下のようにエラーになってしまいます。
boostのリンクの設定がおかしいということです。

[ 47%] Building CXX object 
server/ModelLoader/CMakeFiles/export-collada.dir/VrmlUtil.o
Linking CXX executable ../../bin/export-collada
/usr/bin/ld: CMakeFiles/export-collada.dir/exportCollada.o: undefined reference 
to symbol 'boost::system::system_category()'
/usr/bin/ld: note: 'boost::system::system_category()' is defined in DSO 
/usr/lib/libboost_system.so.1.46.1 so try adding it to the linker command line
/usr/lib/libboost_system.so.1.46.1: could not read symbols: Invalid operation
collect2: ld はステータス 1 で終了しました
make[3]: *** [bin/export-collada] エラー 1

Original comment by nakaokat on 21 May 2013 at 5:46

GoogleCodeExporter commented 9 years ago
> OpenHRP3 
r2600で直しました.これで大丈夫だとおもいます.確認した
らcloseしてください.> Youhei

確認しました。同時ロードでもseg 
faultしなくなっています。ありがとうございます。

boostの方は、昨日の夜のr2600のものは、ubuntu12.04/fuerte 
でmakeが通っています。

Original comment by you...@jsk.imi.i.u-tokyo.ac.jp on 21 May 2013 at 5:54

GoogleCodeExporter commented 9 years ago
確認したところr2602でした。
r2601で入った10.04対応のコードが良くないのかもしれません�
��
r2600にもどして確認してみます。

Original comment by nakaokat on 21 May 2013 at 6:19

GoogleCodeExporter commented 9 years ago
2600だと通りますね。
2600と2602のdiffが以下なので、boost_thread-mtが良くないようで��
�。

Index: server/ModelLoader/CMakeLists.txt
===================================================================
--- server/ModelLoader/CMakeLists.txt   (リビジョン 2600)
+++ server/ModelLoader/CMakeLists.txt   (リビジョン 2602)
@@ -36,6 +36,7 @@
       ${Boost_SYSTEM_LIBRARY} )
   else(WIN32)
     set(extralibraries  ${COLLADA_DOM_LIBRARIES} boost_system-mt)
+    set(extralibraries  ${COLLADA_DOM_LIBRARIES} boost_thread-mt)
   endif(WIN32)
 else( COLLADA_DOM_FOUND )
   set(extralibraries)
@@ -115,4 +116,4 @@
 install(TARGETS ${program} export-vrml DESTINATION bin CONFIGURATIONS Release Debug)
 if( COLLADA_DOM_FOUND )
   install(TARGETS ${exporter} DESTINATION bin CONFIGURATIONS Release Debug)
-endif( COLLADA_DOM_FOUND )
\ No newline at end of file
+endif( COLLADA_DOM_FOUND )

Original comment by nakaokat on 21 May 2013 at 6:27

GoogleCodeExporter commented 9 years ago
r2602でextralibrariesの箇所を
set(extralibraries  ${COLLADA_DOM_LIBRARIES} boost_system-mt boost_thread-mt)
として、
cd build/OpenHRP-3
make clean
cd ../..
touch patched
make
で通りました。
r2600で10.04対応をしたとのコメントがあり、手元に10.04の環��
�がないのでわかりませんが、
thread-mtを追加したかっただけならば、この変更によりsystem-m
tが上書きで消されていたのが原因だったようです。

Original comment by nakaokat on 21 May 2013 at 6:32

GoogleCodeExporter commented 9 years ago
そうですね.
https://openrtp.jp/redmine/issues/2161
にチケットを出しておきました.find_packageでも,中岡くん��
�変更でもいいと思います.
機械があったら中岡くんの変更で10.04環境で動くか教えても
らえると嬉しいです.

ことは別にrtm-ros-roboticsのr3981でMakefile.openhpr3を変更しr2600に�
��時的に固定しました.

Original comment by kei.ok...@gmail.com on 21 May 2013 at 6:44

GoogleCodeExporter commented 9 years ago
hrpsys/launch/_gen_*.launch系でも同じくrtm-naming-restartがはいって��
�たので、
つかわないようにしました(r3984, r3985)。

これで、hrpsys_ros_bridge_tutorialsなどでmakeがとおるようになる�
��思います。

Original comment by noz...@jsk.imi.i.u-tokyo.ac.jp on 21 May 2013 at 7:33

GoogleCodeExporter commented 9 years ago
新しいロボットが10.04環境で、svn 
upしたらr2600で動かなくなってしまったので、
上にあるとおり
set(extralibraries  ${COLLADA_DOM_LIBRARIES} boost_system-mt boost_thread-mt)
としてコンパイルしたら通りました。

Original comment by nakaokat on 22 May 2013 at 9:45

GoogleCodeExporter commented 9 years ago
ありがとう.これで反映させました.

Original comment by kei.ok...@gmail.com on 22 May 2013 at 1:40

GoogleCodeExporter commented 9 years ago

Original comment by nakaokat on 27 Jun 2013 at 8:09