# Tag Info

16

A 3D laser range finder or LIDAR such as the one on the Google Car is far more expensive than a camera. The other reason is that while in case of a LIDAR the distance of every pixel is available, the generated data to be processed is enormous. You have to transfer and process data faster which comes out again as rising cost. Finally cameras usually have a ...

13

After solving the problem, I created a keynote presentation explaining many details about hand eye calibration for those that are interested. Practical code and instructions to calibrate your robot can be found at handeye-calib-camodocal. I've directly reproduced some key aspects answering the question here. Camodocal Camodocal is the library I'm using to ...

8

I still think this is off-topic, but it seems I need more space than a comment to show (answer?) why that is so. You are starting from some performance specifications and are looking to get to a set of features you need in your camera. Here is a post from NI about stereo vision that gives a formula for depth resolution:  \Delta z = \frac{z^2}{fb}\...

6

Stereo vision and SLAM are pretty heavy algorithms, both in terms of the processing power and RAM required. You can forget about running this on a little microcontroller like an Arduino. These run at tens of MHz, and have only a few KB RAM. At the very least you'll need something running at hundreds of MHz with hundreds of MBs of RAM. You didn't say exactly ...

6

I don't know what you mean by "precision" and how do you measure it. The sensing accuracy will probably go back to the camera calibration precision and the stereo matching algorithm used. If they ship the device "calibrated" then no one knows what happened after the camera was calibrated in factory and before you got it (mechanical shock, temperature swings)...

5

My question: are there cases where you'd still need a LIDAR or can this expensive sensor be replaced with a standard camera? ... A each one of them has its advantages/disadvantages. Thus in some cases it would be more suitable to choose a lidar instead of a camera and vice-versa. A LIDAR doesn't require light to perceive the environment whereas a camera ...

4

The Kinect is certainly a popular choice these days for robotics. However, time-of-flight, structured light, and stereo cameras all have their own strengths and weaknesses. These two threads have a good discussion: What main factors/features explain the high price of most industrial computer vision hardware? Question for those who have experience using ...

4

The first thing is to make sure that the cameras will get the coordinates of the object at the same time (I don't know if Pixy has a FREX or STROBE signal for synchronization), or that the object is not moving. Then, have a look at OpenCV, it has a section on 3D calibration and reconstruction (i.e. find the depth of an object based on the coordinates of two ...

4

My experience with ready-made stereo solutions is that they (as @Ben has said) provide you with synchronized image pairs and well-defined baseline geometry. If you are on a low-budget, and you have the capability to fabricate your own stereo rig, then I'd suggest making your own aluminium stereo rig and buying two identical cameras and lenses, as you can ...

4

I highly advise against using synthetic image data for testing your stereo vision algorithms. What will happen is that you end up with a system that works excellent on your synthetic data, but poorly in the real-world. Synthetic images are much easier to process than real-world images, as they lack all the shortcomings of real cameras that will make stereo ...

4

In addition to those points in Bence's answer, cameras can: Calculate many complex features that result in very robust matching between frames, and object recognition High angular resolution (typical low->high range goes from $0.5^\circ$ -> $0.025^\circ$) Lower power usage Passive sensor (doesn't require 'clean' signal of a laser)

4

Each camera needs to be defined by 6 variables (3 position, 3 orientation). This would mean that during the calibration process, a solver needs to find 12 variables. As this is done usually with an nonlinear optimization process, the solutions are quite sensitive to the initial guess. By making them parallel and giving them a fixed width, you can give the ...

3

I'll try to answer this question on my own, but feel free to add more information on that. We tried OpenCV's standard disparity function, but it fell short mainly because of item #4. Further, it is very slow (running at 1fps with images at 640x480px even on powerful machines). Recently, we are doing some tests with libelas and it seems promising. It is ...

3

The best answer is probably going to be an ultrasonic sensor on a servo, you can get them in a huge range of values, from very close to very far range depending on your application, and varying beam widths depending on your accuracy needs. If you need more than 255 steps you could go with a motor and a encoder but that will be slightly more complex.

3

Actually kinect sensors are similar to stereo-cameras. They are made up of two devices, an IR emitter and a IR receiver. The emitter projects a light-dots pattern of known shape and size, while the other device receives the actual reflected dots. From the deformation of the pattern is possible to find out depth, but the maths behind it, as far as I know, is ...

3

I would like to suggest you to use Beaglebone Black , it is smaller than size compared to Raspberry pie. It is just the size of a credit card. And has a faster processor of 1 GHz and has an inbuilt 3D graphics Accelerator. There is already a Cape Board for BBB that supports HD Video sensors. Update : And if you want to use OpenCL then I would suggest you ...

3

The short answer is no. You can use the XML output file within OpenCV's ecosystem (and ROS), but there are no standard formats for calibration. The issue is not coming up with a standard. Camera intrinsic calibration models differ in their modeling of lens distortion, due to different lenses and different application settings. If you are using a ...

3

Kinect: Pro: cheap already calibrated active system (works also on textureless surfaces) dense stereo Con: defined range (low maximal range) does not work good outdoors in direct sunlight Stereo: Pro: - adjustable (different camera, different baseline possible for different ranges) higher framerate possible works outdoors Cons: hard to built right (...

3

"3D camera" is a generalisation that covers sensors that can observe a point-cloud or depth map of the scene they are observing. Some 3D cameras use a projector (via various ways) to improve the resolution and/or reduce noise of these sensors. The fact that the projector is IR is not important, it could be a red laser projector instead, but IR is used so ...

3

navigation in urban environments Depending on the laser, there might be legal constraints on where you can use it. Running around town throwing laser rays around might require special permission/licence.

3

It looks like what I saw when a colleague of mine was working with fisheye lenses; I found this post after doing an image search for "rectify fisheye image" and following the link from this picture. At that post, they're using openCV to do the rectification. I'm always reluctant to bulk copy/paste someone else's content, so I'll just say that the tl;dr ...

2

Arduinos are slow. They run at 16mhz and don't normally have more than 10 kb of ram (the due has more, but still well under 1 mb. I personally would look into a beaglebone or udoo as they are both a lot faster than a raspberry pi. However, if you don't have much experiance with robotics and your project doesn't require it, I would avoid it Also, your ...

2

The baseline is an output parameter of the calibration. What the calibration needs to know is the size of your calibration object. How it works is to find the transformation between the two views, and reduce the overall error for multiple views. The transformation is both the rotation and the translation. The translation in this case is the baseline.

2

The Structure sensor is a "3D sensor for mobile devices". Reading over the details it sounds like a smaller version of Kinect. It has open source drivers, openNI support etc. It's been on my to buy list for awhile but I don't have an immediate application just yet. From the site, The magic of 3D depth sensing begins with the ability to capture fast, ...

2

Two videos that you provided are not doing the same task. The stereo system is just measuring distance of different points in space (which happens to include a car in that video). It will show any object in front of it but won't classify the object. So, cars or people or trash cans mean the same thing to that algorithm and it will just return the distances. ...

2

I know you said "not considering laser based detectors," but I am assuming you are discounting them due to price? There is a LIDAR unit available from sparkfun for less than \$100 which claims to have a range to 40m. That's about half the price of a Kinect sensor. AFAIK, this unit only measures range to a single point, I'm not sure how easy it would be to ...

2

RANSAC is usually used to segment planes from the point cloud (see: http://www.pointclouds.org/documentation/tutorials/planar_segmentation.php). As an alternative, when you detect objects that are on the road you could neglect surfaces/points for which the curvature is close or equal to zero. However, this requires you to have some way to get the curvature ...

2

In Stereo Vision, image rectification is used to "warp" (remap the pixels using the translation, rotation, fundamental matrices computed from camera calibration) the image to remove distortions introduced in camera lenses and horizontally align pixels in the left and the right images to satisfy the epipolar constraint so that when stereo matching is ...

2

I did similar project with v-rep, python and opencv. 1- Set up an enviorement with visible objects 2- Set up your vision sensors with parameters 3- Write a python script that connects you to v-rep and do stereo vision application Example code: import vrep import time import cv2 import numpy as np vrep.simxFinish(-1) clientID = vrep.simxStart('127.0.0....

2

For improved precision try calibrating the camera with the Stereo Camera Calibrator app in MATLAB. As far as the memory taken up by the point cloud, that really depends on how many points you have. You can always try reducing the resolution of the cameras, downsampling the point cloud itself, and/or using a lower precision data type to store the coordinates....

Only top voted, non community-wiki answers of a minimum length are eligible