藤井くん
ご返答をありがとうございます。
unregister()というのがあるのですね。
(ROS-Answersをもっと入念にチェックするようにします。)
unregister()を使ってみたところ(添付したlistener_ps3joy_rev1.pyです)
確かに1度だけ値をsubscribeすることはできたのですが、
なぜかrospy.spin()(あるいはコールバック?)から抜け出せなくなるという問題が
発生してしまいました。
----(以下、端末出力)----------------------------------------------------------------------------------------
before spin
data ...header:
seq: 10928
stamp:
secs: 1374456984
nsecs: 415586826
frame_id: ''
axes:
[-0.0, -0.0, -0.0, 0.0993184745311737, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0,
1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, -0.0,
-0.0, 0.07863013446331024, 0.0]
buttons: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Unregistered!!
----(以上...ここでストップ、Ctrl+Cするまで反応しない。)------------------------------------------------
そこで、
いろいろ試行錯誤して
spin()の代わりにsleep()を入れたら(listener_ps3joy_rev2.pyです)
目的に近い挙動ができたので報告いたします。
shinsuke@shinsuke-ThinkPad-W510:~/ros/fuerte/rtm-ros-robotics/agentsystem_ros_tutorials/agentsystem_examples/scripts$ python listener_ps3joy.py
(中略)
data ...header:
seq: 10967
stamp:
secs: 1374457602
nsecs: 443031200
frame_id: ''
axes:
[-0.0, -0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0,
1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, -0.0, -0.0,
0.07863013446331024, 0.0]
buttons: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
data ...header:
seq: 10968
stamp:
secs: 1374457602
nsecs: 453041368
frame_id: ''
axes:
[-0.0, -0.0, -0.0, -0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0,
1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, -0.0, -0.0,
0.07589953392744064, 0.0]
buttons: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
^Cshinsuke@shinsuke-ThinkPad-W510:~/ros/fuerte/rtm-ros-robotics/agentsystem_ros_tutorials/agentsystem_amples/scripts$
なぜこうなったかがあまり理解できていないのですが、とりあえず
これをkeyboard_teleop()に入れてみようと思います。
###--------------------------------------------------------------------------------------------------------------
余談ですが、これはつまりrospy.spin()が
do-until-(publish?)のような働きをしていて、それが
unregisterによって無限ループになった、というような解釈でよろしいのでしょうか?
どなたかご教授をくださると大変ありがたいです。
2013年7月21日日曜日 16時00分52秒 UTC+9 Shohei Fujii: