Skip to content

Conversation

@GoldenZephyr
Copy link
Contributor

@nathanhhughes This is an initial port of the merge tracker and cleanup functor interface changes. This compiles, but no idea yet if it actually runs. I am going to add the rest of the place and frontier changes in another branch on top of this.

Copy link
Collaborator

@nathanhhughes nathanhhughes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Some reminders for stuff we talked about in person to eventually clean up

* -------------------------------------------------------------------------- */
#pragma once
#include <gtsam/nonlinear/Values.h>
#include <spark_dsg/dynamic_scene_graph.h>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unneeded (handled by the dsg_types include)

target_dsg_->graph->mergeGraph(*source_graph_, merge_config);

std::vector<NodeId> active_nodes_to_restore;
for (auto& node : source_graph_->getLayer(DsgLayers::PLACES).nodes()) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess I missed this when we were looking at this earlier, but this should ideally be for all layers I think (or for some configurable list of layers), the places aren't the only thing this can happen to, it's just what we noticed while we were debugging the place deformation

Comment on lines 160 to 164
if (name == "surface_places") {
continue;
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reminder that we talked about moving this to be a flag in the update functors themselves instead of doing this here by hard-coding a functor name (that isn't tied to the actual layer the functor operates on)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What do you want this interface to look like? The base UpdateFunctor now gets an exhaustive merge flag?

} while (num_applied > 0);
}
if (info->loop_closure_detected && hooks.merge) {
LOG(WARNING) << "Updating all merge attributes for " << name;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably worth downgrading the logging severity here


// NOTE: the followings fails with hundreds of lines of errors about templates and
// threads:
// launchCallbacks(cleanup_hooks, info, *source_graph_, target_dsg_.get());
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Anything passed by reference to a std::thread constructor gets copied, the arg needs to be raw / shared pointer for this to work

#include "hydra/backend/update_frontiers_functor.h"

#include <config_utilities/config.h>
#include <spark_dsg/dynamic_scene_graph.h>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not needed

@nathanhhughes nathanhhughes force-pushed the feature/active_dsg_port branch from afcead2 to ec02400 Compare January 13, 2026 14:35
@nathanhhughes nathanhhughes merged commit de5b05e into develop Jan 13, 2026
2 checks passed
@nathanhhughes nathanhhughes deleted the feature/active_dsg_port branch January 13, 2026 20:54
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.

3 participants