ethz-asl / voxgraph

Voxblox-based Pose graph optimization
BSD 2-Clause "Simplified" License
521 stars 69 forks source link

How to select dense mapping tool? #33

Closed robot-mh closed 4 years ago

robot-mh commented 4 years ago

Thanks for your amazing work. As there have voxblox/voxblox++/c-blox/voxgraph,how to choose which to use ? Than you. @alexmillane @ZacharyTaylor @ffurrer @michaelpantic @LBern

victorreijgwart commented 4 years ago

Hi robot-mh, These tools are mostly developed for different purposes, so it depends on your application. What would you like to use it for?

robot-mh commented 4 years ago

Hi robot-mh, These tools are mostly developed for different purposes, so it depends on your application. What would you like to use it for?

Hi,thanks for your reply. As the voxblox is also update every week. For dense mapping with loop closure, used for navigation, whitch would you recommend? And which for semantic dense mapping?

victorreijgwart commented 4 years ago

For dense mapping with loop closures, there would be c-blox and voxgraph. Both use submapping to achieve global consistency, but they align the submaps in different ways. C-blox gets its alignment from the pose graph of ORB-SLAM2 (which you have to run yourself in a different node). This means its loop closures will be vision-based and global. Voxgraph directly uses the ESDFs in the submaps to perform the alignment, so you don't need to run any external frameworks (e.g. no ORB-SLAM2). The alignment in voxgraph is local, but you can supply additional global loop closure constraints over a ROS topic. We're working on including global loop closures directly in voxgraph but it might take several more months before this becomes available. In general, I'd recommend trying voxgraph first since it's much easier to set-up, requires less computational resources, and is more accurate as long as there are no loops that are too big. For semantic dense mapping, the only framework that currently supports this is voxblox++. Voxblox creates rigid, monolithic TSDF/ESDF maps - so it does not offer a way to incorporate loop closures or semantics. But in addition to working as a standalone node, voxblox can also be used as a software library. This library forms the basis for voxblox++, c-blox, voxgraph, and several other packages that extend its features and serve different purposes. This is why they all still receive regular updates, and things like performance upgrades in voxblox, for example, also improve voxblox++/c-blox/voxgraph. I hope this helps to give a better overview. If you have any more questions please don't hesitate.

robot-mh commented 4 years ago

Hi victorreijgwart, Thanks for your long reply. What about dense mapping with color? voxgraph is not used 'mesh_use_color' interface, but voxblox support mutiple 'color_mode'.

victorreijgwart commented 4 years ago

Hi @robot-mh, It'd be possible to use voxgraph to map with color. At the moment the color_mode is hardcoded, but changing this should be a matter of adding a rosparam. Would you like to use this? If so I could add it.

robot-mh commented 4 years ago

Hi @victorreijgwart , I have read the code, especially with #31, thank you. By the way, there are many parameters with voxblox that voxgraph hardcoded. I have another question:Does this TSDF mapping method has the ability to precise dense mapping with color or semantic? such as tsdf_voxel_size := 0.02 ? Is there any depth camera recommend? Looking forward to your reply. Best.

victorreijgwart commented 4 years ago

Hi @robot-mh, Yes, the hardcoded params are a leftover from the development stage - where they were fixed to a specific use case. Thanks for reminding me, I'll open a PR to fix it this afternoon. Voxblox works with small voxels, but it's important to keep in mind that the computing cost increases very quickly when decreasing the voxel size (the complexity depends on the chosen voxblox integrator, but will typically be quadratic or worse). Do you intend to run it real-time? And what sort of CPU would you run it on? Regarding color, this is supported natively in voxblox and therefore also in voxgraph. You can find an example of what it'd look like with 5cm voxels here: https://youtu.be/N9p1_Fkxxro?t=148. For semantics, this is supported in voxblox++ but not in voxgraph. It should be possible to update voxgraph to use voxblox++, but this might take you a fair amount of time.

robot-mh commented 4 years ago

Hi @victorreijgwart , Which branch do you recommend for dense mapping with real RGBD camera with slam? such as realsense d435i and mynteye d1000. Best.