3

I totally agree that the documentation is poor and it took me quite some time to understand what is going on. I recorded a rosbag for "velodyne_points" topic using a Velodyne VLP-16. The recorded message is PointCloud2 type. Since the recorded file was really large it gave me a lot of trouble even when only trying to take a look at it(initially I had it ...


3

I get why you are confused. Looking at the definition of PointCloud2, you see that the field that holds the "actual" point cloud data is a 1-dimensional array. Now, you might think, wait: why aren't there 3 dimensions, one for X, Y, and Z? Well, this is why we have PointCloud2: so we can have a single array in memory contain all the info we need, regardless ...


3

I don't think what you're asking is possible with the state of the art sadly. You cannot, AFAIK, generate a 3D map from a hand held 2D LIDAR without any other sensors. It's a very interesting question you're raising but I think it's a research question :) A LIDAR is going to give you a 2D laserscan/Pointcloud. That 2D data will not possible to extrapolate ...


3

That is an already solved problem. As Squelsh mentioned CSIRO released its initial version in 2009 and their work is commercialized by GEOSLAM already. One of a CMU student released a open source version of CSIRO's work, called LOAM. Unfortunately, he also commercialized his work and closed the original git. Good news is that many people have a copy of ...


3

You can use 3D feature descriptors here to register two point clouds. I've personally used two most recent ones that performed well enough for a similar application. Following are the references to the papers: A novel binary shape context for 3D local surface description link TOLDI: An effective and robust approach for 3D local shape description link The ...


2

Update: I got it working. Thanks for the feedback everyone. To address some of the comments: I wasn't aware that 'filtering' has a specific meaning in the context of PCL. My code wasn't trying to implement an actual filter. I was able to compile and run the PCL tutorial no problems Sure enough, my problem was in the conversion from ROS message types to PCL ...


2

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.


2

Iterative closest point is a method to fuse two point clouds together. If Robot A drove around town and gathered some data, then Robot B drove around town and gathered some data, ICP would (theoretically) be able to join the two clouds together. In reality, if A and B don't have a common view (didn't drive down the same street/segment), then ICP isn't ...


1

The word is exactly as it sounds. It is a submap of a larger map. Essentially a large map is broken up into smaller submaps in order to improve the computational complexity. In the reference you give the map is the accumulated pointcloud. This giant pointcloud is then broken up into smaller pointclouds(the submaps*). These submaps are then used to ...


1

The XYZ readings from the camera are in the reference frame of the camera. @FooBar is correct about the X/Y values: they are planar about the center of the camera, just like the OpenGL viewing window. I don't know the maximum range of the point-cloud data, but my suspicion is that the maximum z value is 1. (This could change, however, depending if you have a ...


1

Why don't you try to look it au contraire? Given you know the robot's "radius" (a contact free sphere actually with your desired r value) you can enlarge obstacles you find, although this would require the used of some sort of discretaziation of the world in a grid. For 3D this can be done using OctoMap (https://octomap.github.io/). With obstacles enlarged ...


1

As the previous answers stated: You need an additional source of information to reconstruct the orientation of the scanner. Even if only roughly. Do a Google search for "Zebedee scanner". The researchers from CSIRO implemented the scan registration in the most elegant way, IMHO. And they use a cheap IMU in their device.


1

If it was fixed: - You can place it vertically and define a rotating mechanism so it spins on itself and the 2D beam eventually maps the 3D surroundings. If it is hand-held: - You will have to compute the transformation matrix from the origin to the new position of the camera (lidar in your case) and apply it to perform an image/laserScan registration, such ...


1

I'm not sure what sort of ICP did you used but a voxel based plane-to-point ICP is robust and works well even in an unstructured environment. This or his previous paper describes the method. http://ieeexplore.ieee.org/document/6220900/ Or this one might be helpful. http://static.adrian-haarbach.de/mscthesis_adrian.pdf


1

This is what worked for me (to auto-align sparse scans, which can also be useful in SLAM when it gets lost): Run a corner detector for each scan (convert the LIDAR output into a single path and run a line simplification algorithm to extract the vertexes). As an improvement, you can also detect middle-of-the-air points using a filter and create multiple ...


1

It turns out this can easily be done with OpenCV - just find image features (FAST etc.) in first image, track them to the second image (get a set of corresponding features between two images) and then use triangulatePoints function to get the 3D scene. triangulatePoints accepts two projection matrices - one for each image. Each projection matrix defines ...


1

I converted my comments to an actual answer: If I understand your setup correctly, you're saying you have a line scan camera mounted to the top of the rotating head of a laser scanner, and all you're looking for is the one-time transform matrix between the scanner and camera coordinate frames. Is this correct? If so, why not just perform the test in a ...


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