ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Visual servoing with ROS

asked 2012-08-27 09:21:40 -0600

perr0 gravatar image

updated 2014-01-28 17:13:28 -0600

ngrennan gravatar image

I'm trying to develop a visual servoing application using ROS, AR.Drone and ardrone_autonomy package. For that I'm planning on tracking a four red dots target to use as reference for the error function but I'm having some trouble tracking those targets. Here's what I tried so far:

1 - Use cv::HoughCircles and track dots' centroid. 2 - Using some blob detection.

I can segment the dots using both methods but I can't track the dots correctly. Let me explain: As the AR.Drone moves, the image changes (obviously) and the reference dots change position on the image. Then I loose track of which dot is which. This way the error functions eventually won't work throughout servoing.

I want to focus on control problems and not on programming and computer vision right now. So I'd like to know if you have any suggestions for a different approach or even some advice I may be missing on the approach I'm using. Is there any out of the shelf solution for this so I can focus on control at once?

Thank you.

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2012-08-27 11:15:32 -0600

The visp_tracker package wraps a library meant for visual servoing tasks and tracks objects based on contour lines extracted from images. As you're having problems with data association during tracking it might also make sense to look at AR marker or QR code tracking solutions. With those every marker can be unique. What you could look at are ar_track_alvar, ar_pose and april_tags_node.

edit flag offensive delete link more

answered 2012-08-27 10:49:34 -0600

For better or for worse, robotics is a field that requires combining knowledge from many other fields. The problem you're referring to is a well-studied topic called tracking. OpenCV has some tracking functionality built in which may work for what you're doing. I would recommend looking at the various calcOpticalFlow functions provided by OpenCV.

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2012-08-27 09:21:40 -0600

Seen: 1,790 times

Last updated: Aug 28 '12