pointcloud registration / point cloud merging
Hi
I am using gmapping with a irobotcreate using encoders and a lidar for localisation (will add an IMU soon)
On top i have a kinect taking in point cloud data which i want to use to create a global point cloud relative to the map frame.
Ultimately i want to do 3D mapping of the environment.
I currently do this by gradually building up a pointcloud using the laser assembler package.
My main problems are:
- if the kinect stares at one spot you will get the same pointcloud over and over. And you dont want to store these pointclouds over and over gain. Essentially you want ingore point cloud data if there is already points in the location. To solve this.. i do the following
I store all my final point clouds in a pointcloud assembler, just as the buffer (size 4) is about to get full I extract everything in the buffer and run it through ros_pcl voxel grid filter to downsample the whole point cloud. I then put back the pointcloud into the buffer. (while new point clouds are also being placed into the buffer)
My approach worked if the noise in the sensor is minimal relative to the leaf size and also if the localization is very good (which is not the case).
Does anyone know a better way of merging pointcloud data into one global point cloud?
edit: I though of using icp based packages, but most of these could not be restricted to 2D pose in one plane.
I guess i could implement something in icp. eg given two pointclouds determine if point cloud A can be transformed into pointcloud B if not then merge point cloud B with A.
Asked by Sentinal_Bias on 2013-06-04 00:35:57 UTC
Comments