Skip to content

Active Window Change Detection Implementation#30

Open
MultyXu wants to merge 27 commits into
dcistfrom
feature/active_window_cd
Open

Active Window Change Detection Implementation#30
MultyXu wants to merge 27 commits into
dcistfrom
feature/active_window_cd

Conversation

@MultyXu

@MultyXu MultyXu commented Jan 24, 2026

Copy link
Copy Markdown
Collaborator

Basic function to detect removed objects in the current map. Not extensively tested due to ground truth trajectory issue (still working on it). Changed files are only active_window_change_detector, while all other changes are from the Future commit.

Note: started this PR to track changes and identify obvious code style issues or bugs in the early stage. Also not sure how to handle the Future commit in this case.

@MultyXu
MultyXu changed the base branch from main to dcist January 26, 2026 15:01

@Schmluk Schmluk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Hi @MultyXu ,

Couple initial comments below. Overall the code style and approach looks good! Hope that helps, let me know if you have questions!


ActiveWindowChangeDetector::ActiveWindowChangeDetector(const Config& config)
: config(config::checkValid(config)) {
LOG(INFO) << "[Khronos Active Window Change Detector] Initialized with prior map path: "

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I assume these are debug prints that you will remove? In general it is good to have modules as silent as possible. This is what the verbosity is for, if you want to turn up the verbosity of specific modules it's easiest to inherit from VerbosityConfig (in hydra/utils/logging.h) and use the MLOG macro (extended version of Khronos's CLOG, which will eventually be replaced)

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

I'm currently using CLOG mostly for other logging. Do we want to move everything to MLOG right now?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

For new stuff, yeah. It should also let you fold the the [Khronos Active Window Change Detector] prefix into the config (e.g., like this). No one really has needed / wanted to go update all of khronos to use the new macros though (and most of Hydra still doesn't use it either)

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

However, the DCIST Hydra version does not have this update (see this). See also the latest commit; I try to use MLOG, but the feature is limited.

Comment thread khronos/src/active_window/change_detection/active_window_change_detector.cpp Outdated
Comment thread khronos/src/active_window/change_detection/active_window_change_detector.cpp Outdated
Comment thread khronos/src/active_window/change_detection/active_window_change_detector.cpp Outdated
Comment thread khronos/src/active_window/change_detection/active_window_change_detector.cpp Outdated
Comment thread khronos/src/active_window/change_detection/active_window_change_detector.cpp Outdated
for (const auto& [node_id, node] : objects_layer.nodes()) {
const auto& attrs = node->attributes();
// Transform position from prior map frame to current map frame
const Point position_in_current = transformPriorToCurrentFrame(attrs.position);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Minor: In the future we can also consider caching that transform in the prior DSG (i.e., you transform the entire DSG once instead of every time you query). Fine to keep for now, I would do optimizations later.

@MultyXu

MultyXu commented Feb 4, 2026

Copy link
Copy Markdown
Collaborator Author

Now, the removed objects will be visualized with a red bounding box.

@MultyXu

MultyXu commented Mar 3, 2026

Copy link
Copy Markdown
Collaborator Author

Current implementation should contain:

  1. Detect removed objects within the active window
  2. Register the prior map to the current session based on roman loop closure through icp

@MultyXu
MultyXu force-pushed the feature/active_window_cd branch from 190470d to 2ad95ec Compare March 22, 2026 19:50
@MultyXu
MultyXu force-pushed the feature/active_window_cd branch from 121585d to 4e0800b Compare April 23, 2026 00:10
MultyXu added 18 commits June 29, 2026 15:48
- loading prior map
- function to set prior->current map transform
- function to filter prior object node in current voxel map (by centroid)
- Call function to check object vertices in voxel map (if high confidence free space)
…k. Later, it should be move to be a sink for the change detector sink
…ransform function through config uitilities creation.
- But, RAABB does not do merge well
- Per frame add/detect vis is noisy.
@MultyXu
MultyXu force-pushed the feature/active_window_cd branch from c497499 to 61481cc Compare July 1, 2026 21:18
MultyXu added 4 commits July 8, 2026 21:43
- Nan depth values are forward to the module producing Nan bounding boxes
- Filter out Nan value when loading frame data
- Test tracker association now saves the reprojected mask
- Instance forwarding now to Nan filtering
- Red for current frame mask, green for reprojected mask, blended yellow for intersecting pixels.
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