My favorite is the Learning OpenCV book. It has a fantastic stereo / 3D section that introduces concepts from the ground up. If you're at a university, you might be able to find the digital version available from the library website.
Depends, especially on how you are going to combine scans into a full 3D pointclound (if you need 360 degree views.) ...
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 ...
Kinect 1 is a structured Light sensor, Kinect 2 is a Time of Flight camera.
Structured Light gives you better performance on edges where a ToF camera smoothes the data due to multipath-measurements. ToF has less problems with ambient light.
What is your use case?
So the Kinect uses a set of IR points to determine depth, not true stereoscopy. the DUO M and the Bumbee both use two cameras to achieve this, I am not familiar enough with them to give a good comparison between them and the Kinect but I am familiar with a new product that I have been using for a little bit called the ZED It has a detection range of ...
Excellent answer by George. If I may, I'd like add more details and suggestions. (I would recommend googling terms that are new to you).
Your entire robot (input) configuration depends on what kind of data your code is going to process. If it's more vision oriented, the data can be depth maps, point clouds, rgb images or a combination of the 3. This means ...
The information matrix is the inverse of the covariance matrix. In this case, the covariance is over the variables (x,y,z,qx,qy,qz). It is assumed that your quaternion is normalized to be unit magnitude.
You should be able to get an estimate of the information matrix from the ICP.
In general the covariance estimate can be found by the following ...
It actually makes sense that the dot product in both cases is the same (zero) because the dot product of two vectors does not consider the vectors' origins. Or in other words the math for the dot product places the two vectors at the same origin. In this sense there is no way to distinguish converging or diverging vectors.
I think what you need to do is to ...
You can use all versions of the Kinect for Windows SDK, even with an Xbox-version. Some parts are limited and you require a Kinect for Windows in commercial scenarios (more information on my blog).
In your scenario you should be able to use the official Kinect for Windows SDK v1.8 to use the speech/sound scenario. If you are going to do speech/voice ...
active system (works also on textureless surfaces)
defined range (low maximal range)
does not work good outdoors in direct sunlight
- adjustable (different camera, different baseline possible for different ranges)
higher framerate possible
hard to built right (...
You should simply use the callback method since you can have an object in your code that is always updated with the latest measurement. Then you can simply poll the measurement in that object whenever you want (say in some while loop running at a given rate). I notice you are linking to help related to using Python, whereas I am more familiar with coding ROS ...
The movement of the ping pong ball is going to be ballistic, so you really only need to know its 3d position in 3 different locations in order to fully constrain its motion. In reality, you will probably want more. This excellent paper An Application of human-robot interaction: Development of a ping-pong playing robotic arm uses around 8-10 locations in ...
There are several platforms possible, depending on your experience level and needs.
If you are comfortable working with the Raspberry Pi or the Beagle Bone... the next step up might be the Jetson TX1 or TX2 from Nvidia. Please note that the default install of OpenCV4Tegra does not include the slam modules, so you will have to install OpenCV from source if ...
You can install the a package for kinect:
sudo apt-get install ros-hydro-openni-launch
Then to make the package publish kinect's topics:
roslaunch openni_launch openni.launch
To visualize the depth image run:
rosrun image_view image_view image:=/camera/depth/image
To visualize for example the Point Cloud in rviz you can add a PointCloud2 Display ad ...
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, ...
If cost is a factor, you can also do 3D reconstruction using stereo vision with a pair of commercial digital cameras. Many algorithms are available online to reconstruct 3D scenes from a pair of stereo images since this is a popular research topic.
The quality and range of the reconstructed scene will be a function of the image resolution, the image ...
As Mark Omo mentioned, the Kinect is a fundamentally different technology than a simple stereo pair. There are also other technologies such as a "standard" time-of-flight cameras like the Swiss Ranger and PMD, and infrared stereo with projected texture of the Intel RealSense.
I believe each technology has its own strengths and weaknesses. For example, ...
The critical part is the registration between depth data and RGB data. If the registration is calibrated properly then you can just extract the depth for the particular target pixel (X,Y), using interpolation for sub-pixel coordinates. See this answer for help with the registration -- it is a common problem that has already been solved.
Once you have the ...
Until you learn more about ROS the best approach is to use a callback. You can copy the data to a global variable and use that in your main program if it helps you reason about the data flow better.
If you are trying to do this to reduce network congestion, your best bet is to change the driver parameters to reduce the framerate or resolution. For the ...
Consider this - what is the process of doing SLAM? First, get some sensor data, then move in the world, get some more sensor data, then try to do feature identification and matching to build up a map.
You could, theoretically, still build a map in "depth" units instead of in meters or feet or whatever units your camera model spits out. After all, what is a ...
These values are relative to the camera. Z is always positive as the camera can't see what is behind. X and Y can be positive or negative depending on if an object is left/right or higher/lower than the camera's viewing direction.
PCL library has all the functionality you need for 3D scanning, as well as it have the complete GPU pipeline, take a look at kinfu. Here is some tutorial regarding 3D scanning. Take a look at MeshLab too see how to do it manually.
Any approach will work. With object rotating on the platform you potentially has more information of object position, thus making ...
As others mentioned the Kinect is a different technology which has different trade offs. Stereo performs better in sunlight than a Kinect and it is easier to adapt the range, particularly if longer range is desired.
The reason that the stereo modules are more expensive than a couple of web cams is because they are not the same thing. The technology itself ...
Your sensor does not measure state
Kinect does not provide any "measurements" of state. It scans the environment and provides a point cloud. To use this to localize a robot, you must compare currently-sensed point clouds to past-sensed point clouds to provide a "correction" term. ICP (as mentioned) will provide such a "correction" term. That correction is ...
From the wiki of the g2o file format:
The information matrix or precision matrix which represent the
uncertainty of the measurement error is the inverse of the
covariance matrix. Hence, it is symmetric and positive semi-definite.
Unfortunately there is no mentioning of the representation for the covariance matrix for that file format, that I ...
Kinect is an active 3D depth estimation setup that employs IR laser
structured patterns for Depth calculation and are reliable for Indoor
Stereo Camera setup is a passive 3d depth estimation setup that
typically involves use of Stereo calibration procedure in order to
compute projection matrix that will transform a 2D ...
I guess that the approach in structured cameras is pretty much the same.
However, the world is trying to minify this kind of sensors.
Some people speculate that the reason for kinect to be so big is the array of microphones that allows to localize source of noise.
I haven't ...
I have used ROS and Ubuntu with a Kinect on many platforms and it has yet to let me down. I used it on a Pentium laptop without dedicated GPU as well as on powerfull desktops.
If the board has a USB port (which it does) and it can run Ubuntu, I don't see that there would be any problems with this setup.
I have also used MatLab on Windows and it is much ...
Arduino or other microcontrollers is not enough for image or video processing. So you can try it with scanners (like LIDAR) or sensor arrays like this link. The link contains only 4 sensors but you can increase the number of sensor for increase measuring angle( angle of HC SR04 is 15 degree)
I am not sure the Arduino has the "horse power" for this. You might be better off going with a RaspberryPi, BeagleBone, or some other embedded board that can run a real operating system...
For 2D depth sensors, the main contenders are SICK and Hokuyo. The interface for these is typically USB. But i know older model SICKs used RS232 which might actually ...
With fixed cameras, background subtraction will get you 90% of the way there. (Assuming you don't have lots of other moving things around your room).
You should consider tagging your robot with color blobs like they do for RoboCup SSL. Color segmentation is easy, and can be made to be very fast.
But then you need to write some custom code to recover the ...