emanuelev / supereight Goto Github PK
View Code? Open in Web Editor NEWsupereight: a high performance template octree library and a dense volumetric SLAM pipeline implementation
supereight: a high performance template octree library and a dense volumetric SLAM pipeline implementation
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. :)
Hi, good job. Do you have any plan to add those feature in below papers?
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;
Hi. I'm having some troubles understanding the buildAllocationList function. What is the difference between voxel and voxelPos?
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.
When make
, an error occurs:
supereight/se_denseslam/src/bfusion/rendering_impl.hpp:40:36: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
How can I fix this?
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.
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"
},
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:
Thank you very much in advance.
Best regards,
Yoshua
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.