Closed GoogleCodeExporter closed 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
> 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
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
>(以下の安藤さんの返事をみると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
> 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
書いていて消えてしまいましたが、
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
その場合は,どのノードがエラーをだしているか知りたい��
�ころです.ちゃんとエラーチェックがされていないんだと�
��います.
Original comment by kei.ok...@gmail.com
on 15 May 2013 at 10:34
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:
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
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
それで、
このエラーは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
>> 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
>
その時にマルチスレッドセーフでない部分があったりする��
�でしょうか?
なるほど.たしかそれは有りそうです.
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
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
[deleted comment]
OpenHRP3
r2600で直しました.これで大丈夫だとおもいます.確認した
らcloseしてください.> Youhei
https://openrtp.jp/redmine/issues/2159
Original comment by kei.ok...@gmail.com
on 18 May 2013 at 8:01
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
> 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
確認したところr2602でした。
r2601で入った10.04対応のコードが良くないのかもしれません�
��
r2600にもどして確認してみます。
Original comment by nakaokat
on 21 May 2013 at 6:19
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
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
そうですね.
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
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
新しいロボットが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
ありがとう.これで反映させました.
Original comment by kei.ok...@gmail.com
on 22 May 2013 at 1:40
Original comment by nakaokat
on 27 Jun 2013 at 8:09
Original issue reported on code.google.com by
you...@jsk.imi.i.u-tokyo.ac.jp
on 2 May 2013 at 1:07