トピックの内部を参照する方法について

262 views
Skip to first unread message

Masataka Hisano

unread,
Nov 17, 2016, 8:26:41 AM11/17/16
to ROS JAPAN Users Group
現在カメラで検出したものとカメラの距離を購読する方法が分からずに困っています。
/hough_circles/circlesというtopicの内部に入っていることは分かっているため
$ rostopic echo /hough_circles/circles
を実行し、
header: 
  seq: 7879
  stamp: 
    secs: 2015
    nsecs: 284000000
  frame_id: head_rgbd_sensor_rgb_frame
circles: 
  - 
    center: 
      x: 321.0
      y: 187.0
    radius: 19.0
のようにcirclesの中のcenterの中にx,v,radiusが入っていることが分かっています。
そこでroswikiのチュートリアル(http://wiki.ros.org/ja/ROS/Tutorials/WritingPublisherSubscriber%28python%29)を参考にして購読のプログラムを変更したところ、
[INFO] [WallTime: 1479388513.956953] [1850.719000] /listener_6148_1479387639216I heard [center: 
  x: 321.0
  y: 187.0
radius: 19.0]
のようにx,y,radius全ての値を参照することができました。

この中にあるxだけを購読するようなコードの書き方、
またはtopic内の参照方法などはありますか?

ご回答よろしくお願いします。

Moirai

unread,
Nov 17, 2016, 7:05:36 PM11/17/16
to ROS JAPAN Users Group
rostopicでやるなら,
rostopic echo /hough_circles/circles/circles[0]/center/x

listener.py を参考にプログラムでやるなら,
```
import rospy
from opencv_apps.msg import CircleArrayStamped

def callback(msg):
    rospy.loginfo(rospy.get_caller_id() + 'I heard %s', msg.circles[0].center.x\
)

def listener():
    rospy.init_node('listener', anonymous=True)
    rospy.Subscriber('hough_circles/circles', CircleArrayStamped, callback)

    # spin() simply keeps python from exiting until this node is stopped
    rospy.spin()

if __name__ == '__main__':
    listener()
```
といった感じでしょうか.

Masataka Hisano

unread,
Nov 21, 2016, 5:43:51 AM11/21/16
to ROS JAPAN Users Group

返信が遅れてしまい申し訳ありません。
おかげさまで無事トピックの内部を参照することができるようになりました。
ご回答ありがとうございます。

Reply all
Reply to author
Forward
0 new messages