Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
773f37e
Remove unused code
aclauer Jul 15, 2026
b6842b3
Evaluator framework
aclauer Jul 15, 2026
97978aa
Auto dataset generation
aclauer Jul 15, 2026
44f19d2
Incremental tests as well
aclauer Jul 16, 2026
2ec00e2
Better guards and validation
aclauer Jul 16, 2026
2d2ef90
Manual selector
aclauer Jul 16, 2026
f8591cb
Turn off stuff by default
aclauer Jul 16, 2026
574110d
Default weight to 1 and run by tag
aclauer Jul 16, 2026
6f044d5
Redo the selector
aclauer Jul 16, 2026
3fba8ec
Diff against previous runs
aclauer Jul 16, 2026
78f1c32
Improvements
aclauer Jul 17, 2026
ce4cb9a
Updates
aclauer Jul 17, 2026
f4591ed
SF cases
aclauer Jul 17, 2026
3823aec
Merge branch 'main' into andrew/feat/nav-evaluator
aclauer Jul 18, 2026
03e95f7
Better visualization
aclauer Jul 18, 2026
5caf342
Better collision checking, hide more rerun things
aclauer Jul 20, 2026
d577f06
Final only for manual tests
aclauer Jul 20, 2026
e67d96f
Better auto tagging
aclauer Jul 20, 2026
595d9ec
Merge branch 'main' into andrew/feat/nav-evaluator
aclauer Jul 20, 2026
b1507dd
Remove bad code
aclauer Jul 20, 2026
f8d918e
Refactor and remove unused code
aclauer Jul 20, 2026
aff2a84
Add end time stamp, mostly hack around door closing
aclauer Jul 21, 2026
c4e75f2
Wip
aclauer Jul 22, 2026
2558e42
Better case pick stuff
aclauer Jul 22, 2026
ccef098
Merge branch 'main' into andrew/feat/nav-evaluator
aclauer Aug 3, 2026
51646b3
Add back some tests:
aclauer Aug 3, 2026
25fd70f
Switch to arbitrary planner pipeline so it's actually modular
aclauer Aug 3, 2026
b1d8180
Fixes
aclauer Aug 4, 2026
be6e226
Add a few tests
aclauer Aug 4, 2026
e698909
Merge branch 'main' into andrew/feat/nav-evaluator
aclauer Aug 4, 2026
1993921
Clean up code
aclauer Aug 4, 2026
faff113
Merge branch 'main' into andrew/feat/nav-evaluator
aclauer Aug 4, 2026
46eb1e7
More clean up
aclauer Aug 4, 2026
452f875
Match some colors
aclauer Aug 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions dimos/cli/dimos.py
Original file line number Diff line number Diff line change
Expand Up @@ -755,6 +755,11 @@ def send(
map_app.command("global")(_map_main)


from dimos.navigation.nav_3d.evaluator.cli import app as nav_eval_app

main.add_typer(nav_eval_app, name="nav-eval")


dataprep_app = typer.Typer(help="Build and inspect learning datasets from recordings")
main.add_typer(dataprep_app, name="dataprep")

Expand Down
5 changes: 1 addition & 4 deletions dimos/mapping/voxels/impl/packed.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,9 @@

import numpy as np

from dimos.mapping.voxels.keys import FIELD_BITS as _BITS, FIELD_MASK as _MASK, KEY_OFFSET as _BIAS
from dimos.msgs.sensor_msgs.PointCloud2 import PointCloud2

_BITS = 21
_BIAS = 1 << (_BITS - 1) # voxel coords in [-2^20, 2^20): +-52 km at 5 cm voxels
_MASK = (1 << _BITS) - 1


class PackedVoxels:
"""CPU voxel store: sorted int64 keys, 21 bits/axis, (x,y) in the high bits.
Expand Down
48 changes: 48 additions & 0 deletions dimos/mapping/voxels/keys.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Copyright 2026 Dimensional Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""The int64 voxel key layout shared by every packed voxel store.

Three 21-bit signed-biased indices, x in the high bits, so keys sort in the
same order as (x, y, z) and membership is a sorted-array search.
"""

from __future__ import annotations

from typing import TYPE_CHECKING

import numpy as np

if TYPE_CHECKING:
from numpy.typing import NDArray

FIELD_BITS = 21
# Voxel coords in [-2^20, 2^20): +-52 km at 5 cm voxels.
KEY_OFFSET = 1 << (FIELD_BITS - 1)
X_SHIFT = 2 * FIELD_BITS
Y_SHIFT = FIELD_BITS
FIELD_MASK = (1 << FIELD_BITS) - 1


def pack_indices(idx: NDArray[np.int64]) -> NDArray[np.int64]:
"""Pack biased (N, 3) integer voxel indices into sortable int64 keys."""
return (idx[:, 0] << X_SHIFT) | (idx[:, 1] << Y_SHIFT) | idx[:, 2]


def unpack_keys(keys: NDArray[np.int64]) -> NDArray[np.int64]:
"""Unbiased (N, 3) integer voxel indices, the inverse of pack_indices."""
return (
np.stack([keys >> X_SHIFT, (keys >> Y_SHIFT) & FIELD_MASK, keys & FIELD_MASK], axis=1)
- KEY_OFFSET
)
89 changes: 0 additions & 89 deletions dimos/navigation/nav_3d/evaluator/blueprints.py

This file was deleted.

143 changes: 143 additions & 0 deletions dimos/navigation/nav_3d/evaluator/case_manifests/china_office.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
dataset: china_office
cases:
- id: auto_00_up
start: [-10.2, 15.8, -0.48]
goal: [-8.12, 14.6, 2.56]
tags: [auto, stairs, up, long]
- id: auto_01_down
start: [-3.72, -4.6, 2.96]
goal: [0.04, 0.04, -0.4]
tags: [auto, stairs, down, long]
- id: auto_02_up
start: [4.12, -21.72, -0.48]
goal: [9.56, -14.28, 4.24]
tags: [auto, stairs, up, long]
- id: auto_03_down
start: [2.52, 10.84, 3.12]
goal: [5.64, 23.64, -0.24]
tags: [auto, stairs, down, long]
- id: auto_04_down
start: [10.44, -4.12, 4.16]
goal: [16.52, -32.28, -0.96]
tags: [auto, stairs, down, long]
- id: auto_05_up
start: [18.2, -20.6, -1.36]
goal: [-1.4, -14.2, 2.96]
tags: [auto, stairs, up, long]
- id: auto_06_down
start: [-4.6, 4.52, 6.32]
goal: [11.72, 6.36, -0.96]
tags: [auto, stairs, down, long]
- id: auto_07_down
start: [6.36, 2.6, 3.2]
goal: [15.4, -9.88, -1.28]
tags: [auto, stairs, down, long]
- id: auto_08_up
start: [7.72, -33.8, -0.72]
goal: [-3.32, 11.32, 2.88]
tags: [auto, stairs, up, long]
- id: auto_09_down
start: [12.2, -9.24, 4.16]
goal: [3.56, -7.72, -0.4]
tags: [auto, stairs, down, long]
- id: auto_10_down
start: [-7.4, 7.32, 2.8]
goal: [9.8, 14.04, -0.56]
tags: [auto, stairs, down, long]
- id: auto_11_down
start: [-2.52, 0.68, 4.0]
goal: [13.4, -1.16, -1.2]
tags: [auto, stairs, down, long]
- id: auto_12_down
start: [6.28, -2.04, 4.16]
goal: [3.32, 16.12, -0.24]
tags: [auto, stairs, down, long]
- id: auto_13_down
start: [-1.72, -9.72, 2.96]
goal: [5.64, -13.56, -0.4]
tags: [auto, stairs, down, long]
- id: auto_14_up
start: [7.48, -27.48, -0.48]
goal: [-6.2, 3.48, 2.88]
tags: [auto, stairs, up, long]
- id: auto_15_up
start: [19.8, -27.8, -1.12]
goal: [2.6, -16.2, 2.08]
tags: [auto, stairs, up, long]
- id: auto_16_up
start: [0.6, 6.6, -0.4]
goal: [2.04, -0.28, 3.12]
tags: [auto, stairs, up, long]
- id: auto_17_down
start: [4.28, 5.96, 3.12]
goal: [17.0, -15.48, -1.28]
tags: [auto, stairs, down, long]
- id: auto_18_down
start: [-4.6, 8.2, 6.56]
goal: [8.84, 18.84, -0.4]
tags: [auto, stairs, down, long]
- id: auto_19_up
start: [-8.84, 10.76, -0.48]
goal: [-1.4, -2.04, 3.12]
tags: [auto, stairs, up, long]
- id: auto_20_up
start: [14.6, -27.88, -0.24]
goal: [1.0, 13.56, 2.96]
tags: [auto, stairs, up, long]
- id: auto_21_down
start: [-7.4, 11.96, 3.04]
goal: [8.2, -17.32, -0.4]
tags: [auto, stairs, down, long, doorway, narrow]
- id: auto_22_up
start: [-0.36, -4.44, -0.4]
goal: [11.24, -6.76, 4.16]
tags: [auto, stairs, up, long]
- id: auto_23_up
start: [-0.28, 10.92, -0.4]
goal: [0.6, -12.52, 3.12]
tags: [auto, stairs, up, long]
- id: auto_24_flat
start: [12.52, -33.4, -0.8]
goal: [14.52, -5.96, -1.28]
tags: [auto, flat]
- id: auto_25_flat
start: [10.68, 9.88, -0.72]
goal: [5.24, 12.52, -0.24]
tags: [auto, flat]
- id: auto_26_flat
start: [19.16, -24.44, -1.36]
goal: [12.6, 2.68, -1.04]
tags: [auto, flat]
- id: auto_27_flat
start: [3.56, -18.36, 0.16]
goal: [8.92, -13.32, -0.32]
tags: [auto, flat]
- id: auto_28_flat
start: [-4.92, 11.0, -0.4]
goal: [10.6, -34.92, -0.8]
tags: [auto, flat]
- id: auto_29_flat
start: [-0.12, -17.08, 2.08]
goal: [2.76, 7.4, 1.6]
tags: [auto, flat]
- id: auto_30_flat
start: [6.04, -24.2, -0.48]
goal: [7.0, 14.12, -0.08]
tags: [auto, flat]
- id: auto_31_flat
start: [8.36, -30.44, -0.48]
goal: [18.28, -32.28, -0.96]
tags: [auto, flat]
- id: auto_32_flat
start: [11.32, 8.12, -0.88]
goal: [5.72, -9.72, -0.4]
tags: [auto, flat]
- id: neg_00
start: [5.0, 2.44, 3.2]
goal: [9.32, 5.24, 6.4]
tags: [manual, negative]
expect_fail: true
- id: manual_00
start: [13.88, 1.48, -1.04]
goal: [12.28, 8.6, -0.8]
tags: [manual, flat]
Loading
Loading