fkanehiro / hrpsys-base

Basic RT components and utilities to control robots using OpenRTM
Other
40 stars 87 forks source link

ImpedanceControllerでstart-impedanceしていないlimbをstop-impedanceするとハングアップすることがある #655

Open orikuma opened 9 years ago

orikuma commented 9 years ago

ImpedanceControllerでstartImpedanceControllerしていないlimbをstopImpedanceControllerするとImpedanceControllerからstopImpedanceControllerのresposnseが返らずそのままハングすることがあります. ImpedanceControllerが止まるだけで他のrtcは動いている(例えば関節角度を送ることは出来る)ようです. 再現性は100%ではありませんが高め(50%以上は起こる気がしている)です.

snozawa commented 9 years ago

50%はかなりデバッグしやすい頻度ですね。 https://github.com/fkanehiro/hrpsys-base/blob/master/sample/SampleRobot/samplerobot_impedance_controller.py 的なかんじのバグを再現するコードを教えてください。

k-okada commented 9 years ago

このときのstopImpedanceはpythonからでしょうか?eusからでしょうか?eusからだと, https://github.com/start-jsk/rtmros_common/pull/732 で治ったかもしれないです.

元々はImepdanceControllerROSBridgeCompで,onInitializeでadvertiseServiceしていますが, この時はRTCとしてはactivateしていないので,onExecuteがはしらず,spinOneceしないので, serviceが呼ばれても処理されないとなっています.

https://github.com/start-jsk/rtmros_common/pull/732 のパッチでadvertiseServiceをonAcivateに いれました.

もし,これが正しいとすると,onActivateするまえにstop-impedanceしていることになります. なので,ちゃんとRosBridgeが上がり切ることを確認して,チョットsleepしてから stop-impeadnceすればいいはずですので,6月上旬まではどちらの方針でもいいとおもいます. 無理にidl2srvをマージしなくてもよいかとおもいます.

k-okada commented 9 years ago

start-jsk/rtmros_common#732 で治っていないという噂がある. ログ等あったら貼り付けて下さい. @garaemon @orikuma

garaemon commented 9 years ago

JAXONでは地面に下ろした時に"Robot stands on the ground"と喋らないときは止まっている(stを常に叩いているので)