-
-
Notifications
You must be signed in to change notification settings - Fork 103
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Discontinuities in the Pose Graph #278
Comments
Hi, it would be great if you could provide your scripts and data so that we can reproduce your results. I am guessing that some hyperparameter tuning may be able to solve this problem. |
Thanks for your response. Will provide the repro scripts + data soon. Another question on that note, How can I freeze some nodes during optimization? For example, nodes A and B are connected by an edge, but I know that node A is a ground-truth and I don't want to change it. However, I'm still interested in changing B based on the constraint between A and B. |
Hi, given the use case, you have multiple options. |
For the 1) option, it is still a little bit unclear. My forward function looks like this:
Now if I want to make a node with Now |
Hi. How many static nodes do you have?
|
BTW, in the provided figure, seems the jump is also in the original trajectory before optimization? So this bug probably has nothing to do with PGO, and I'd recommend to double check the input data. |
Hey there. I can have more than one static node.
|
Thanks for your reply.
|
Thanks for such a quick response.
|
Hi,
|
Hi @VladimirYugay, class Model(nn.Module):
def __init__(self, *dim):
super().__init__()
self.pose = pp.Parameter(pp.randn_SE3(*dim))
def forward(self, poses):
error1 = ...
error2 = self.pose[0] - groundtruth
return error1, error2 For a runnable use case, refer to this test example. Note that this is not constraint optimization, this is just an API to augment the error terms. Constraint optimization will be in the next major release. |
🐛 Describe the bug
I use pose graph implementation and optimization from the examples.
When optimizing my own pose graph with an identity information matrix for the neighboring nodes, the resulting graph can have discontinuities. Under discontinuity, I mean really strong jumps between consecutive nodes in the graph.
On the attached picture you can see the ground-truth graph (GT), estimated graph, and a graph optimized with pypose. There's a huge jump at the very bottom of the image (6 dots)
When running PGO with G2O, there are no discontinuities like that.
I also checked that optimizers used in both G2O and pypose are the same.
Do you know any possible reason for such behavior?
Versions
Pypose version: 0.4.4
The text was updated successfully, but these errors were encountered: