Stereo Camera Calibration

asked 2017-06-28 08:14:04 -0500

Mary gravatar image

updated 2017-07-06 06:31:03 -0500

I am using a realsense r200 camera on Ubuntu 16.04.2 LTS and Ros kinetic. running the camera node with:

roslaunch realsense_camera r200_nodelet_multiple_cameras.launch

the topics that I have in this state are as following:

/camera1/color/camera_info
/camera1/color/image_raw
/camera1/color/image_raw/compressed
/camera1/color/image_raw/compressed/parameter_descriptions
/camera1/color/image_raw/compressed/parameter_updates
/camera1/color/image_raw/compressedDepth
/camera1/color/image_raw/compressedDepth/parameter_descriptions
/camera1/color/image_raw/compressedDepth/parameter_updates
/camera1/color/image_raw/theora
/camera1/color/image_raw/theora/parameter_descriptions
/camera1/color/image_raw/theora/parameter_updates
/camera1/depth/camera_info
/camera1/depth/image_raw
/camera1/depth/image_raw/compressed
/camera1/depth/image_raw/compressed/parameter_descriptions
/camera1/depth/image_raw/compressed/parameter_updates
/camera1/depth/image_raw/compressedDepth
/camera1/depth/image_raw/compressedDepth/parameter_descriptions
/camera1/depth/image_raw/compressedDepth/parameter_updates
/camera1/depth/image_raw/theora
/camera1/depth/image_raw/theora/parameter_descriptions
/camera1/depth/image_raw/theora/parameter_updates
/camera1/depth/points
/camera1/driver/parameter_descriptions
/camera1/driver/parameter_updates
/camera1/ir/camera_info
/camera1/ir/image_raw
/camera1/ir/image_raw/compressed
/camera1/ir/image_raw/compressed/parameter_descriptions
/camera1/ir/image_raw/compressed/parameter_updates
/camera1/ir/image_raw/compressedDepth
/camera1/ir/image_raw/compressedDepth/parameter_descriptions
/camera1/ir/image_raw/compressedDepth/parameter_updates
/camera1/ir/image_raw/theora
/camera1/ir/image_raw/theora/parameter_descriptions
/camera1/ir/image_raw/theora/parameter_updates
/camera1/ir2/camera_info
/camera1/ir2/image_raw
/camera1/ir2/image_raw/compressed
/camera1/ir2/image_raw/compressed/parameter_descriptions
/camera1/ir2/image_raw/compressed/parameter_updates
/camera1/ir2/image_raw/compressedDepth
/camera1/ir2/image_raw/compressedDepth/parameter_descriptions
/camera1/ir2/image_raw/compressedDepth/parameter_updates
/camera1/ir2/image_raw/theora
/camera1/ir2/image_raw/theora/parameter_descriptions
/camera1/ir2/image_raw/theora/parameter_updates
/camera2/color/camera_info
/camera2/color/image_raw
...

the exact same topics for /camrea2. and then:

/camera_nodelet_manager/bond
/clicked_point
/image
/initialpose
/move_base_simple/goal
/rosout
/rosout_agg
/tf
/tf_static

then I try running the calibrator Using:

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

Which returns following error:

('Waiting for service', '/camera2/set_camera_info', '...')
Service not found
('Waiting for service', '/camera1/set_camera_info', '...') 
Service not found

then I tried it again using no service check:

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

at this state the GUI window opens but it is not responding or showing any images from the camera. Am I missing something?

The problem can not be with the camera connection. Because when I try the calibration for one camera it works fine, using:

rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 --no-service-check image:=/camera1/color/image_raw camera:=/camera1

or:

rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 --no-service-check image:=/camera2/color/image_raw camera:=/camera2

Update: I have made some changes in the launch file (changing topic names) and I startd to getting this error even after undoing the changes:

[ERROR] [1499336013.357536131]: /camera2/driver - Error calling rs_enable_stream_preset ( device:0x16e60d0, stream:COLOR, preset:BEST_QUALITY ): 
streams cannot be reconfigured after having called rs_start_device() 

[FATAL] [1499336013.519454825]: Failed to load nodelet '/camera2/driver` of type `realsense_camera/R200Nodelet` to manager `/camera_nodelet_manager'
[camera_nodelet_manager-1] process has died [pid 21334, exit code 1, cmd /opt/ros/kinetic/lib/nodelet/nodelet manager ...
(more)
edit retag flag offensive close merge delete

Comments

What are the services available (the result of rossrv list ) ?

jeanpolochon gravatar image jeanpolochon  ( 2017-07-06 06:13:11 -0500 )edit

I have updated it.

Mary gravatar image Mary  ( 2017-07-06 06:31:41 -0500 )edit

It looks like the service '/camera1/set_camera_info' is not available.

jeanpolochon gravatar image jeanpolochon  ( 2017-07-06 07:40:21 -0500 )edit

You should be able to add "--no-service-check" to camera calibration's parameters to skip the service checks. You'll have to then save the calibration data and manually add it to your launch file.

jeanpolochon gravatar image jeanpolochon  ( 2017-07-06 07:43:41 -0500 )edit

have you tried (without modifying your launch file):

rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 --no-service-check right:=/camera1/color/image_raw left:=/camera2/color/image_raw
jeanpolochon gravatar image jeanpolochon  ( 2017-07-06 07:44:41 -0500 )edit