Open kochigami opened 5 years ago
https://github.com/kochigami/naoqi_bridge/pull/11 の元
roslaunch naoqi_pose pose_manager.launch
rosnode kill /pose_controller
killing /pose_controller
killed
したら、
================================================================================REQUIRED process [pose_controller-1] has died!
process has finished cleanly
log file: /home/pepper/.ros/log/791306d6-6faa-11e9-a27f-e86a6433c63f/pose_controller-1*.log
Initiating shutdown!
================================================================================
こうなった。naoqi_driverにバグがあるのではないか
ちょっと調べた。理由は分かったけれど、解決策は全然分からない。
naoqi_driver/src/external_registration.cpp
std::cout << BOLDYELLOW << "naoqi_driver initialized" << RESETCOLOR << std::endl;
app.run();
std::cout << BOLDYELLOW << "1" << RESETCOLOR << std::endl;
bs->stopService();
std::cout << BOLDYELLOW << "2" << RESETCOLOR << std::endl;
app.session()->close();
std::cout << BOLDYELLOW << "3" << RESETCOLOR << std::endl;
で、rosnode kill
するときは、app.run()
の中にいるから、シグナルを受け取るだけで、実際にノードを落とせていない。
app.session()->close();
まで行って、
ようやくnaoqi_driver.cpp
のDriverクラスのデコンストラクタが呼ばれて、ros::shutdown()
される。
これは正しい挙動なのか?
して、
すると
が出てくるが
naoqi_driver.launch
は終了しない。rosnode list
を見るとノードは死んでいるけどプロセスは残っている。それで、別ターミナルで
すると、
が出て落ちる。