Week3
Simulate LIDAR and RGBD with publishing ROS topic using gazebo
Reading and taking notes
Surface Reconstruction
From unorganized points or exploits the underlying structure of the acquired data
Reconstructing Parametric Surfaces
Constructing an Implicit Function
TSDF
Features
- Using multiple measurement data to ensure the accuracy of the measurement and make the surface thinner
- Build Signed Distance Function
- Ignore the point far from surface
Important points
-
weighted signed function
-
space carving(mark the corresponding voxels as “empty” following the lines of sight back from the observed surface)
-
t s d f i ( x ) = m a x ( − 1 , m i n ( 1 , s d f i ( x ) t ) ) w i t h s d f i ( x ) = l a s e r i ( x ) − d i s t i ( x ) tsdf_i(x)=max(-1,min(1,\frac{sdf_i(x)}{t}))\quad with\quad sdf_i(x)=laser_i(x)-dist_i(x) tsdfi(x)=max(−1,min(1,tsdfi(x)))withsdfi(x)=laseri(x)−disti(x)
-
ensure the t s d f tsdf tsdf near the surface is around 0 and value range from -1 to 1
-
let the weighted function falls to 0 when the point is far from the surface, and the distance when it falls to zero is typically based on the noise of laser scanner, that is why call it “truncated” compared to ESDF
-
divide the whole space into three parts, “empty”, “observed isosurface”, “unseen” and “holes to fill isosurface”
question1: to make the reconstruction more real, to fill the surface that haven’t been detected is crucial, but I don’t get the point how to do that.
question2: some really sharp surface like a drill may interfere the robustness of the whole algorithm, and how to maintain such robustness when encounter, let’s say, a drill?
Some Other Maps’ Structure
-
Occupancy Grid Map(dense)
-
Octo-map(sparse, structured)
-
Voxel Hashing
- Data Structure:
Struct Voxel{ float sdf; uchar colorRGB[3]; uchar weight; }