Open3D
Open3D copied to clipboard
[WIP] Tensor reconstruction system upgrade: make fragments
This PR implements
- Information matrix computation for RGB-D odometry
- Easier-to-use pose graph wrapper in t-reconstruction system
- Explicit Long sequence splitter (into fragments)
- Module: RGB-D odometry, pose graph construction, and optimization
- Module: RGB-D integration
For the copyroom scene (5490 frames), on RTX 3060 & i7-11700 @ 2.5Hz
- Pose graph generation and optimization takes 107.961s for 55 fragments. (~ avg 50 FPS)
- TSDF integration takes 47.590s for 55 fragments. (~ avg 120 FPS)
- Example fragments:

To run the system, call
python examples/python/t_reconstruction_system/run_system.py --split_fragments --fragment_odometry --fragment_integration --path_dataset /path/to/dataset
Thanks for submitting this pull request! The maintainers of this repository would appreciate if you could update the CHANGELOG.md based on your changes.
@reyanshsolis Would you please kindly help me
- [ ] fix the docs (mainly for the information matrix),
- [x] verify the system on your machine on the lounge dataset,
- [x] make the config options consistent across files (
rgbd_odometry, integrate, split_fragments, run_system) (e.g. replace hard-coded scale factors (1000.0), depth_max (3.0), dist_threshold (0.07m) with config options), - [x] clean up the aforementioned files and make sure that they still function alone if the users directly use them.
Please mark the PR as read-to-review when they are done. In the meantime I will be working on global registration.
Thanks for the PR @theNded.
I will take care of the mentioned list. Also, I was trying to come up with a new design if possible such as:
- Currently, Registration::ICP and Odometry::RGBDOdometry basically compute transforms between two frames (btw unorganized pcd, or btw rgbd-image). If we can unify of make it more consistent, it might also serve as a unified interface for organized point-cloud through rgbd-pipeline.
- We can completely transfer
PoseGraph,Optimization methodswrapper to CPP tensor and add it as a pybind. Such that future implementation can just keep the component replacing, leaving the API/example code same.
I will continue working on this PR, but it might take some time.
@reyanshsolis Please postpone these proposals and finish my list first. These are easy tasks and can be finished soon. I want the system there first. This will make the verification of designs easier.
Finished rebasing, can be merged after double checking #5359.
@ssheorey several tests failed, 3 network issues, 1 tensor test error. Should be irrelevant to the PR itself. We can proceed to merge if possible. Then I can restart working on the registration part.