dkotfis / octree-slam Goto Github PK
View Code? Open in Web Editor NEWLarge octree map construction and rendering with CUDA and OpenGL
License: Apache License 2.0
Large octree map construction and rendering with CUDA and OpenGL
License: Apache License 2.0
Voxelization grid size is currently determined at compile time.
Support dynamic checking to determine bounds of scene, as well as changing size when the scene becomes larger.
Incorporate photometric ICP for visual odometry estimate.
Alpha channel is currently 7 bits due to use of signed ints.
Would prefer switching to unsigned, and using 8 bits of alpha.
Build all external source files into static libs, and replace them in the repo with these libs. Should not need to be compiling them as part of the project.
Currently SVO uses voxelization parameters to determine grid sizes, etc. It should be a standalone utility that can construct an octree from arbitrary update types.
Compute the distance between points in a point cloud to determine the resolution at which the octree is updated.
Create a CUDA rendering method that casts rays into an SVO to render.
Create a CUDA kernel that uses an intrinsic camera calibration matrix to calculate a vertex map, then creates a normal map from adjacent vertices.
Add OpenNI2 dependencies to the project, and create an interface that receives RGB-D images and copies them to GPU memory for use in CUDA.
Implement octree ray-tracing for rendering without voxel extraction.
The current SVO structure only uses the node pool from GigaVoxels. Use texture/surface memory to add a brick pool capable of hardware interpolation for ray/cone tracing.
Compute freespace keys and update off of them (not just end-points).
Add API function to SVO to allow camera rays to be used to update according to a sensor model. Use the alpha channel of the octree to store the net # hits, which can be used to reproduce log odds from only 8 bits.
The function needs to be device so it can be called by a kernel that parallelizes over the rays of an RGB-D image.
Currently only colors green. Add support for texture mapping for meshes where texture coordinates are available.
Detect where a node pool or brick pool exceeds its allowed size. At least elegantly error and exit the program rather than crashing. Ideally, create a new structure and copy the old data into it.
The brick pool is not supported in the new SVO. Bring it back. It will be useful for ray/cone tracing.
Use Least Recently Used (LRU) mechanism from GigaVoxels to copy unused octree data from GPU to CPU.
Current control cannot translate the origin effectively and takes multiple clicks and drags to accomplish large rotations.
Suggest using more standard WASD + mouse control commonly found in first-person video games.
Perform timing analysis on octree update process, and optimize things such as block/grid sizes to get better performance.
Keep track of bounding boxes accessed to determine what parts of the tree are least recently updated.
Hi Dave,
Great implementation! I would just like to confirm something.
After you have generated the normal map from a single depth frame, how is the normal map fused into the octree. Is it done by simply applying the current rotation matrix to each normal in the map and then setting the corresponding voxel's normal?
Thanks
Currently duplicate a cube to construct a new VBO using CUDA.
Would be more efficient to skip this and use OpenGL instanced drawing to just render the same cube vbo at each center with each color.
Perform iterative closest point calculation (in parallel with CUDA) using point correspondences. Perform Cholesky decomposition calculation on the CPU. Use the same minimization function as KinectFusion.
Create a CUDA kernel that determines whether two points are valid correspondences based on their vertex, normal, and color distances.
Determine whether the GPU octree exceeds a threshold and pull to CPU the portion that is LRU.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.