alfred-mls-nav on the single DimSlam module - #3597
Draft
jeff-hykin wants to merge 21 commits into
Draft
Conversation
Codecov Report❌ Patch coverage is @@ Coverage Diff @@
## jeff/fix/ray_tracing_tf #3597 +/- ##
===========================================================
+ Coverage 71.70% 75.92% +4.22%
===========================================================
Files 1329 1234 -95
Lines 131490 119495 -11995
Branches 12097 11142 -955
===========================================================
- Hits 94287 90731 -3556
+ Misses 34097 25676 -8421
+ Partials 3106 3088 -18
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 160 files with indirect coverage changes 🚀 New features to boost your workflow:
|
jeff-hykin
force-pushed
the
jeff/feat/alfred_dim_slam
branch
from
August 21, 2026 10:48
338aa41 to
2259bc2
Compare
jeff-hykin
changed the base branch from
jeff/feat/dim_slam
to
jeff/fix/ray_tracing_tf
August 21, 2026 10:48
jeff-hykin
force-pushed
the
jeff/fix/ray_tracing_tf
branch
from
August 21, 2026 22:47
c8e8540 to
c256a9e
Compare
The camera pointcloud was a 5 fps stand-in on the lidar stream and needed colour streaming to assemble at all. DimSlam's depth_cloud follows the depth frame rate and carries the range gate, so RayTracingVoxelMap consumes it directly and the camera stops assembling a pointcloud nothing reads.
…intcloud" This reverts commit c55bb83.
The camera's python pointcloud assembly tops out near 5 Hz regardless of pointcloud_fps, and the full-resolution depth_cloud drowned the mapper. DimSlam now publishes the cloud range-gated at 6 m and 3x3-median decimated (42 mm pitch at the gate, under the 50 mm voxel), and RayTracingVoxelMap consumes it in place of the camera pointcloud.
jeff-hykin
force-pushed
the
jeff/feat/alfred_dim_slam
branch
from
August 21, 2026 22:48
b0e9b0b to
c75734b
Compare
The multiprocessing resource tracker exits only once every copy of its keep-alive fd is closed, and its __del__ waits for that during finalization. rerun_bindings.spawn leaks inheritable fds into a viewer that outlives the run, and the forkserver holds a copy of its own; either one hangs stop() forever. Spawn the viewer through Popen, which closes fds above 2, and terminate the forkserver outright rather than waiting on an EOF that cannot arrive.
alfred-mls-nav carried the whole vision-only stack inline, so anything that wanted to run it against something other than the robot had to copy it and drift. vis_nav holds every sensor-independent module -- DimSlam, the ray tracing voxel map, MLS planning, Dan's planner and controller -- and alfred-mls-nav is now just that plus the RealSense and high-level drivers. DimSlam gains the depth2depth fields the stack passes it, so the decimated cloud is built from the densified depth image rather than the raw one.
AlfredReplay publishes a recording's cameras, IMU and wheel odometry onto the same stream names the live drivers use, so the blueprint is the replay source plus vis_nav verbatim -- a replay exercises the code a real run does. Both imagers are zipped rather than scheduled apart: under decode load they drift past the tracker's 1 ms skew limit and the pair is rejected. Recorded tf edges under odom/map/visual_odom are dropped so the replayed filter owns base_link instead of it having two parents. Each stream is paced against wall time on its own thread, so a consumer slower than the recording stretches the run by an amount nothing can predict; a done-file marks the point where every stream has drained, and a periodic line reports the achieved rate and the spread between the leading and trailing stream, which is what shows up downstream as images older than the tracker's replay buffer.
…lock A slow consumer used to pull its stream ever further behind the anchor, something a live sensor can never do. Frames whose slot has passed are now dropped (decode deferred so drops cost a db fetch, not an image decode), paced by a per-subscription thread with chunked sleeps because macOS timer coalescing multiplies a background process's sleep requests severalfold. Alfred stereo is paired by stamp instead of arrival order, since uncoordinated drops would misalign an ordinal zip forever.
The whole-repo flake input hash changes with any commit, invalidating the src derivation even though the build only consumes two crates from it. Re-copying those crates through builtins.path gives them content-addressed store paths, so the binary is reused until the crates themselves change.
The __init__ lock was immediately replaced in main(), the max(hz, 1e-3) guarded a config value that is never zero, and the poll docstring repeated what now lives as comments at the negation and twist sites.
portal ships in the misc extra, so a top-level import breaks blueprint validation tests in environments without it.
dimos.memory.transform/type/store no longer exist in the tree, so these imports failed at runtime and under mypy.
… instead of a pinned rev
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on jeff/feat/dim_slam and jeff/fix/ray_tracing_tf; final branch of the stack.