Giter Club home page Giter Club logo

rgb-d-slam's People

Contributors

baptistehudyma 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

Watchers

 avatar  avatar  avatar

rgb-d-slam's Issues

use ancient matched features to refind matches

When a match is found with an old feature (better covariance then the currently observed features, and not matched for a long time), retry the matching operation to capture older features.

Ideas:

  • Find a pose using only old features (loop closing pose)
  • update the position of the observed features with the loop closure

Optimize the depth map to matrix process

The conversion of depth map to a boxed matrix representation takes 1/3 of the global performances, and should be optimized.
It is used only for primitive detection.

Two options:

  • Extract primitives with an undistorted depth map, and project them in RGB camera space
  • Optimize the matrix creation by removing unnecessary loops

Compute a pose rotation variance

The output variance of our program does not contain a rotation variance for the trajectory.
We should compute it and keep it along side the position variance.

Use feature triangulation

When no depth is available for a feature, use a form of triangulation to estimate it's missing parameters (usually: depth)

Points features can be stored as Inverse Depth Represantation.

Convert cylinders to superquadrics

Convert the current cylinder representation to a superquadric form.

  • Separate treatment of places and cylinders
  • Change the primitive projection functions

use feature covariance in optimization process

During the optimization process, a feature with a better variance should be more important to the final result.

A feature with a worse covariance should not be taken as seriously during optimization.

Implement a global map

When features are lost and cannot be tracked into the local map, transfer them to a global map.

The global map must:

  • Be updated efficiently (eg: when a loop closing occurs)
  • Allow for local and global descriptors (to detect loop closures)
  • Allow for the update of the local map when a global optimization is found
  • be limited in RAM. We do not want to fill the computer's memory

The global map could be a :

  • A mesh, handled as in a video game
  • An octree (res 1-5m), where each cubes can have a dedicated descriptor
  • A keyframe based graph: every SLAM out there are using this format, with bundle adjustment, but I find it inelegant

Detect moving features

Detect when a feature has a motion relative to the camera, to exclude it from the pose optimization process.

  • Detect moving points
  • Detect moving lines
  • Detect moving planes
  • Detect moving superquadrics

-> Iterative RANSAC has some promising results

optimize container types

Optimize all containers uses

  • replace maps by sorted vectors when needed
  • reserve container size beforhand
  • Reuse allocated containers

Handle lines as features

For now, lines are only detected (as a preliminary work).
They should be added to the feature system :

  • Tracked
  • Matched
  • Handled in local map

Use advanced camera models

Replace the pinhole camera model with a generic class that allow the user to use any type of camera as long as we can define generic mathematical models for those cameras.

It's already possible to do that for pinhole and fisheye cameras, maybe more

Detect more forms of superquadrics

Using the detected proto-planes features, search for closed shapes that qualifies as superquadrics.

  • Use a RANSAC fitting based on L-M optimization

Use PNP in Ransac process

For now, the RANSAC process uses the same optimization as the global optimization.
Using a dedicated PNP algorithm could improves performances.

Allow a merge of local map points

If two map points (or stagged an map point) are identified as being the same, they should be merged.

  • Implement a system to merge two points in the local map
  • Merge their covariance matrix
  • Merge their tracking values

The current system cannot detect points at the same coordinates, but modifying the _keypointMaskDiameter parameter to 1 can produce some overlapped points (for testing only)

Use primitives in optimization process

We should use detected primitives in world space in the RANSAC and global optimization to improve performances and reliability.

  • Implement a primitive projection system
  • Add primitives to the optimization process

Rework the motion tracking model

The motion tracking model is not acting as expected (erratic and large unrealistic movements).
It should be replaced by a more stable model (Extend Kalman filter is a good candidate)

Add plane convex hull in process

  • Detect the borders of an observed plane

  • store border points with the plane

  • update those points with new detections of planes

  • Find a way to store the points coordinates relative to the plane parameters

Transform primitive to world coordinates

Primitives are stored as a camera base representation (in a camera centered space).
To use them in global optimization, we should transform the planes and cylinders (for now) into a world representation.

  • Need to think about a way to handle the primitive pixel mask in world space
  • Need to adapt the matching technique to fit the world transformation

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.