Skip to content

Conversation

@lpanaf
Copy link
Collaborator

@lpanaf lpanaf commented Jul 3, 2025

No description provided.

@GibsDev
Copy link

GibsDev commented Sep 25, 2025

#201 (comment) continued

I discovered that you need to make sure to set the translation to NaN for --BundleAdjustment.optimize_rig_poses to work. Earlier in my script I am setting the approximate rotation and translation for the rig. I was setting 0's for the translation, but it needs to be NaNs instead.

The zeroed out translation worked with colmap, so it might be good to keep that behavior with glomap to keep it consistent and prevent other people from running into this problem.

@lpanaf
Copy link
Collaborator Author

lpanaf commented Sep 28, 2025

Hi @GibsDev, thanks for sharing your experience. Do you mind sharing some data so that we can play around with it? If you set the translation to be NaN, glomap will try to estimate the translation from scratch, so you can observe the difference. However, we expect it to optimize together with other properties in the bundle adjustment part, which should behave similarly to colmap.

@GibsDev
Copy link

GibsDev commented Oct 7, 2025

I'm afraid I don't have a dataset I can share at the moment without special permission.

In further testing I discovered that the rig estimation using glomap was not as effective/accurate as colmap. In one of my test datasets, I was getting 0.84px mean reprojection error with colmap and upwards of 2.3px mean reprojection error with glomap when allowing them to calculate the rig poses from "scratch".

However, when I manually fed the rig poses into the rig config, glomap actually managed to beat colmap for mean reprojection error at 0.75px!

@lpanaf
Copy link
Collaborator Author

lpanaf commented Oct 13, 2025

Thank you @GibsDev, for sharing your experience. I just found a bug in my previous implementation with --optimize_rig_poses=1. I fixed it, and I hope it works as expected now.

@GibsDev
Copy link

GibsDev commented Oct 14, 2025

I'm excited to try out the new changes!

I did not post about it here, but during further testing I also experienced an issue where almost all of the points were being filtered out by the time the mapper completed, so I'm glad to see that there were some changes related to that as well.

@GibsDev
Copy link

GibsDev commented Oct 15, 2025

Results have been fantastic in my testing so far! Being able to seed the rig rotation and translation with a very good estimate and then allowing it to refine it seems to be working really well!

One thing I discovered after my last post was that even though I was getting better mean reprojection error by hard coding in the relative rig poses with some rough calculations. The overall "convergence" wasn't as good for training gaussian splats. So refining the rig poses is still necessary, or you need to have much more accurate rig poses than what I was using.

The changes to the pruning have also been beneficial. I have one dataset that previously was failing about 80% of the time due to all of the tracks being filtered out (without changing any settings between runs). Maybe I'm just getting lucky, but it seems to be much more stable!

Well done on this!

@ahojnnes ahojnnes force-pushed the lpanaf/migrate_colmap branch from 2c4601f to 8d637c6 Compare October 26, 2025 18:55
@ahojnnes ahojnnes enabled auto-merge (squash) October 30, 2025 09:52
@ahojnnes ahojnnes merged commit 0edb1b8 into main Oct 30, 2025
8 checks passed
uptycs-rmack pushed a commit to uptycs-rmack/glomap that referenced this pull request Jan 1, 2026
* rigged global positioning. Not debugged yet

* compilation debugged

* the rigged GP debugged

* debug code

* dbugging rig GP

* rig rotation averaging implemented

* minor

* rigged bundle adjustment

* rigged pipeline

* largest connect componenet establishment with rigs

* test entry point

* remove unnecessary dependency

* add support for relative pose estimation only

* change the snapshot logic

* minor

* migrate to COLMAP 3..12 (with rig support)

* refactor rotation averaging. RIGGED version not working yet

* d

* rigged rotation averaging debugged. The convergence is poor.

* rigged global positioning

* minor

* add stratefied rotation averaging for initialization

* rotation initializer

* gravity refinement with rig support

* unit test for mapper. Include additional non-trivial rig test

* unit test for RA. Add test for rig support

* add gravity aligned RA for rigs

* move the gravity property to frames

* add frame struct

* pose io with gravity support

* d

* remove the old version

* rename the rigged version back to normal

* name back the rigged version to default

* normalization with rig support

* cleanup and add support for cam-to-cam constraints

* add reconstruction normalization

* cleanup

* f

* d

* d

* f

* d

* d

* d

* d

* d

* skip unconnected images

* f

* Update glomap/controllers/global_mapper.cc

Co-authored-by: Johannes Schönberger <[email protected]>

* Update glomap/controllers/global_mapper.cc

Co-authored-by: Johannes Schönberger <[email protected]>

* renaming

* remove redundant files

* temp cam_from_world

* change version match to only consider the first two numbers

* changed todo

* renaming

* refactor the code so the is_registered is a frame property

* formulate the pruning with respect to frames

* m

* f

* d

* d

* Update to latest colmap and poselib

* Update glomap/estimators/cost_function.h

Co-authored-by: Johannes Schönberger <[email protected]>

* Update glomap/estimators/gravity_refinement.cc

Co-authored-by: Johannes Schönberger <[email protected]>

* Update glomap/estimators/gravity_refinement.cc

Co-authored-by: Johannes Schönberger <[email protected]>

* address minor issues

* clean up

* f

* d

* cleanup

* expose optimize_rig_poses in cli

* fix the bug for the reconstruction output when there are more than 1 cluster

* f

* make pair_id consistent with colmap

* fix the bug for ba with rig calibration

* f

* f

* stablize the reconstruction by removing nearly degenerate points

* d

* d

* d

* d

* d

* d

* d

* d

* d

* d

* d

* d

---------

Co-authored-by: Johannes Schönberger <[email protected]>
Co-authored-by: Johannes Schönberger <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants