Coder Social home page Coder Social logo

emanuelev / supereight Goto Github PK

View Code? Open in Web Editor NEW
197.0 197.0 50.0 829 KB

supereight: a high performance template octree library and a dense volumetric SLAM pipeline implementation

CMake 1.43% Makefile 0.11% C++ 94.40% C 0.07% Python 2.94% Objective-C 0.92% Shell 0.08% TeX 0.04%

supereight's People

Contributors

emanuelev avatar juantarrio avatar nilsiism avatar sotpapathe 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

supereight's Issues

CMake >= 3.10 is not required

Hi, thanks for the great work!
I just verified on my Ubuntu 16.04 desktop that the code can be compiled with CMake 3.5.1. :)

About Version 2

Hi, good job. Do you have any plan to add those feature in below papers?

  1. Adaptive-resolution octree-based volumetric SLAM. 3DV 2019.
  2. Multi-Resolution 3D Mapping With Explicit Free Space Representation for Fast and Accurate Mobile Robot Motion Planning. RA-L, 2021.

voxels near the camera are not modeled

Hi Emanuele, when I was trying with OFusion, I found that during integration only voxels near the depth points are updated, while we actually need all voxels along the ray from the camera be updated to model the free space for navigation. I think this was caused by the step setting when building the octant list. The step size near the camera seems to be too large that most blocks are skipped. So I change it from 30voxelSize to 8voxelSize to make sure all blocks along the ray can be processed, as shown below. Do you think it would be a proper fix for this issue? Thanks!

in compute_stepsize in bfusion/alloc_impl.hpp:

  if(dist_travelled < hf_band) new_step = voxelSize;
  else if(dist_travelled < hf_band + half) new_step = 10.f * voxelSize; 
  else new_step = 30.f * voxelSize;

-->

  if(dist_travelled < hf_band) new_step = voxelSize;
  else new_step = 8.f * voxelSize;

Understand buildAllocationList

Hi. I'm having some troubles understanding the buildAllocationList function. What is the difference between voxel and voxelPos?

Simplifying pipeline configuration

Hi! The 4 pipeline functions of DenseSLAMSystem (preprocessing, integration, tracking raycasting) need input parameters already stored in a Configuration object which is a member of DenseSLAMSystem. Wouldn't it be simpler if they received these parameters directly from the private member? A set and get member function pair could be added to allow changing the configuration during runtime. I think this would simplify the pipeline usage. Also it might make sense to change Configuration from a struct to a class so that default configuration options are set on creation. Any feedback? I could start implementing this.

Is this repo superseded by supereight2?

I think this bitbucket repo supersedes this repo https://bitbucket.org/smartroboticslab/supereight2/src/master/

Please let me know if I am incorrect. Need to compare my work to the paper:

N. Funk, J. Tarrio, S. Papatheodorou, M. Popović, P. F. Alcantarilla, and S. Leutenegger, “Multi-Resolution 3D Mapping With Explicit Free Space Representation for Fast and Accurate Mobile Robot Motion Planning,” IEEE Robotics and Automation Letters, vol. 6, no. 2, pp. 3553–3560, Apr. 2021, doi: 10.1109/LRA.2021.3061989.

Performance is better without OpenMP?

Hi Emanuele, I found that the overall time performance is much better when WITH_OPENMP=false. On my desktop with i7-7820X, the SDF demo runs at 4.6 FPS with OpenMP while it runs at 9.1 FPS without OpenMP. Part of the results are as below. Could you post the whole performance results at your side for comparison? Thanks a lot!

WITH_OPENMP=true:
"mm2metersKernel": {
"mean": "8893869.2687074821",
"std": "1691929.2149056951",
"min": "25998.0000000000",
"max": "32270757.0000000000",
"sum": "7844392695.0000000000"
},
"halfSampleRobustImageKernel": {
"mean": "10326806.1020408161",
"std": "3553901.1655044304",
"min": "8919.0000000000",
"max": "36950793.0000000000",
"sum": "18216485964.0000000000"
},
...
"preprocessing": {
"mean": "0.0089702493",
"std": "0.0016953426",
"min": "0.0000605290",
"max": "0.0323095471",
"sum": "7.9117598654"
},
"tracking": {
"mean": "0.1326733566",
"std": "0.0442048178",
"min": "0.0019568520",
"max": "1.3610136160",
"sum": "117.0179004788"
},
"integration": {
"mean": "0.0710610275",
"std": "0.0186953274",
"min": "0.0038445570",
"max": "0.3619597111",
"sum": "62.6758262888"
},
"raycasting": {
"mean": "0.0163300194",
"std": "0.0020053755",
"min": "0.0000001560",
"max": "0.0433384860",
"sum": "14.4030771095"
},
"rendering": {
"mean": "0.0265201778",
"std": "0.0048889097",
"min": "0.0001001031",
"max": "0.0724005561",
"sum": "23.3907968287"
},
"computation": {
"mean": "0.2290346528",
"std": "0.0501881107",
"min": "0.0226851749",
"max": "1.4803778040",
"sum": "202.0085637424"
},
"total": {
"mean": "0.2558666112",
"std": "0.0509410872",
"min": "0.0313975910",
"max": "1.5172278449",
"sum": "225.6743510525"
},

WITH_OPENMP=false:
"mm2metersKernel": {
"mean": "145576.2755102041",
"std": "22215.8069821164",
"min": "64662.0000000000",
"max": "457493.0000000000",
"sum": "128398275.0000000000"
},
"halfSampleRobustImageKernel": {
"mean": "105859.2176870748",
"std": "37192.0747287784",
"min": "18370.0000000000",
"max": "509489.0000000000",
"sum": "186735660.0000000000"
},
...
"preprocessing": {
"mean": "0.0001759651",
"std": "0.0000242558",
"min": "0.0000818730",
"max": "0.0006813391",
"sum": "0.1552012601"
},
"tracking": {
"mean": "0.0195451339",
"std": "0.0017705420",
"min": "0.0032117841",
"max": "0.0425780261",
"sum": "17.2388080616"
},
"integration": {
"mean": "0.0233653832",
"std": "0.0010111775",
"min": "0.0160079770",
"max": "0.0484527430",
"sum": "20.6082680026"
},
"raycasting": {
"mean": "0.0565673381",
"std": "0.0029404295",
"min": "0.0000001891",
"max": "0.0917102970",
"sum": "49.8923921852"
},
"rendering": {
"mean": "0.0010913244",
"std": "0.0008543340",
"min": "0.0004929281",
"max": "0.0955321430",
"sum": "0.9625481515"
},
"computation": {
"mean": "0.0996538203",
"std": "0.0039080397",
"min": "0.0315277659",
"max": "0.1455313320",
"sum": "87.8946695095"
},
"total": {
"mean": "0.1010480457",
"std": "0.0039370695",
"min": "0.0323027510",
"max": "0.1562222490",
"sum": "89.1243762650"
},

Performance of the library in real environments

Hi Emanuele,
This is a great library, thank you very much for sharing and maintaining it.

I have some questions about the performance of the library in real environments. I hope it is OK that I ask them here, as I couldn't find any mailing list.

I would be particularly interested in knowing about:

  1. The types of environments in which you have tested the library.
  2. If you think that the choice of sensor and sensor model could affect the mapping process for K or O-fusion.
  3. How much memory do you expect an octree to take in memory? Do you have a measure of the computational complexity of each process?
  4. Resolutions that you've tested and found usable for real-time SLAM.
  5. If you have measured the reconstruction error of your reconstructions, and how.
  6. Any particular suggestions or aspects that you would like to see improved.

Thank you very much in advance.

Best regards,
Yoshua

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.