Conversation
Greptile OverviewGreptile SummaryThis PR replaces Key ChangesModule Replacement:
Behavioral Impact:
Transport Configuration:
Lost Functionality:
These features were experimental and not production-ready, as noted in the PR description. Integration PointsThe Confidence Score: 4/5
Important Files ChangedFile Analysis
Sequence DiagramsequenceDiagram
participant Robot as GO2 Robot
participant Nav as Navigation Module
participant Det as Detection3DModule (NEW)
participant Trans as LCM Transports
participant Fox as Foxglove/Visualization
Note over Det: Replaces ObjectDBModule which<br/>accumulated detections in memory
Robot->>Nav: color_image, pointcloud
Nav->>Det: global_map (remapped)
Det->>Det: Process frame detections
Note over Det: Detections processed per-frame<br/>No memory accumulation
Det->>Trans: detections (Detection2DArray)
Det->>Trans: annotations (ImageAnnotations)
Det->>Trans: scene_update (SceneUpdate)
Note right of Trans: scene_update now ENABLED<br/>(was commented out)
Det->>Trans: detected_pointcloud_0/1/2
Det->>Trans: detected_image_0/1/2
Trans->>Fox: Publish all detection outputs
Note over Det,Fox: Key difference: No persistent<br/>object tracking or memory growth
|
| detection = ( | ||
| autoconnect( | ||
| nav, | ||
| detectionDB_module( | ||
| detection3d_module( | ||
| camera_info=GO2Connection.camera_info_static, | ||
| ), | ||
| ) | ||
| .remappings( | ||
| [ | ||
| (ObjectDBModule, "pointcloud", "global_map"), | ||
| (Detection3DModule, "pointcloud", "global_map"), | ||
| ] | ||
| ) | ||
| .transports( | ||
| { | ||
| # Detection 3D module outputs | ||
| ("detections", ObjectDBModule): LCMTransport( | ||
| ("detections", Detection3DModule): LCMTransport( | ||
| "/detector3d/detections", Detection2DArray | ||
| ), | ||
| ("annotations", ObjectDBModule): LCMTransport( | ||
| ("annotations", Detection3DModule): LCMTransport( | ||
| "/detector3d/annotations", ImageAnnotations | ||
| ), | ||
| # ("scene_update", ObjectDBModule): LCMTransport( | ||
| # "/detector3d/scene_update", SceneUpdate | ||
| # ), | ||
| ("detected_pointcloud_0", ObjectDBModule): LCMTransport( | ||
| ("scene_update", Detection3DModule): LCMTransport( | ||
| "/detector3d/scene_update", SceneUpdate | ||
| ), | ||
| ("detected_pointcloud_0", Detection3DModule): LCMTransport( | ||
| "/detector3d/pointcloud/0", PointCloud2 | ||
| ), | ||
| ("detected_pointcloud_1", ObjectDBModule): LCMTransport( | ||
| ("detected_pointcloud_1", Detection3DModule): LCMTransport( | ||
| "/detector3d/pointcloud/1", PointCloud2 | ||
| ), | ||
| ("detected_pointcloud_2", ObjectDBModule): LCMTransport( | ||
| ("detected_pointcloud_2", Detection3DModule): LCMTransport( | ||
| "/detector3d/pointcloud/2", PointCloud2 | ||
| ), | ||
| ("detected_image_0", ObjectDBModule): LCMTransport("/detector3d/image/0", Image), | ||
| ("detected_image_1", ObjectDBModule): LCMTransport("/detector3d/image/1", Image), | ||
| ("detected_image_2", ObjectDBModule): LCMTransport("/detector3d/image/2", Image), | ||
| ("detected_image_0", Detection3DModule): LCMTransport("/detector3d/image/0", Image), | ||
| ("detected_image_1", Detection3DModule): LCMTransport("/detector3d/image/1", Image), | ||
| ("detected_image_2", Detection3DModule): LCMTransport("/detector3d/image/2", Image), | ||
| } | ||
| ) | ||
| ) |
There was a problem hiding this comment.
The G1 blueprints (unitree_g1_blueprints.py) still use ObjectDBModule and may experience the same memory accumulation crashes mentioned in the PR description. Consider applying the same fix to the G1 detection blueprint for consistency.
The G1 detection blueprint (lines 185-261 in unitree_g1_blueprints.py) uses both detection3d_module AND detectionDB_module together, which means it will still accumulate detections in memory indefinitely.
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
Devs have been running agentic go2, which crashes after a while due to objectdb being in a blueprint - it stores all detections permanently in mem, this is not a production ready module but an experiment, it's not viable as a direction for memory imo