The polling on the Prosilica does not work yet. Images of irregular data size are sent, even in „regular”/streaming mode.

I connect the camera and find its IP with nmap (see yesterday’s post). I start up the ROS node with a launch file (trigger_mode set on FixedRate @30 Hz, in Mono8). Certain errors and warnings show up:

[ERROR] [1413992271.480062233]: [AVT_Vimba_ROS]: Could not get feature Gain
 Error: Not found.
[ERROR] [1413992271.503721682]: [AVT_Vimba_ROS]: Could not get feature DecimationHorizontal
 Error: Not found.
[ERROR] [1413992271.504306063]: [AVT_Vimba_ROS]: Could not get feature DecimationVertical
[ WARN] [1413992271.535111761]: Camera calibration file /opt/ros/indigo/share/avt_vimba_camera/calibration.yaml not found.

I don’t think the top three are alarming. Bottom one is valid.

When collecting images in RQT, sometimes the Image View „blinks”. In the console, the following message appears in greenish („terminal color 7”):

ImageView.callback_image() while trying to convert image from 'mono8' to 'rgb8' an exception was thrown (Image is wrongly formed: step < width * byte_depth * num_channels  or  477 != 640 * 1 * 1)

477 is varying. When running ROS’s camera_calibration tool, results in the following output:

$ rosrun camera_calibration cameracalibrator.py -s 8x6 -p chessboard -q 0.027 image:=/camera/image_raw camera:=/camera
('Waiting for service', '/camera/set_camera_info', '...')
OK
*** Added sample 1, p_x = 0.257, p_y = 0.741, p_size = 0.323, skew = 0.153
*** Added sample 2, p_x = 0.382, p_y = 0.923, p_size = 0.323, skew = 0.157
*** Added sample 3, p_x = 0.506, p_y = 0.822, p_size = 0.324, skew = 0.165
*** Added sample 4, p_x = 0.572, p_y = 0.569, p_size = 0.325, skew = 0.161
*** Added sample 5, p_x = 0.831, p_y = 0.148, p_size = 0.325, skew = 0.189
Exception in thread Thread-5:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
    self.run()
  File "/opt/ros/indigo/lib/camera_calibration/cameracalibrator.py", line 93, in run
    self.function(m)
  File "/opt/ros/indigo/lib/camera_calibration/cameracalibrator.py", line 175, in handle_monocular
    drawable = self.c.handle_msg(msg)
  File "/opt/ros/indigo/lib/python2.7/dist-packages/camera_calibration/calibrator.py", line 691, in handle_msg
    gray = self.mkgray(msg)
  File "/opt/ros/indigo/lib/python2.7/dist-packages/camera_calibration/calibrator.py", line 255, in mkgray
    return self.br.imgmsg_to_cv2(msg, "mono8")
  File "/opt/ros/indigo/lib/python2.7/dist-packages/cv_bridge/core.py", line 121, in imgmsg_to_cv2
    dtype=dtype, buffer=img_msg.data)
TypeError: buffer is too small for requested array

Killed

The process was Killed because the window turned gray for some time and I used Ctrl+C to quit.

It seems that, for some reason, image dimensions are not constant.


Setting the camera in polling mode (set trigger_mode at Software) lets service /camera/request_image appear. It is a polled_camera/GetPolledImage service. Sending a request should let an image appear in a topic response_namespace + "/image_raw". I have tried setting each of these values in the service call:

The response always has success = False, stamp = 0 and status_message always switches between Captured frame but failed to process it and AVT_Vimba_ROS error. However, response_namespace + "/image_raw" does appear as a topic. When the second messge appears, the error messages indicate that the camera was offline.