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

cameracalibrator.py doesn't work with --no-service-check?

asked 2011-06-19 02:42:53 -0600

prp gravatar image

I am trying to calibrate a stereo camera (Logitech Webcam Pro 9000) setup under Ubuntu/Diamondback. I am using usb_cam drivers, which are publishing:

/image
/rosout
/rosout_agg
/usb_cam_left/camera_info
/usb_cam_left/image_raw
/usb_cam_left/image_raw/compressed
/usb_cam_left/image_raw/compressed/parameter_descriptions
/usb_cam_left/image_raw/compressed/parameter_updates
/usb_cam_left/image_raw/theora
/usb_cam_left/image_raw/theora/parameter_descriptions
/usb_cam_left/image_raw/theora/parameter_updates
/usb_cam_right/camera_info
/usb_cam_right/image_raw
/usb_cam_right/image_raw/compressed
/usb_cam_right/image_raw/compressed/parameter_descriptions
/usb_cam_right/image_raw/compressed/parameter_updates
/usb_cam_right/image_raw/theora
/usb_cam_right/image_raw/theora/parameter_descriptions
/usb_cam_right/image_raw/theora/parameter_updates

Since the usb_cam drivers do not support the set_camera_info service, I am invoking the cameracalibrator.py with the --no-service-check flag:

rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 --no-service-check right:=/usb_cam_right/image_raw left:=/usb_cam_left/image_raw right_camera:=/usb_cam_right left_camera:=/usb_cam_left

And absolutely nothing happens - no errors, no messages, no gui. The calibrator node is running and is subscribed to the image_raw feeds. Any ideas?

edit retag flag offensive close merge delete

5 Answers

Sort by ยป oldest newest most voted
-1

answered 2011-06-22 11:24:15 -0600

fergs gravatar image

Are your images synchronized? If you are just using two usb_cam nodes, the timestamps won't ever match on the left/right images, and so you'll never get a matched pair passed to the callback.

edit flag offensive delete link more
1

answered 2015-05-10 19:43:44 -0600

Cerin gravatar image

I ran into this same problem. @fergs's answer is the correct diagnosis, but it does not actually help you fix the problem. The gui will only show up when the first pair of synchronized images is received, and if it never receives images at the same time, the gui will never show up.

The solution is to append --approximate=0.005 to your call to tell camera_calibrate to accept unsynchronized images within the given time threshold. I had to use a value as high as 0.1 before it worked with some especially slow USB webcams.

edit flag offensive delete link more
0

answered 2011-06-21 17:42:03 -0600

watts gravatar image

PRP, can you be sure that the image messages are actually being published?

If that doesn't work, I would suggest pressing "ctrl-C" to see where the node is stopped. If you find a bug in the calibration script, file a ticket at code.ros.org/trac/ros-pkg.

edit flag offensive delete link more
0

answered 2011-06-23 00:52:40 -0600

prp gravatar image

In response to watts, yes the images are being published and I can view them with the image viewer. It is very likely fergs is correct, as the separate usb_cam nodes do not synchronize the timestamps. Overall, I solved the problem by going back to using the camera_umd/uvc_camera/stereo_node which does the synchronization as well as support the set_camera_info service. However, in order to do so, I had to modify the uvc_camera/uvc_cam.cpp file so it did not screw up the Logitech Webcam Pro 9000 default settings, which was the original problem that drove me to try the method above. As always, more than one way to skin the cat.

Thank you for your replies!

edit flag offensive delete link more
0

answered 2014-09-05 07:51:07 -0600

Wolf_Wolf gravatar image

sorry to ask one more question, I am also using the cameracalibrator.py to calibrate my stereo camera, but I always got the problem below:

Waiting for service /left/set_camera_info ... OK Waiting for service /right/set_camera_info ... OK Exception in thread Thread-5: Traceback (most recent call last): File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner self.run() File "/opt/ros/groovy/lib/camera_calibration/cameracalibrator.py", line 68, in run self.function(m) File "/opt/ros/groovy/lib/camera_calibration/cameracalibrator.py", line 145, in handle_stereo self.c = StereoCalibrator(self._boards, self._calib_flags, self._pattern, name=self._camera_name) TypeError: __init__() got an unexpected keyword argument 'name'

And all topics are:

/image /rosout /rosout_agg /stereo/left/camera_info /stereo/left/image_raw /stereo/left/image_raw/compressed /stereo/left/image_raw/compressed/parameter_descriptions /stereo/left/image_raw/compressed/parameter_updates /stereo/left/image_raw/compressedDepth /stereo/left/image_raw/compressedDepth/parameter_descriptions /stereo/left/image_raw/compressedDepth/parameter_updates /stereo/left/image_raw/theora /stereo/left/image_raw/theora/parameter_descriptions /stereo/left/image_raw/theora/parameter_updates /stereo/parameter_descriptions /stereo/parameter_updates /stereo/right/camera_info /stereo/right/image_raw /stereo/right/image_raw/compressed /stereo/right/image_raw/compressed/parameter_descriptions /stereo/right/image_raw/compressed/parameter_updates /stereo/right/image_raw/compressedDepth /stereo/right/image_raw/compressedDepth/parameter_descriptions /stereo/right/image_raw/compressedDepth/parameter_updates /stereo/right/image_raw/theora /stereo/right/image_raw/theora/parameter_descriptions /stereo/right/image_raw/theora/parameter_updates

my command line is:

rosrun camera_calibration cameracalibrator.py --size 11x7 --square 0.02 right:=/stereo/right/image_raw left:=/stereo/left/image_raw right_camera:=/stereo/right left_camera:=/stereo/left

please tell me how to solve this problem, thx!

edit flag offensive delete link more

Question Tools

1 follower

Stats

Asked: 2011-06-19 02:42:53 -0600

Seen: 2,091 times

Last updated: May 10 '15