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:
response_namespace
to/camera
timeout.nsecs
to 50000roi.height
to 480,roi.width
to 640
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.