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
Use Least Recently Used (LRU) mechanism from GigaVoxels to copy unused octree data from GPU to CPU.
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.
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 timing analysis on octree update process, and optimize things such as block/grid sizes to get better performance.
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.
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
Create a CUDA rendering method that casts rays into an SVO to render.
Compute freespace keys and update off of them (not just end-points).
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.
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.
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.
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.
Incorporate photometric ICP for visual odometry estimate.
The brick pool is not supported in the new SVO. Bring it back. It will be useful for ray/cone tracing.
Keep track of bounding boxes accessed to determine what parts of the tree are least recently updated.
Currently only colors green. Add support for texture mapping for meshes where texture coordinates are available.
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.
Create a CUDA kernel that determines whether two points are valid correspondences based on their vertex, normal, and color distances.
Compute the distance between points in a point cloud to determine the resolution at which the octree is updated.
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.
Create a CUDA kernel that uses an intrinsic camera calibration matrix to calculate a vertex map, then creates a normal map from adjacent vertices.
Implement octree ray-tracing for rendering without voxel extraction.
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.
Alpha channel is currently 7 bits due to use of signed ints.
Would prefer switching to unsigned, and using 8 bits of alpha.
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.