Code Monkey home page Code Monkey logo

octree-slam's People

Contributors

davidkotfis avatar dkotfis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

octree-slam's Issues

LRU

Keep track of bounding boxes accessed to determine what parts of the tree are least recently updated.

Point correspondences

Create a CUDA kernel that determines whether two points are valid correspondences based on their vertex, normal, and color distances.

Improve Mouse/Keyboard Camera Control

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.

Brick Pool

The brick pool is not supported in the new SVO. Bring it back. It will be useful for ray/cone tracing.

Dynamic grid size

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.

SVO Paging

Use Least Recently Used (LRU) mechanism from GigaVoxels to copy unused octree data from GPU to CPU.

Normal data fusion in the octree

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

Out-of-core Management

Determine whether the GPU octree exceeds a threshold and pull to CPU the portion that is LRU.

Decouple voxelization and svo.

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.

Render cubes through OpenGL instancing

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.

Voxel ray casting.

Create a CUDA rendering method that casts rays into an SVO to render.

Add brick pool to SVO.

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.

Octree Free-space

Compute freespace keys and update off of them (not just end-points).

SVO resizing

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.

OpenNI Camera Interface

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.

Create sensor model SVO update

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.

Appropriate LOD

Compute the distance between points in a point cloud to determine the resolution at which the octree is updated.

Map Update Optimization

Perform timing analysis on octree update process, and optimize things such as block/grid sizes to get better performance.

Iterative Closest Point

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.