ros-perception / image_pipeline Goto Github PK
View Code? Open in Web Editor NEWAn image processing pipeline for ROS.
License: Other
An image processing pipeline for ROS.
License: Other
in the cameracalibrator.py node
Once a sufficient number of samples are captured and the calibration matrix is calculated, cameracalibrator.py crashes with the following trace:
OpenCV Error: Assertion failed (src.channels() == dst.channels()) in cvCopy, file /tmp/buildd/ros-groovy-opencv2-2.4.4-1precise-20130301-2019/modules/core/src/copy.cpp, line 575
Exception in thread Thread-3:
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 136, in handle_monocular
self.redraw_monocular(drawable)
File "/opt/ros/groovy/lib/camera_calibration/cameracalibrator.py", line 248, in redraw_monocular
cv.Copy(drawable.scrib, cv.GetSubRect(display, (0,0,width,height)))
error: src.channels() == dst.channels()
This appears to happen because the calibration switches from color to grayscale once it's calibrated. This appears to be related to the following changes:
When using acircles pattern calibration gives wrong results. I suppose that it's caused by mk_object_points which should work in different way when using acircles.
Hi community. After all the problems with the chessboard i tried to use an asymmetric circle pattern instead for the calibration of a single usb webcam. In most cases the pattern has been recognized and the calibration starts. But sooner or later I always get the same error:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
python: /build/buildd/cairo-1.10.2/src/cairo-surface.c:1287: cairo_surface_set_device_offset: Assertion `status == CAIRO_STATUS_SUCCESS' failed.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Does anyone know where this error comes from?
They should be looked into and cleaned up maybe.
When I try to use the calibration routine, it seems to function normally, only I get a spinning beachball in the place of my cursor. The upshot is that it's impossible to interact with the GUI.
On the backend, everything seems to be normal. The console updates with new calibration data, and the X, Y, Size, and Skew progress bars behave normally.
http://stackoverflow.com/questions/23642674/how-to-spawn-thread-and-initialize-qt-application-in-python-with-mac-osx is the only reference I've found to a python/OSX beachball problem, but I'm unsure if it applies here.
Hi.
I'm running ros fuerte. The revision 2863 of GScam.
I'm trying to get a rectified image to use then for the node viso2. But I have a problem, after I made the calibration. I have a warning:
[image_transport] Topics '/Dava/image_mono' and '/Dava/gscam/camera_info' do not appear to be synchronized. In the last 10s: Image messages received: 80 CameraInfo messages received: 80 Synchronized pairs: 0
The problem is I can't see the rectified image when I Subscribed the topic in image_view.
I put all the details in this link:
http://answers.ros.org/question/84611/synchronized-problem-related-to-calibration/
I will appreciate any respond . Thank you
It looks like stereo_image_proc links against the image_proc library but does not run_depend on it (https://github.com/ros-perception/image_pipeline/blob/hydro-devel/stereo_image_proc/package.xml). This would be the reason why in this question (http://answers.ros.org/question/70801/stereo_image_proc-error-in-hydro-error-while-loading-shared-libraries-libimage_procso/) the library is not available when installed from Debian packages.
First level of testing: push an image through image_proc and verify that the outputs match the expected outputs.
Raw image might be:
Distorted/distortion-free.
Bayer/mono/RGB/BGR.
At least, we should see the overlap with rqt
image_rotate does not compile on Fedora because pthread is not linked in. I think that the root of this problem is in OpenCV (which is where the pthread routines are used) but it doesn't seem to have affected any packages but this one.
Adding "pthread" to the link_libraries will allow image_rotate to compile on Fedora, but I don't know if this is the BEST solution.
terminate called after throwing an instance of 'cv_bridge::Exception'
what(): Unsupported conversion from [bayer_grbg8] to [mono8]
[camera_nodelet_manager-1] process has died [pid 20426, exit code -6, cmd /opt/ros/groovy/lib/nodelet/nodelet manager __name:=camera_nodelet_manager __log:=/u/chadrockey/.ros/log/9a809312-55e7-11e2-a397-6c626d40a501/camera_nodelet_manager-1.log].
log file: /u/chadrockey/.ros/log/9a809312-55e7-11e2-a397-6c626d40a501/camera_nodelet_manager-1*.log
This is somewhere in image_proc, here's the output from running it after 'rosrun openni_camera openni_node' on a Kinect.
rosrun image_proc image_proc image_raw:=/rgb/image_raw camera_info:=/rgb/camera_info
[ WARN] [1357248397.699076677]: Started in the global namespace! This is probably wrong. Start image_proc in the camera namespace.
Example command-line usage:
$ ROS_NAMESPACE=my_camera rosrun image_proc image_proc
terminate called after throwing an instance of 'cv_bridge::Exception'
what(): Unsupported conversion from [bayer_grbg8] to [mono8]
Aborted (core dumped)
Hi,
when I've tried to save a calibration using the SAVE button, python outputs:
Traceback (most recent call last):
File "/opt/ros/hydro/lib/camera_calibration/cameracalibrator.py", line 205, in on_mouse
self.c.do_save()
File "/opt/ros/hydro/lib/python2.7/dist-packages/camera_calibration/calibrator.py", line 511, in do_save
self.do_tarfile_save(tf) # Must be overridden in subclasses
File "/opt/ros/hydro/lib/python2.7/dist-packages/camera_calibration/calibrator.py", line 826, in do_tarfile_save
taradd(name, cv.EncodeImage(".png", im).tostring())
File "/opt/ros/hydro/lib/python2.7/dist-packages/camera_calibration/calibrator.py", line 817, in taradd
s = StringIO.StringIO(buf)
AttributeError: type object '_io.StringIO' has no attribute 'StringIO'
and no file is saved. The code line reported is in https://github.com/ros-perception/image_pipeline/blob/indigo/camera_calibration/src/camera_calibration/calibrator.py#L817
May that be an import error?
Disparity Nodelet conversion code is erroneous since it does
Disparity = fx ( -baseline / fx ) * 0.001 / Depth which is actually
Disparity = -baseline * 0.001 / Depth
this should be
Disparity = fx * ( -baseline ) * 0.001 / Depth
Fix Is :
disp_msg->T = -info_msg->P[3] / fx;
should be
disp_msg->T = -info_msg->P[3];
OpenCV Error: Assertion failed (0 <= roi.x && 0 <= roi.width && roi.x + roi.widt
h <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.rows) in
Mat, file /tmp/buildd/ros-hydro-opencv2-2.4.6-3precise-20140130-1852/modules/co
re/src/matrix.cpp, line 323
terminate called after throwing an instance of 'cv::Exception'
what(): /tmp/buildd/ros-hydro-opencv2-2.4.6-3precise-20140130-1852/modules/co
re/src/matrix.cpp:323: error: (-215) 0 <= roi.x && 0 <= roi.width && roi.x + roi
.width <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.row
s in function Mat
Launch File
<group ns="/camera">
<node pkg="nodelet" type="nodelet" name="rectify_mono"
args="standalone image_proc/rectify" output="screen">
<remap from="image_mono" to="image_raw" />
</node>
</group>
Here is the camera info
Image was decimated on-board the camera.
header:
seq: 9904
stamp:
secs: 1392345058
nsecs: 255573802
frame_id: camera
height: 728
width: 968
distortion_model: plumb_bob
D: [-21.48163, 2154.22524, 0.24333000000000002, -0.24100000000000002, 0.0]
K: [6830.9773, 0.0, 437.66934, 0.0, 39782.98468, 304.66521, 0.0, 0.0, 1.0]
R: [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]
P: [6439.25391, 0.0, 412.88838, 0.0, 0.0, 42096.67578, 324.95043, 0.0, 0.0, 0.0,
1.0, 0.0]
binning_x: 2
binning_y: 2
roi:
x_offset: 0
y_offset: 0
height: 1456
width: 1936
do_rectify: True
---
Image header
rostopic echo --noarr /camera/image_raw
header:
seq: 9930
stamp:
secs: 1392345061
nsecs: 859107259
frame_id: camera
height: 728
width: 968
encoding: mono16
is_bigendian: 0
step: 1936
---
Hi all,
I am very new to stereo vision and recently got the bumblebee xb3.
Does anyone know the difference in performance between 3D pointcloud generated by stereo_image_proc vs triclops SDK? I understand the techniques used are the same. Is it better, worse or same?
In addition to this, is there anyway I could use the stereo_image_proc for more than 2 lens?
Cheers
Aswin
I am getting exactly the same error as in #18
I am on Mac OS 10.8.4. cv_bridge is of version 1.10.6. What do you think the cause of the error could be?
Here is the log
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 image:=/camera/image_raw camera:=/camera
Waiting for service /camera/set_camera_info ...
OK
Exception in thread Thread-4:
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 552, 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 134, in handle_monocular
drawable = self.c.handle_msg(msg)
File "/opt/ros/groovy/lib/python2.7/site-packages/camera_calibration/calibrator.py", line 736, in handle_msg
gray = self.mkgray(msg)
File "/opt/ros/groovy/lib/python2.7/site-packages/camera_calibration/calibrator.py", line 271, in mkgray
return self.br.imgmsg_to_cv(msg, "mono8")
File "/opt/ros/groovy/lib/python2.7/site-packages/cv_bridge/core.py", line 101, in imgmsg_to_cv
source_type = self.encoding_as_cvtype(img_msg.encoding)
File "/opt/ros/groovy/lib/python2.7/site-packages/cv_bridge/core.py", line 73, in encoding_as_cvtype
from cv_bridge.boost.cv_bridge_boost import getCvType
ImportError: No module named cv_bridge_boost
Hi community,
I'm trying to use the image_pipeline-package to realize a stereovisual system with ros and opencv.
When I use the node for calibration of one usb-camera I get an error every time I put the chessboard (8x6) in front of the camera and the node freezes. I googled the problem and found two ros-questions similar to my problem. One answer was to install a 64-bit version of ubuntu, and the second one was to remove opencv-files from the ros-libraries and install the original opencv-files instead. Now I'm wondering if theres another way to get rid of my problem and where it comes from. I attached the output of my console below my request.
I,ve also tried to use the stereocalibration from this package and the cpp-tutorial calibration from the OpenCV Tutorials. The result was the same.
I'm currently using Ubuntu 12.04 with ros-hydro-installation.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.0242 image:=/stereo/left/image_raw camera:=/stereo/left Waiting for service /stereo/left/set_camera_info ... OK * Added sample 1, p_x = 0.931, p_y = 0.486, p_size = 0.349, skew = 0.186 OpenCV Error: Assertion failed (blockSize % 2 == 1 && blockSize > 1) in adaptiveThreshold, file /tmp/buildd/ros-hydro-opencv2-2.4.6-1precise-20130919-0139/modules/imgproc/src/thresh.cpp, line 797 Exception in thread Thread-3: Traceback (most recent call last): File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner self.run() File "/home/faps/catkin_ws/src/image_pipeline/camera_calibration/nodes/cameracalibrator.py", line 68, in run self.function(m) File "/home/faps/catkin_ws/src/image_pipeline/camera_calibration/nodes/cameracalibrator.py", line 134, in handle_monocular drawable = self.c.handle_msg(msg) File "/home/faps/catkin_ws/src/image_pipeline/camera_calibration/src/camera_calibration/calibrator.py", line 740, in handle_msg scrib_mono, corners, downsampled_corners, board, (x_scale, y_scale) = self.downsample_and_detect(gray) File "/home/faps/catkin_ws/src/image_pipeline/camera_calibration/src/camera_calibration/calibrator.py", line 410, in downsample_and_detect (ok, downsampled_corners, board) = self.get_corners(scrib, refine = True) File "/home/faps/catkin_ws/src/image_pipeline/camera_calibration/src/camera_calibration/calibrator.py", line 378, in get_corners (ok, corners) = _get_corners(img, b, refine) File "/home/faps/catkin_ws/src/image_pipeline/camera_calibration/src/camera_calibration/calibrator.py", line 156, in _get_corners (ok, corners) = cv.FindChessboardCorners(mono, (board.n_cols, board.n_rows), cv.CV_CALIB_CB_ADAPTIVE_THRESH | cv.CV_CALIB_CB_NORMALIZE_IMAGE | cv2.CALIB_CB_FAST_CHECK) error: blockSize % 2 == 1 && blockSize > 1
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
When launching the image_view node with autosize=true, sometimes it
displays resize handles and allows resizing, and sometimes it does not.
When using a window manager where the resize handles have non-zero size
(such as fluxbox), this is annoying.
To reproduce:
On Groovy, I get this error when compiling a project, using catkin_make, that uses stereo_image_proc: stereo_image_proc/processor.h: No such file or directory
I went to /opt/ros/groovy/include/stereo_image_proc, and indeed, it only contains one file: DisparityConfig.h. Why is this the case? Where did the other header files go? I asked this question on ROS Answers:
http://answers.ros.org/question/58316/stereo_image_procprocessorh-no-such-file-or-directory/
and a user told me to report it here because it looks like a bug. I'm running Ubuntu 12.04, and installed ROS with apt-get install ros-groovy-desktop-full.
When running
rosrun camera_calibration cameracheck.py --size 7x5 monocular:=/camera/ir image:=image_raw
I get the following error
OpenCV Error: Assertion failed (src.depth() == dst.depth()) in cvCvtColor, file /tmp/buildd/ros-groovy-opencv2-2.4.5-2precise-20130519-1747/modules/imgproc/src/color.cpp, line 3921
Exception in thread Thread-4:
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/cameracheck.py", line 84, in run
self.function(m)
File "/opt/ros/groovy/lib/camera_calibration/cameracheck.py", line 158, in handle_monocular
C = self.image_corners(rgb)
File "/opt/ros/groovy/lib/camera_calibration/cameracheck.py", line 145, in image_corners
(ok, corners, b) = self.mc.get_corners(im)
File "/opt/ros/groovy/lib/python2.7/dist-packages/camera_calibration/calibrator.py", line 378, in get_corners
(ok, corners) = _get_corners(img, b, refine)
File "/opt/ros/groovy/lib/python2.7/dist-packages/camera_calibration/calibrator.py", line 153, in _get_corners
cv.CvtColor(img, mono, cv.CV_BGR2GRAY)
error: src.depth() == dst.depth()
Obviously, the following command works.
rosrun camera_calibration cameracheck.py --size 7x5 monocular:=/camera/rgb image:=image
I'm using Ubuntu 12.04 with ROS Groovy.
I confirmed that nodelet manager cannot load depth_image_proc::convertMetricNodelet.
I tried in this way.
terminal1:
rosrun nodelet nodelet manager __name:=nodelet_manager
terminal2:
rosrun nodelet nodelet load depth_image_proc/convert_metric nodelet_manager
The below log is from nodelet_manager
Debug: class_loader::class_loader_core: Attempting to load library /home/jihoonl/ros_groovy/image_pipeline/depth_image_proc/build/devel/lib//libdepth_image_proc.so...
[ERROR] [1353032108.854135923]: Failed to load nodelet [/depth_image_proc_convert_metric] of type [depth_image_proc/convert_metric]: Failed to load library /home/jihoonl/ros_groovy/image_pipeline/depth_image_proc/build/devel/lib//libdepth_image_proc.so. Make sure that you are calling the PLUGINLIB_REGISTER_CLASS macro in the library code, and that names are consistent between this macro and your XML. Error string: Could not load library (Poco exception = Cannot load library)
Debug: class_loader::class_loader_core: Attempting to load library /home/jihoonl/ros_groovy/image_pipeline/depth_image_proc/build/devel/lib//libdepth_image_proc.so...
Debug: class_loader::MultiLibraryClassLoader: Attempting to create instance of class type depth_image_proc::ConvertMetricNodelet.
[ERROR] [1353032141.539973295]: Failed to load nodelet [/depth_image_proc_convert_metric] of type [depth_image_proc/convert_metric]: MultiLibraryClassLoader: Could not create object of class type depth_image_proc::ConvertMetricNodelet as no factory exists for it. Make sure that the library exists and was explicitly loaded through MultiLibraryClassLoader::loadLibrary()
I am running the latest Debian install of ROS Hydro under Ubuntu 12.04. At some point the following error message started showing up when launching either openni.launch or image_view; e.g.
$ rosrun image_view image_view image:=/camera/rgb/image_color
[ERROR] [1388762076.282169241]: Skipping XML Document "/opt/ros/hydro/share/uvc_camera/nodelet_uvc_camera.xml" which had no Root Element. This likely means the XML is malformed or missing.
Both the openni node and image_view seem to run OK despite the error but the error itself is a little disconcerting, especially to new users.
could it be possible to detect whether the topic is a camera topic or an image topic, and subscribe accordingly? I'm publishing some intermediate images as bare images and they don't have any camera info associated.
The output of the monocular camera's calibration contains the line:
[narrow_stereo/left]
It should either be a parameter (given when starting the calibration) or a value like "camera" since it is not a stereo.
The problem stands here:
image_pipeline/camera_calibration/src/camera_calibration/calibrator.py:478: + "[narrow_stereo/%s]" % name + "\n"
Hi Comunity
I try to calibrate the kinect with camera_calibration on ros-hydro.
I type this command
$ rosrun camera_calibration cameracalibrator.py image:=/camera/rgb/image_raw camera:=/camera/rgb --size 8x6 --square 0.025
The cameracalibrator.py show an error when running, sometimes during start, sometimes when the checkboard is moving in the frame. If the checkboard is in the middle of the frame when the aplication starts, then sometimes I can see the checkboard from the GUI and the aplication gets the first calibration data and then fails.
The error message show:
OpenCV Error: Assertion failed (blockSize % 2 == 1 && blockSize > 1) in adaptiveThreshold, file /tmp/buildd/ros-hydro-opencv2-2.4.6-1precise-20130919-0139/modules/imgproc/src/thresh.cpp, line 797
Exception in thread Thread-3:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner
self.run()
File "/opt/ros/hydro/lib/camera_calibration/cameracalibrator.py", line 68, in run
self.function(m)
File "/opt/ros/hydro/lib/camera_calibration/cameracalibrator.py", line 134, in handle_monocular
drawable = self.c.handle_msg(msg)
File "/opt/ros/hydro/lib/python2.7/dist-packages/camera_calibration/calibrator.py", line 740, in handle_msg
scrib_mono, corners, downsampled_corners, board, (x_scale, y_scale) = self.downsample_and_detect(gray)
File "/opt/ros/hydro/lib/python2.7/dist-packages/camera_calibration/calibrator.py", line 410, in downsample_and_detect
(ok, downsampled_corners, board) = self.get_corners(scrib, refine = True)
File "/opt/ros/hydro/lib/python2.7/dist-packages/camera_calibration/calibrator.py", line 378, in get_corners
(ok, corners) = _get_corners(img, b, refine)
File "/opt/ros/hydro/lib/python2.7/dist-packages/camera_calibration/calibrator.py", line 156, in _get_corners
(ok, corners) = cv.FindChessboardCorners(mono, (board.n_cols, board.n_rows), cv.CV_CALIB_CB_ADAPTIVE_THRESH | cv.CV_CALIB_CB_NORMALIZE_IMAGE | cv2.CALIB_CB_FAST_CHECK)
error: blockSize % 2 == 1 && blockSize > 1
I have installed Ubuntu 12.04 32 bit and ros-hydro.
Please, help me find a solution to this problem . Thanks very much
line 175 :
cv.NamedWindow("display", CV_WINDOW_NORMAL)
CV_WINDOW_NORMAL does'nt exist... it sould'nt be : cv.CV_WINDOW_NORMAL?
As also asked occassionally on ROS Answers, it is not possible to generate depth images as per REP118 easily using stereo_image_proc, as the standard nodelets either produce a disparity image or a PointCloud2, but not the "intermediate" depth image that has been standardized in REP118. I implemented a very basic nodelet for this based on the existing point_cloud2 nodelet here and would polish it a bit and create a pull request for adding it to stereo_image_proc unless there´s some problem with that idea.
On the ASUS Xtion, the image_mono topic has both mono images and rgb8 images.
Looks like the publishers were switched.
$> rosrun camera_calibration cameracalibrator.py --size 6x7 --square 0.108 image:=/stereo/left/image_mono
Exception in thread Thread-3:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 552, 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 134, in handle_monocular
drawable = self.c.handle_msg(msg)
File "/opt/ros/groovy/lib/python2.7/dist-packages/camera_calibration/calibrator.py", line 736, in handle_msg
rgb = self.mkgray(msg)
File "/opt/ros/groovy/lib/python2.7/dist-packages/camera_calibration/calibrator.py", line 270, in mkgray
rgb = self.br.imgmsg_to_cv(msg, "bgr8")
File "/opt/ros/groovy/lib/python2.7/dist-packages/cv_bridge/core.py", line 101, in imgmsg_to_cv
source_type = self.encoding_as_cvtype(img_msg.encoding)
File "/opt/ros/groovy/lib/python2.7/dist-packages/cv_bridge/core.py", line 73, in encoding_as_cvtype
from cv_bridge.boost.cv_bridge_boost import getCvType
ImportError: No module named cv_bridge_boost
In an installation from groovy debs, when the plugin gets used it cannot locate the library.
A simple workaround in image_transport/default_plugins.xml on the first line, prefix the path with: '../../'. I'm not sure if this is the 'correct' solution.
See also ros-perception/image_common/issues/4
It would be very useful if it would be possible to perform two monocular calibrations in order to get precise intrinsics for each camera and then perform stereo calibration (taking pictures once more) but reading already calibrated instrinsic parameters and only computing the rectification and projection matrices.
In order to get both cameras to see the calibration pattern, it is not always possible to put the pattern very close or even cover both images completely (due to baseline), therefore instrinsic parameters may not be obtained as precise as with the procedure proposed before.
After updating to Ubuntu 14.04 and Indigo I'm not able to execute the camera_calibration.
With last version of opencv libraries (github repository master) python keeps looking for "cv.so". I have no issues with Hydro.
Also when using the repository installation of opencv (2.4.9) camera_calibration gives me this error:
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 68, in run
self.function(m)
File "/opt/ros/indigo/lib/camera_calibration/cameracalibrator.py", line 138, in handle_monocular
drawable = self.c.handle_msg(msg)
File "/opt/ros/indigo/lib/python2.7/dist-packages/camera_calibration/calibrator.py", line 749, in handle_msg
gray = self.mkgray(msg)
File "/opt/ros/indigo/lib/python2.7/dist-packages/camera_calibration/calibrator.py", line 262, in mkgray
mono16 = self.br.imgmsg_to_cv(msg, "mono16")
AttributeError: CvBridge instance has no attribute 'imgmsg_to_cv'
I am trying to calibrate an Argos 3D Tof camera. Everything works in Hydro. Even when I try to execute:
rosrun camera_calibration cameracalibrator.py
I do not get any answer. It gets frozen.
Reported in ROS answers: http://answers.ros.org/question/170971/issues-with-cv_bridge-when-using-cameracalibratorpy-in-indigo/
Report to bug tracker suggested.
The initial window size for the camera calibrator is quite small. This makes it difficult to see, which makes me sad.
This will likely not be limited to only depth_image_proc.
When building RPMs, mock employs a more robust dependency checking system than is currently used to build the ROS debs. It has discovered that it is possible to install pcl_ros without libpcl-dev (which isn't wrong). However, projects that utilize pcl_ros for building MUST also have the PCL header files provided by libpcl-dev.
The most efficient solution dependency-wise is to make packages with build dependencies on pcl_ros to also build depend on libpcl-dev.
At current, package.xml's don't seem to have the ability to declare additional downstream build dependencies (while catkin does in cmake).
This is the only package I've discovered so far, but I haven't been able to build quite a few other possible pcl deps, so I'll know more soon.
Please update the urls for test data from pr.willowgarage.com to download.ros.org.
After calibrating using a 1920x1440 source video stream, during the save process, camera_calibration coredumps:
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Aborted (core dumped)
And there might be another issue in there with grayscale/color (second comment of @jihoonl)
The python approximate time synchronizer should really be moved into ros_comm
Most of the cameras/camera drivers I have around (Asus Xtion, Kinect, webcams) tend to publish the camera_info
each time the the image
topic is published. This means that the callback
on line 35 gets called at twice the framerate of the image topic we are trying to record. This results in videos that playback at 1/2 the real-world speed if the user inputs an ~fps
param equal to the image
topic publish frequency (which is the logical choice IMO).
I haven't used image_pipeline
a ton, and I haven't used many camera drivers, so I don't know if publishing the camera_info
every time is common. But for drivers that do this, here is what fixed the issue for me (lines 57-60):
ROS_INFO_STREAM("Starting to record " << codec << " video at " << size << "@" << fps << "fps. Press Ctrl+C to stop recording." );
}
else if (outputVideo.isOpened() && info) return;
Hello,
I am using stereo_image_proc to process data coming from a stereo system. When trying to visualize it in RVIZ I came across to the following issue: The point cloud (pointcloud2 and pointcloud topics) is not properly transformed. See the following images:
Any ideas?
P.S.: The cameras seem properly transformed. See images below:
I read some blogpost about overlinking and .pc files, and then wondered how ROS currently fares with overlinking. (E.g. see http://wiki.mandriva.com/en/Overlinking)
So I did a grep over .pc files in a groovy desktop full underlay, and the things that stood out where opencv dependencies.
E.g.:
$ find devel_isolated/ -name *.pc | xargs grep Libs
devel_isolated/image_geometry/lib/pkgconfig/image_geometry.pc:Libs: -L/home/kruset/groovy_underlay_full/devel_isolated/image_geometry/lib -limage_geometry -l:/home/kruset/groovy_underlay_full/devel_isolated/opencv2/lib/libopencv_calib3d.so -l:/home/kruset/groovy_underlay_full/devel_isolated/opencv2/lib/libopencv_contrib.so -l:/home/kruset/groovy_underlay_full/devel_isolated/opencv2/lib/libopencv_core.so -l:/home/kruset/groovy_underlay_full/devel_isolated/opencv2/lib/libopencv_features2d.so -l:/home/kruset/groovy_underlay_full/devel_isolated/opencv2/lib/libopencv_flann.so -l:/home/kruset/groovy_underlay_full/devel_isolated/opencv2/lib/libopencv_gpu.so -l:/home/kruset/groovy_underlay_full/devel_isolated/opencv2/lib/libopencv_highgui.so -l:/home/kruset/groovy_underlay_full/devel_isolated/opencv2/lib/libopencv_imgproc.so -l:/home/kruset/groovy_underlay_full/devel_isolated/opencv2/lib/libopencv_legacy.so -l:/home/kruset/groovy_underlay_full/devel_isolated/opencv2/lib/libopencv_ml.so -l:/home/kruset/groovy_underlay_full/devel_isolated/opencv2/lib/libopencv_nonfree.so -l:/home/kruset/groovy_underlay_full/devel_isolated/opencv2/lib/libopencv_objdetect.so -l:/home/kruset/groovy_underlay_full/devel_isolated/opencv2/lib/libopencv_photo.so -l:/home/kruset/groovy_underlay_full/devel_isolated/opencv2/lib/libopencv_stitching.so -l:/home/kruset/groovy_underlay_full/devel_isolated/opencv2/lib/libopencv_superres.so -l:/home/kruset/groovy_underlay_full/devel_isolated/opencv2/lib/libopencv_video.so -l:/home/kruset/groovy_underlay_full/devel_isolated/opencv2/lib/libopencv_videostab.so
Same for cv_bridge, compressed_image_transport, compressed_depth_image_transport, image_proc
I assume that linking here is overdone, and could / should be reduced by getting opencv into cmake with components, e.g.:
http://stackoverflow.com/questions/11196720/cmake-how-to-only-include-part-of-opencv
FIND_PACKAGE( OpenCV REQUIRED core imgproc)
I don't know much about opencv, cmake or linking, so I might be wrong here, but I still thought it might be worth raising a flag.
I had issues with stereo_image_proc and image_proc. Building ROS from source, I had to add find_package(Boost REQUIRED COMPONENT thread) to CMakeLists.txt and #include<boost/thread/lock_guard.hpp> to each file that used lock_guard.
please enhance camera calibration to display the images that the script will use for calibration.
Moved from https://code.ros.org/trac/ros-pkg/ticket/4011
second comment from @jihoonl
From reading the source for cameracalibrator.py, it has a lot of flags that aren't documented on the wiki.
The popular/supported flags for cameracalibrator should be documented on the wiki. This probably includes the --pattern, --size and --square flags.
It may be sufficient to copy the output of cameracalibrator.py --help onto the wiki.
Hi, I'm trying to debug this linking error. My first instinct upon seeing the thread-local storage error was to recompile pcl-1.7.1 to not use mpi. The error persisted. Should I try to regress to pcl-1.6? Thanks for your time.
Linking CXX shared library /home/wayne/work/ros/ros_hydro_ws/devel_isolated/depth_image_proc/lib/libdepth_image_proc.so
/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../x86_64-pc-linux-gnu/bin/ld: _ZZN5Eigen8internal20manage_caching_sizesENS_6ActionEPlS2_E13m_l2CacheSize: TLS definition in /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../lib64/libpcl_surface.so section .tbss mismatches non-TLS definition in /usr/lib64/libopencv_contrib.so.2.4.8 section .bss
/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../lib64/libpcl_surface.so: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
make[2]: *** [/home/wayne/work/ros/ros_hydro_ws/devel_isolated/depth_image_proc/lib/libdepth_image_proc.so] Error 1
make[1]: *** [CMakeFiles/depth_image_proc.dir/all] Error 2
make: *** [all] Error 2
<== Failed to process package 'depth_image_proc':
Command '/home/wayne/work/ros/ros_hydro_ws/install_isolated/env.sh make -j8 -l8' returned non-zero exit status 2
Reproduce this error by running:
==> cd /home/wayne/work/ros/ros_hydro_ws/build_isolated/depth_image_proc && /home/wayne/work/ros/ros_hydro_ws/install_isolated/env.sh make -j8 -l8
Command failed, exiting.
Hi community,
I'm trying to use the cameracalibrator.py for stereocalibration of two usb-webcams. They aren't synchronized so that I have to add an approximate time value to my command. If I dont add this value the calibration-window doesn't show up. But when I use this value I'm getting the following Error:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
rosrun camera_calibration cameracalibrator.py --pattern='acircles' --size 11x4 --square 0.035 right:=/stereo/right/image_raw left:=/stereo/left/image_raw left_camera:=/stereo/left right_camera:=/stereo/right --approximate='0.5'
Waiting for service /stereo/left/set_camera_info ...
OK
Waiting for service /stereo/right/set_camera_info ...
OK
[ERROR] [WallTime: 1381998472.508630] bad callback: <bound method Subscriber.callback of <message_filters.Subscriber instance at 0x918cbac>>
Traceback (most recent call last):
File "/opt/ros/hydro/lib/python2.7/dist-packages/rospy/topics.py", line 681, in _invoke_callback
cb(msg)
File "/opt/ros/hydro/lib/python2.7/dist-packages/message_filters/init.py", line 72, in callback
self.signalMessage(msg)
File "/opt/ros/hydro/lib/python2.7/dist-packages/message_filters/init.py", line 55, in signalMessage
cb(*(msg + args))
File "/home/faps/catkin_ws/src/image_pipeline/camera_calibration/src/camera_calibration/approxsync.py", line 70, in add
msgs = [q[t] for q,t in zip(self.queues, vv)]
KeyError: genpy.Time[1381998472471507850]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Does anyone know where this error comes from?
Hi,
so I recently started installing ROS on my new Macbook with OS X 10.9. The stereo_iamge_proc
compilation fails with an error that a symbol from cv_bridge
is not found. The following patch fixes compilation for me. I don't know catkin well, so I'm not sure if the dependecy should be added elsewhere.
https://gist.github.com/NikolausDemmel/7840369
Cheers
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.