Giter Club home page Giter Club logo

mrob's People

Contributors

anastasiia-kornilova avatar g-ferrer-sk avatar iakov avatar konstantinpakulev avatar miloserdova-l avatar nagonch avatar nosmokingsurfer avatar

Stargazers

 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

mrob's Issues

Stdout when working with FGraph and graph.print(True) in Jupyter Notebook

Use case

When executing Fgraph code in Jupyter Notebook, the output of graph.print(True) is not in the cell output but in the global jupyter output -- that is uneasy to debug algorithm.

The expected behavior is to redirect stdout from C++ library to Python stdout -- in that case it will be captured by Jupyter and redirected to cell output.

Project file strucutre

Add external dependencies such as pybind and eigen as submodules. Installation requirements should be minimized to python3-dev,distutils (for pybind).

JNI bindings to java

For andriod apps. Here it should be better clarified which applications exactly can be used in this context.

add __version__ function into mrob python bindings

It would be great to have a function which returns the version of mrob python bindings:

For example:
import mrob mrob.__version__
should return something like:
0.0.3

All popular python libraries do so. For example:

import numpy
numpy.__version__
'1.15.4'

Licensing and publication

Preparing the repository for open access requires deciding on a license to use, update all files and creating a couple of more clear examples.
Any options?

estimate plane from point cloud

there is no need to reinvent the wheel every time in python...
Output, plane and point error, maybe other statistics such as conditioning number l_min/l_max?

Projective data association

in PCregistration. A method for projecting PC's into spherical/planar surfaces.
Then a method for DA given a pair of PCs, this could be a second step, both require exposure to the py interface.

Time profiling

Right now there is a function in common allowing for time profiling when manually set. Create an external compilation variable to allow time-profiling using this class.

Change FGraph structure

After #29 , there should be a new code structure. Proposals:

  1. Fgraph keeps the abstract classes plus common nodes and all factors are moved to their corresponding places, e.g., PCregistration, VO, IMU, etc.
  2. all included inside FGraph

Maybe it is not necessary to include a /factors' folder, this adds some clutter.

Create Surfels factor

Create a model for surfels: position + normal (radius) and observation functions relating points to factors. Usually this is implemented by marginalizing the current pose of observation and merging into the map of surfels (ElasticFusion, SUMA, etc). On this we would delay the marginalization and keep a trajectory. For small maps should be fine.
Add fusion option?

Deal with float arithmetic precision options for gcc compiler

By default, gcc compiler doesn't satisfy IEEE 754 standard on floating arithmetics (because standard compilator options do some optimizations for code generation). This may cause some side effects for math calculus on the boundary cases. Therefore projects with a lot of different math calculations should be carefully set up to avoid that problems and to have guarantees on the precision of calculations.

Some links that may help to investigate that issue:
https://gcc.gnu.org/wiki/FloatingPointMath -- common description
https://gcc.gnu.org/onlinedocs/gcc-6.2.0/gcc/Floating-point-implementation.html -- how the standard is currently implemented
https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html -- about optimization options (look for "float" keyword)

Time continious SLAM

Adapt the current FGraph to optimize over parametrized functions of trajectories and GPs (see notes)

Unit test

ideally, minimal external dependency

Ensure convention on residuals

The convetion to follow is:

  • Observations: r = z - h(x0)
  • Odometry: f(x_t-1,u) - x_t => r = x_t - f(x0,u)

Files looking good:

  • Anchors

Files not looking good:
-2poses2d (but works well on benchmarks)
-pose-landmark2d (it requires many iters from LM but converges...)
-pose-landmark3d (converges well)
-2pose3d (no convention)

What is this convention for SE3? Explain well in code comments

Posterior Covariance and Precision matrices

Create a method for calculating the posterior covariance only after solving an optimization problem. Also create py bindings.
NOTE: careful on passing by reference the matrix itself, which should live in eigen cpp and referenced to numpy.

SE3 velocities

create SE(3) plus linear velocities by augmenting RBT.

Add robust factors

Still not clear solution, should this be added to the base-abstract class factor.cpp, an option to use robust factors or specified at each particular factor. We can start with a simple Huble loss and create a family later.
Look for minimum structure solution.

Benchmark DS

Create examples of benchmarks (py) such as sphere, M3500 + others. Compare against others (in external project)

FGraph dense

Create a FGraph dense class, inheriting from FGraph (to change to FGraph structure) and optimizer

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.