Skip to content

feat(simulation): integrate BEHAVIOR with R1 Pro navigation and manipulation - #4194

Draft
TomCC7 wants to merge 4 commits into
cc/feat/webxr-audiofrom
feat/behavior-integration
Draft

TomCC7 wants to merge 4 commits into
cc/feat/webxr-audiofrom
feat/behavior-integration

Conversation

@TomCC7

@TomCC7 TomCC7 commented Sep 16, 2026

Copy link
Copy Markdown
Member

Problem and solution

Run BEHAVIOR/OmniGibson in DimOS without mixing Isaac Sim's Python 3.11 / NumPy 1 dependencies into the host environment. Connect the benchmark's 2026 R1 Pro to the existing navigation and manipulation stacks.

  • Add a Pixi-backed isolated runtime pinned to BEHAVIOR 3.9.2 and Isaac Sim 5.1, with explicit license acceptance and one-time asset setup.
  • Expose three RGB-D cameras with calibration, joint state, odometry and TF; base/joint commands; native actions; task evaluation/reset; and physical or symbolic primitives. Add control ownership and cancellation.
  • Add teleop, task and agentic blueprints, plus one behavior-r1pro blueprint connecting KronkNav, ControlCoordinator and ManipulationModule with the native Isaac viewport and Viser controls.
  • Load the evaluator's R1 Pro controllers and training-instance pose. Reuse hardware joint names and planning groups with the simulator's matching URDF. Require floor-supported, furniture-free spawning for scene-only teleop.
  • Let isolated runtimes own locked dependencies and install matching host code with --no-deps. Update ABC/LeRobot callers and package runtime sources without local assets or environments.

Integration fixes

The live proof required fixed-link robot self-filtering with cached Open3D distance queries, removal of MLS's 64-candidate start-snap cap, serialized manipulation shutdown, and Zenoh 1.10.1's loopback-discovery fix. The Nix pre-commit invocation uses Git filtering to exclude ignored simulator assets.

Run

After the one-time setup in docs/capabilities/simulation/behavior.md:

env -u WAYLAND_DISPLAY dimos --rerun-open native run behavior-r1pro
python -m dimos.simulation.behavior.demo_r1pro --headless --report /tmp/r1pro.json

The combined blueprint opens the native Isaac viewport, native DimOS Rerun viewer, and Viser manipulation controls. Rerun shows the voxel map, traversable surface, robot heading, goal and path beside all three cameras. Click a mapped floor point to navigate; engage the Keyboard Teleop overlay for WASD/QE control and Space/STOP. Manual takeover cancels navigation and clears the path. The Linux launch command unsets WAYLAND_DISPLAY to avoid the observed viewer hang. The automated proof navigates, stops, executes planned motion with each arm, then cancels and checks position hold.

Validation

  • 53 focused integration/self-filter/manipulation Python tests, 6 blueprint registry tests, 94 MLS tests and 140 native-module Rust tests passed.
  • Targeted mypy and all pre-commit hooks passed. This host required Rust compiler alignment with Clippy (RUSTC=/usr/bin/rustc, RUSTDOC=/usr/bin/rustdoc) and Nix flakes enabled.
  • Fresh unattended RTX 3090 / driver 590.48.01 headless proof: 0.661 m navigation displacement, 0.140 m goal error, stationary finish, both arms within 0.002 rad, cancellation hold drift 0.000013 rad, FK error about 5.3 mm.
  • Fresh native-viewer repeat passed: 0.655 m displacement, 0.146 m goal error, both arms within 0.001 rad. Verified the Isaac viewport and Viser HTTP server.
  • R1 Pro scene-only sensor proof passed in Rs_int: all three RGB-D cameras, joints/TF, both arms/grippers, 0.090 m base-command motion, 0.157 m native-action motion, stable height and expired-command hold.
  • Earlier isolated-runtime end-to-end scenarios, bootstrap/dataprep checks, wheel-content inspection, and R1 control-handoff GPU checks also passed.

Rerun control validation

  • 24 focused blueprint, viewer-protocol, movement-manager, and local-planner tests passed; targeted type checks passed.
  • Real native viewer clicks reached the planner; manual takeover cleared the path. Replaying the viewer protocol completed 1.20 m of navigation within 0.138 m of the goal, stopped with less than 0.000002 m hold drift, and accepted a fresh goal.
  • The final configuration repeated navigation, takeover/Stop, and fresh-goal checks successfully: 0.651 m displacement, 0.149 m goal error, stable hold, and 0.139 m fresh-goal error.
  • Headless navigation, both arms, and cancellation passed with the visualization modules included.
  • Duplicate clouds and depth images are excluded from Rerun; map/transforms are limited to 2 Hz, camera displays to 5 Hz, and viewer memory to 4 GB. These limits affect visualization only. Long sessions still produce memory-pressure warnings and can lag; they are not a latency guarantee.

Scope and remaining work

Localization uses simulator ground truth. Manipulation checks robot self-collision; the navigation map is not yet connected to its collision world. These proofs do not establish clutter-safe pick-and-place or official benchmark performance.

Earlier symbolic placement and physical grasp attempts failed; complete task success across reset and agentic execution remain unverified. The new R1 Pro navigation proof supersedes the earlier navigation failure. Keep this PR in draft.

Stacked on #4156 (cc/feat/webxr-audio), above ABC #4088.

Checklist

  • I have read and approved the CLA.

Agent: Codex (GPT-6)

@TomCC7
TomCC7 force-pushed the feat/behavior-integration branch from 4dccd8c to 542d0d2 Compare September 16, 2026 17:55
@TomCC7
TomCC7 changed the base branch from main to cc/feat/webxr-audio September 16, 2026 17:55
@TomCC7
TomCC7 added this pull request to stack #4160 September 16, 2026 17:56
@codecov

codecov Bot commented Sep 16, 2026

Copy link
Copy Markdown

❌ 13 Tests Failed:

Tests completed Failed Passed Skipped
5719 13 5706 215
View the top 3 failed test(s) by shortest run time
::dimos.simulation.behavior.test_r1pro_blueprint
Stack Traces | 0s run time
ImportError while importing test module '.../simulation/behavior/test_r1pro_blueprint.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
.../simulation/behavior/test_r1pro_blueprint.py:29: in <module>
    from dimos.simulation.behavior.blueprints import _navigation_goal, behavior_r1pro
.../simulation/behavior/blueprints.py:32: in <module>
    from dimos.manipulation.planning.utils.point_cloud_self_filter import PointCloudSelfFilter
.../planning/utils/point_cloud_self_filter.py:29: in <module>
    import yourdfpy  # type: ignore[import-untyped]
E   ModuleNotFoundError: No module named 'yourdfpy'
dimos.codebase_checks.test_blueprint_kwargs::test_blueprint_atom_kwargs_match_module_config[behavior-task]
Stack Traces | 0.004s run time
blueprint_name = 'behavior-task'
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xffc587d94680>

    @pytest.mark.parametrize("blueprint_name", _blueprint_params())
    def test_blueprint_atom_kwargs_match_module_config(
        blueprint_name: str, monkeypatch: pytest.MonkeyPatch
    ) -> None:
        """Fail when blueprint kwargs cannot be consumed by their target module."""
        # The multi-robot blueprints read ROBOT_IPS at import time.
        monkeypatch.setattr(global_config, "robot_ips", "192.0.2.10,192.0.2.11")
>       blueprint = _get_blueprint_or_skip(blueprint_name)

blueprint_name = 'behavior-task'
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xffc587d94680>

dimos/codebase_checks/test_blueprint_kwargs.py:96: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
dimos/codebase_checks/test_blueprint_kwargs.py:37: in _get_blueprint_or_skip
    return get_blueprint_by_name(blueprint_name)
        blueprint_name = 'behavior-task'
dimos/robot/get_all_blueprints.py:51: in get_blueprint_by_name
    module = __import__(module_path, fromlist=[attr])
        attr       = 'behavior_task'
        module_path = 'dimos.simulation.behavior.blueprints'
        name       = 'behavior-task'
.../simulation/behavior/blueprints.py:32: in <module>
    from dimos.manipulation.planning.utils.point_cloud_self_filter import PointCloudSelfFilter
        HardwareComponent = <class 'dimos.control.components.HardwareComponent'>
        HardwareType = <enum 'HardwareType'>
        ManipulationModule = <class 'dimos.manipulation.manipulation_module.ManipulationModule'>
        McpClient  = <class 'dimos.agents.mcp.mcp_client.McpClient'>
        McpServer  = <class 'dimos.agents.mcp.mcp_server.McpServer'>
        ModuleType = <class 'module'>
        RRTConnectPlannerConfig = <class 'dimos.manipulation.planning.planners.config.RRTConnectPlannerConfig'>
        ZenohTransport = <class 'dimos.core.transport.ZenohTransport'>
        __builtins__ = <builtins>
        __cached__ = '.../behavior/__pycache__/blueprints.cpython-312.pyc'
        __doc__    = 'R1 Pro teleop, navigation, manipulation, and task execution.'
        __file__   = '/home/runner/work/dimos/dimos/.../simulation/behavior/blueprints.py'
        __loader__ = <_frozen_importlib_external.SourceFileLoader object at 0xffc587d94650>
        __name__   = 'dimos.simulation.behavior.blueprints'
        __package__ = 'dimos.simulation.behavior'
        __spec__   = ModuleSpec(name='dimos.simulation.behavior.blueprints', loader=<_frozen_importlib_external.SourceFileLoader object at 0xffc587d94650>, origin='/home/runner/work/dimos/dimos/.../simulation/behavior/blueprints.py')
        autoconnect = <function autoconnect at 0xffc652649120>
        global_config = GlobalConfig(robot_ip=None, robot_ips='192.0.2.10,192.0.2.11', unitree_aes_128_key=None, xarm7_ip=None, xarm6_ip=None,...load_retries=2, dimos_upload_chunk_mb=None, dimos_upload_quiet_s=30.0, dimos_http_timeout=60.0, dimos_staging_dir=None)
        joint_trajectory_task = <function joint_trajectory_task at 0xffc62c54f880>
        math       = <module 'math' (built-in)>
        rr         = <module 'rerun' from '.../dimos/dimos/.venv/lib/python3.12.../rerun_sdk/rerun/__init__.py'>
        rrb        = <module 'rerun.blueprint' from '.../dimos/dimos/.venv/lib/python3.12.../rerun/blueprint/__init__.py'>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    # 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.
    
    """Robot-model point-cloud self exclusion and map-clear-mask generation."""
    
    from __future__ import annotations
    
    import asyncio
    from dataclasses import dataclass
    from functools import partial
    from io import BytesIO
    from typing import Any
    
    import numpy as np
    import open3d as o3d
    from pydantic import Field
    import trimesh
>   import yourdfpy  # type: ignore[import-untyped]
E   ModuleNotFoundError: No module named 'yourdfpy'

Any        = typing.Any
BytesIO    = <class '_io.BytesIO'>
Field      = <function Field at 0xffc668137600>
__builtins__ = <builtins>
__cached__ = '.../utils/__pycache__/point_cloud_self_filter.cpython-312.pyc'
__doc__    = 'Robot-model point-cloud self exclusion and map-clear-mask generation.'
__file__   = '.../planning/utils/point_cloud_self_filter.py'
__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0xffc587d94aa0>
__name__   = 'dimos.manipulation.planning.utils.point_cloud_self_filter'
__package__ = 'dimos.manipulation.planning.utils'
__spec__   = ModuleSpec(name='dimos.manipulation.planning.utils.point_cloud_self_filter', loader=<_frozen_importlib_external.Source...t 0xffc587d94aa0>, origin='.../planning/utils/point_cloud_self_filter.py')
annotations = _Feature((3, 7, 0, 'beta', 1), None, 16777216)
asyncio    = <module 'asyncio' from '.../usr/lib/python3.12/asyncio/__init__.py'>
dataclass  = <function dataclass at 0xffc66d5fa660>
np         = <module 'numpy' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/numpy/__init__.py'>
o3d        = <module 'open3d' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/open3d/__init__.py'>
partial    = <class 'functools.partial'>
trimesh    = <module 'trimesh' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/trimesh/__init__.py'>

.../planning/utils/point_cloud_self_filter.py:29: ModuleNotFoundError
dimos.robot.test_all_blueprints::test_blueprint_is_valid[behavior-agentic]
Stack Traces | 0.004s run time
blueprint_name = 'behavior-agentic'
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xff133a729c70>

    @pytest.mark.parametrize("blueprint_name", UBUNTU_BLUEPRINTS)
    def test_blueprint_is_valid(blueprint_name: str, monkeypatch: pytest.MonkeyPatch) -> None:
        """Validate blueprints that should import on the ubuntu-latest runner."""
        # The multi-robot blueprints read ROBOT_IPS at import time.
        monkeypatch.setattr(global_config, "robot_ips", "192.0.2.10,192.0.2.11")
>       _check_blueprint(blueprint_name)

blueprint_name = 'behavior-agentic'
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xff133a729c70>

dimos/robot/test_all_blueprints.py:112: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
dimos/robot/test_all_blueprints.py:86: in _check_blueprint
    blueprint = get_blueprint_by_name(blueprint_name)
        blueprint_name = 'behavior-agentic'
dimos/robot/get_all_blueprints.py:51: in get_blueprint_by_name
    module = __import__(module_path, fromlist=[attr])
        attr       = 'behavior_agentic'
        module_path = 'dimos.simulation.behavior.blueprints'
        name       = 'behavior-agentic'
.../simulation/behavior/blueprints.py:32: in <module>
    from dimos.manipulation.planning.utils.point_cloud_self_filter import PointCloudSelfFilter
        HardwareComponent = <class 'dimos.control.components.HardwareComponent'>
        HardwareType = <enum 'HardwareType'>
        ManipulationModule = <class 'dimos.manipulation.manipulation_module.ManipulationModule'>
        McpClient  = <class 'dimos.agents.mcp.mcp_client.McpClient'>
        McpServer  = <class 'dimos.agents.mcp.mcp_server.McpServer'>
        ModuleType = <class 'module'>
        RRTConnectPlannerConfig = <class 'dimos.manipulation.planning.planners.config.RRTConnectPlannerConfig'>
        ZenohTransport = <class 'dimos.core.transport.ZenohTransport'>
        __builtins__ = <builtins>
        __cached__ = '.../behavior/__pycache__/blueprints.cpython-312.pyc'
        __doc__    = 'R1 Pro teleop, navigation, manipulation, and task execution.'
        __file__   = '/home/runner/work/dimos/dimos/.../simulation/behavior/blueprints.py'
        __loader__ = <_frozen_importlib_external.SourceFileLoader object at 0xff133a6d7f50>
        __name__   = 'dimos.simulation.behavior.blueprints'
        __package__ = 'dimos.simulation.behavior'
        __spec__   = ModuleSpec(name='dimos.simulation.behavior.blueprints', loader=<_frozen_importlib_external.SourceFileLoader object at 0xff133a6d7f50>, origin='/home/runner/work/dimos/dimos/.../simulation/behavior/blueprints.py')
        autoconnect = <function autoconnect at 0xff138defd120>
        global_config = GlobalConfig(robot_ip=None, robot_ips='192.0.2.10,192.0.2.11', unitree_aes_128_key=None, xarm7_ip=None, xarm6_ip=None,...load_retries=2, dimos_upload_chunk_mb=None, dimos_upload_quiet_s=30.0, dimos_http_timeout=60.0, dimos_staging_dir=None)
        joint_trajectory_task = <function joint_trajectory_task at 0xff1367e70fe0>
        math       = <module 'math' (built-in)>
        rr         = <module 'rerun' from '.../dimos/dimos/.venv/lib/python3.12.../rerun_sdk/rerun/__init__.py'>
        rrb        = <module 'rerun.blueprint' from '.../dimos/dimos/.venv/lib/python3.12.../rerun/blueprint/__init__.py'>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    # 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.
    
    """Robot-model point-cloud self exclusion and map-clear-mask generation."""
    
    from __future__ import annotations
    
    import asyncio
    from dataclasses import dataclass
    from functools import partial
    from io import BytesIO
    from typing import Any
    
    import numpy as np
    import open3d as o3d
    from pydantic import Field
    import trimesh
>   import yourdfpy  # type: ignore[import-untyped]
E   ModuleNotFoundError: No module named 'yourdfpy'

Any        = typing.Any
BytesIO    = <class '_io.BytesIO'>
Field      = <function Field at 0xff139fa3b600>
__builtins__ = <builtins>
__cached__ = '.../utils/__pycache__/point_cloud_self_filter.cpython-312.pyc'
__doc__    = 'Robot-model point-cloud self exclusion and map-clear-mask generation.'
__file__   = '.../planning/utils/point_cloud_self_filter.py'
__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0xff1356373410>
__name__   = 'dimos.manipulation.planning.utils.point_cloud_self_filter'
__package__ = 'dimos.manipulation.planning.utils'
__spec__   = ModuleSpec(name='dimos.manipulation.planning.utils.point_cloud_self_filter', loader=<_frozen_importlib_external.Source...t 0xff1356373410>, origin='.../planning/utils/point_cloud_self_filter.py')
annotations = _Feature((3, 7, 0, 'beta', 1), None, 16777216)
asyncio    = <module 'asyncio' from '.../usr/lib/python3.12/asyncio/__init__.py'>
dataclass  = <function dataclass at 0xff13a8f1e660>
np         = <module 'numpy' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/numpy/__init__.py'>
o3d        = <module 'open3d' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/open3d/__init__.py'>
partial    = <class 'functools.partial'>
trimesh    = <module 'trimesh' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/trimesh/__init__.py'>

.../planning/utils/point_cloud_self_filter.py:29: ModuleNotFoundError
dimos.robot.test_all_blueprints::test_blueprint_is_valid[behavior-nav]
Stack Traces | 0.004s run time
blueprint_name = 'behavior-nav'
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xff138d57d9d0>

    @pytest.mark.parametrize("blueprint_name", UBUNTU_BLUEPRINTS)
    def test_blueprint_is_valid(blueprint_name: str, monkeypatch: pytest.MonkeyPatch) -> None:
        """Validate blueprints that should import on the ubuntu-latest runner."""
        # The multi-robot blueprints read ROBOT_IPS at import time.
        monkeypatch.setattr(global_config, "robot_ips", "192.0.2.10,192.0.2.11")
>       _check_blueprint(blueprint_name)

blueprint_name = 'behavior-nav'
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xff138d57d9d0>

dimos/robot/test_all_blueprints.py:112: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
dimos/robot/test_all_blueprints.py:86: in _check_blueprint
    blueprint = get_blueprint_by_name(blueprint_name)
        blueprint_name = 'behavior-nav'
dimos/robot/get_all_blueprints.py:51: in get_blueprint_by_name
    module = __import__(module_path, fromlist=[attr])
        attr       = 'behavior_nav'
        module_path = 'dimos.simulation.behavior.blueprints'
        name       = 'behavior-nav'
.../simulation/behavior/blueprints.py:32: in <module>
    from dimos.manipulation.planning.utils.point_cloud_self_filter import PointCloudSelfFilter
        HardwareComponent = <class 'dimos.control.components.HardwareComponent'>
        HardwareType = <enum 'HardwareType'>
        ManipulationModule = <class 'dimos.manipulation.manipulation_module.ManipulationModule'>
        McpClient  = <class 'dimos.agents.mcp.mcp_client.McpClient'>
        McpServer  = <class 'dimos.agents.mcp.mcp_server.McpServer'>
        ModuleType = <class 'module'>
        RRTConnectPlannerConfig = <class 'dimos.manipulation.planning.planners.config.RRTConnectPlannerConfig'>
        ZenohTransport = <class 'dimos.core.transport.ZenohTransport'>
        __builtins__ = <builtins>
        __cached__ = '.../behavior/__pycache__/blueprints.cpython-312.pyc'
        __doc__    = 'R1 Pro teleop, navigation, manipulation, and task execution.'
        __file__   = '/home/runner/work/dimos/dimos/.../simulation/behavior/blueprints.py'
        __loader__ = <_frozen_importlib_external.SourceFileLoader object at 0xff138dd32d20>
        __name__   = 'dimos.simulation.behavior.blueprints'
        __package__ = 'dimos.simulation.behavior'
        __spec__   = ModuleSpec(name='dimos.simulation.behavior.blueprints', loader=<_frozen_importlib_external.SourceFileLoader object at 0xff138dd32d20>, origin='/home/runner/work/dimos/dimos/.../simulation/behavior/blueprints.py')
        autoconnect = <function autoconnect at 0xff138defd120>
        global_config = GlobalConfig(robot_ip=None, robot_ips='192.0.2.10,192.0.2.11', unitree_aes_128_key=None, xarm7_ip=None, xarm6_ip=None,...load_retries=2, dimos_upload_chunk_mb=None, dimos_upload_quiet_s=30.0, dimos_http_timeout=60.0, dimos_staging_dir=None)
        joint_trajectory_task = <function joint_trajectory_task at 0xff1367e70fe0>
        math       = <module 'math' (built-in)>
        rr         = <module 'rerun' from '.../dimos/dimos/.venv/lib/python3.12.../rerun_sdk/rerun/__init__.py'>
        rrb        = <module 'rerun.blueprint' from '.../dimos/dimos/.venv/lib/python3.12.../rerun/blueprint/__init__.py'>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    # 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.
    
    """Robot-model point-cloud self exclusion and map-clear-mask generation."""
    
    from __future__ import annotations
    
    import asyncio
    from dataclasses import dataclass
    from functools import partial
    from io import BytesIO
    from typing import Any
    
    import numpy as np
    import open3d as o3d
    from pydantic import Field
    import trimesh
>   import yourdfpy  # type: ignore[import-untyped]
E   ModuleNotFoundError: No module named 'yourdfpy'

Any        = typing.Any
BytesIO    = <class '_io.BytesIO'>
Field      = <function Field at 0xff139fa3b600>
__builtins__ = <builtins>
__cached__ = '.../utils/__pycache__/point_cloud_self_filter.cpython-312.pyc'
__doc__    = 'Robot-model point-cloud self exclusion and map-clear-mask generation.'
__file__   = '.../planning/utils/point_cloud_self_filter.py'
__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0xff133a14bf50>
__name__   = 'dimos.manipulation.planning.utils.point_cloud_self_filter'
__package__ = 'dimos.manipulation.planning.utils'
__spec__   = ModuleSpec(name='dimos.manipulation.planning.utils.point_cloud_self_filter', loader=<_frozen_importlib_external.Source...t 0xff133a14bf50>, origin='.../planning/utils/point_cloud_self_filter.py')
annotations = _Feature((3, 7, 0, 'beta', 1), None, 16777216)
asyncio    = <module 'asyncio' from '.../usr/lib/python3.12/asyncio/__init__.py'>
dataclass  = <function dataclass at 0xff13a8f1e660>
np         = <module 'numpy' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/numpy/__init__.py'>
o3d        = <module 'open3d' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/open3d/__init__.py'>
partial    = <class 'functools.partial'>
trimesh    = <module 'trimesh' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/trimesh/__init__.py'>

.../planning/utils/point_cloud_self_filter.py:29: ModuleNotFoundError
dimos.robot.test_all_blueprints::test_blueprint_is_valid[behavior-r1pro]
Stack Traces | 0.004s run time
blueprint_name = 'behavior-r1pro'
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xff12c08abf50>

    @pytest.mark.parametrize("blueprint_name", UBUNTU_BLUEPRINTS)
    def test_blueprint_is_valid(blueprint_name: str, monkeypatch: pytest.MonkeyPatch) -> None:
        """Validate blueprints that should import on the ubuntu-latest runner."""
        # The multi-robot blueprints read ROBOT_IPS at import time.
        monkeypatch.setattr(global_config, "robot_ips", "192.0.2.10,192.0.2.11")
>       _check_blueprint(blueprint_name)

blueprint_name = 'behavior-r1pro'
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xff12c08abf50>

dimos/robot/test_all_blueprints.py:112: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
dimos/robot/test_all_blueprints.py:86: in _check_blueprint
    blueprint = get_blueprint_by_name(blueprint_name)
        blueprint_name = 'behavior-r1pro'
dimos/robot/get_all_blueprints.py:51: in get_blueprint_by_name
    module = __import__(module_path, fromlist=[attr])
        attr       = 'behavior_r1pro'
        module_path = 'dimos.simulation.behavior.blueprints'
        name       = 'behavior-r1pro'
.../simulation/behavior/blueprints.py:32: in <module>
    from dimos.manipulation.planning.utils.point_cloud_self_filter import PointCloudSelfFilter
        HardwareComponent = <class 'dimos.control.components.HardwareComponent'>
        HardwareType = <enum 'HardwareType'>
        ManipulationModule = <class 'dimos.manipulation.manipulation_module.ManipulationModule'>
        McpClient  = <class 'dimos.agents.mcp.mcp_client.McpClient'>
        McpServer  = <class 'dimos.agents.mcp.mcp_server.McpServer'>
        ModuleType = <class 'module'>
        RRTConnectPlannerConfig = <class 'dimos.manipulation.planning.planners.config.RRTConnectPlannerConfig'>
        ZenohTransport = <class 'dimos.core.transport.ZenohTransport'>
        __builtins__ = <builtins>
        __cached__ = '.../behavior/__pycache__/blueprints.cpython-312.pyc'
        __doc__    = 'R1 Pro teleop, navigation, manipulation, and task execution.'
        __file__   = '/home/runner/work/dimos/dimos/.../simulation/behavior/blueprints.py'
        __loader__ = <_frozen_importlib_external.SourceFileLoader object at 0xff12c08a8860>
        __name__   = 'dimos.simulation.behavior.blueprints'
        __package__ = 'dimos.simulation.behavior'
        __spec__   = ModuleSpec(name='dimos.simulation.behavior.blueprints', loader=<_frozen_importlib_external.SourceFileLoader object at 0xff12c08a8860>, origin='/home/runner/work/dimos/dimos/.../simulation/behavior/blueprints.py')
        autoconnect = <function autoconnect at 0xff138defd120>
        global_config = GlobalConfig(robot_ip=None, robot_ips='192.0.2.10,192.0.2.11', unitree_aes_128_key=None, xarm7_ip=None, xarm6_ip=None,...load_retries=2, dimos_upload_chunk_mb=None, dimos_upload_quiet_s=30.0, dimos_http_timeout=60.0, dimos_staging_dir=None)
        joint_trajectory_task = <function joint_trajectory_task at 0xff1367e70fe0>
        math       = <module 'math' (built-in)>
        rr         = <module 'rerun' from '.../dimos/dimos/.venv/lib/python3.12.../rerun_sdk/rerun/__init__.py'>
        rrb        = <module 'rerun.blueprint' from '.../dimos/dimos/.venv/lib/python3.12.../rerun/blueprint/__init__.py'>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    # 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.
    
    """Robot-model point-cloud self exclusion and map-clear-mask generation."""
    
    from __future__ import annotations
    
    import asyncio
    from dataclasses import dataclass
    from functools import partial
    from io import BytesIO
    from typing import Any
    
    import numpy as np
    import open3d as o3d
    from pydantic import Field
    import trimesh
>   import yourdfpy  # type: ignore[import-untyped]
E   ModuleNotFoundError: No module named 'yourdfpy'

Any        = typing.Any
BytesIO    = <class '_io.BytesIO'>
Field      = <function Field at 0xff139fa3b600>
__builtins__ = <builtins>
__cached__ = '.../utils/__pycache__/point_cloud_self_filter.cpython-312.pyc'
__doc__    = 'Robot-model point-cloud self exclusion and map-clear-mask generation.'
__file__   = '.../planning/utils/point_cloud_self_filter.py'
__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0xff12c08a9910>
__name__   = 'dimos.manipulation.planning.utils.point_cloud_self_filter'
__package__ = 'dimos.manipulation.planning.utils'
__spec__   = ModuleSpec(name='dimos.manipulation.planning.utils.point_cloud_self_filter', loader=<_frozen_importlib_external.Source...t 0xff12c08a9910>, origin='.../planning/utils/point_cloud_self_filter.py')
annotations = _Feature((3, 7, 0, 'beta', 1), None, 16777216)
asyncio    = <module 'asyncio' from '.../usr/lib/python3.12/asyncio/__init__.py'>
dataclass  = <function dataclass at 0xff13a8f1e660>
np         = <module 'numpy' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/numpy/__init__.py'>
o3d        = <module 'open3d' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/open3d/__init__.py'>
partial    = <class 'functools.partial'>
trimesh    = <module 'trimesh' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/trimesh/__init__.py'>

.../planning/utils/point_cloud_self_filter.py:29: ModuleNotFoundError
dimos.robot.test_all_blueprints::test_blueprint_is_valid[behavior-task]
Stack Traces | 0.004s run time
blueprint_name = 'behavior-task'
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xff12c08f7ad0>

    @pytest.mark.parametrize("blueprint_name", UBUNTU_BLUEPRINTS)
    def test_blueprint_is_valid(blueprint_name: str, monkeypatch: pytest.MonkeyPatch) -> None:
        """Validate blueprints that should import on the ubuntu-latest runner."""
        # The multi-robot blueprints read ROBOT_IPS at import time.
        monkeypatch.setattr(global_config, "robot_ips", "192.0.2.10,192.0.2.11")
>       _check_blueprint(blueprint_name)

blueprint_name = 'behavior-task'
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xff12c08f7ad0>

dimos/robot/test_all_blueprints.py:112: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
dimos/robot/test_all_blueprints.py:86: in _check_blueprint
    blueprint = get_blueprint_by_name(blueprint_name)
        blueprint_name = 'behavior-task'
dimos/robot/get_all_blueprints.py:51: in get_blueprint_by_name
    module = __import__(module_path, fromlist=[attr])
        attr       = 'behavior_task'
        module_path = 'dimos.simulation.behavior.blueprints'
        name       = 'behavior-task'
.../simulation/behavior/blueprints.py:32: in <module>
    from dimos.manipulation.planning.utils.point_cloud_self_filter import PointCloudSelfFilter
        HardwareComponent = <class 'dimos.control.components.HardwareComponent'>
        HardwareType = <enum 'HardwareType'>
        ManipulationModule = <class 'dimos.manipulation.manipulation_module.ManipulationModule'>
        McpClient  = <class 'dimos.agents.mcp.mcp_client.McpClient'>
        McpServer  = <class 'dimos.agents.mcp.mcp_server.McpServer'>
        ModuleType = <class 'module'>
        RRTConnectPlannerConfig = <class 'dimos.manipulation.planning.planners.config.RRTConnectPlannerConfig'>
        ZenohTransport = <class 'dimos.core.transport.ZenohTransport'>
        __builtins__ = <builtins>
        __cached__ = '.../behavior/__pycache__/blueprints.cpython-312.pyc'
        __doc__    = 'R1 Pro teleop, navigation, manipulation, and task execution.'
        __file__   = '/home/runner/work/dimos/dimos/.../simulation/behavior/blueprints.py'
        __loader__ = <_frozen_importlib_external.SourceFileLoader object at 0xff12c08f7c80>
        __name__   = 'dimos.simulation.behavior.blueprints'
        __package__ = 'dimos.simulation.behavior'
        __spec__   = ModuleSpec(name='dimos.simulation.behavior.blueprints', loader=<_frozen_importlib_external.SourceFileLoader object at 0xff12c08f7c80>, origin='/home/runner/work/dimos/dimos/.../simulation/behavior/blueprints.py')
        autoconnect = <function autoconnect at 0xff138defd120>
        global_config = GlobalConfig(robot_ip=None, robot_ips='192.0.2.10,192.0.2.11', unitree_aes_128_key=None, xarm7_ip=None, xarm6_ip=None,...load_retries=2, dimos_upload_chunk_mb=None, dimos_upload_quiet_s=30.0, dimos_http_timeout=60.0, dimos_staging_dir=None)
        joint_trajectory_task = <function joint_trajectory_task at 0xff1367e70fe0>
        math       = <module 'math' (built-in)>
        rr         = <module 'rerun' from '.../dimos/dimos/.venv/lib/python3.12.../rerun_sdk/rerun/__init__.py'>
        rrb        = <module 'rerun.blueprint' from '.../dimos/dimos/.venv/lib/python3.12.../rerun/blueprint/__init__.py'>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    # 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.
    
    """Robot-model point-cloud self exclusion and map-clear-mask generation."""
    
    from __future__ import annotations
    
    import asyncio
    from dataclasses import dataclass
    from functools import partial
    from io import BytesIO
    from typing import Any
    
    import numpy as np
    import open3d as o3d
    from pydantic import Field
    import trimesh
>   import yourdfpy  # type: ignore[import-untyped]
E   ModuleNotFoundError: No module named 'yourdfpy'

Any        = typing.Any
BytesIO    = <class '_io.BytesIO'>
Field      = <function Field at 0xff139fa3b600>
__builtins__ = <builtins>
__cached__ = '.../utils/__pycache__/point_cloud_self_filter.cpython-312.pyc'
__doc__    = 'Robot-model point-cloud self exclusion and map-clear-mask generation.'
__file__   = '.../planning/utils/point_cloud_self_filter.py'
__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0xff12c08f7f20>
__name__   = 'dimos.manipulation.planning.utils.point_cloud_self_filter'
__package__ = 'dimos.manipulation.planning.utils'
__spec__   = ModuleSpec(name='dimos.manipulation.planning.utils.point_cloud_self_filter', loader=<_frozen_importlib_external.Source...t 0xff12c08f7f20>, origin='.../planning/utils/point_cloud_self_filter.py')
annotations = _Feature((3, 7, 0, 'beta', 1), None, 16777216)
asyncio    = <module 'asyncio' from '.../usr/lib/python3.12/asyncio/__init__.py'>
dataclass  = <function dataclass at 0xff13a8f1e660>
np         = <module 'numpy' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/numpy/__init__.py'>
o3d        = <module 'open3d' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/open3d/__init__.py'>
partial    = <class 'functools.partial'>
trimesh    = <module 'trimesh' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/trimesh/__init__.py'>

.../planning/utils/point_cloud_self_filter.py:29: ModuleNotFoundError
dimos.robot.test_all_blueprints::test_blueprint_is_valid[behavior-teleop]
Stack Traces | 0.004s run time
blueprint_name = 'behavior-teleop'
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xff12c08f6120>

    @pytest.mark.parametrize("blueprint_name", UBUNTU_BLUEPRINTS)
    def test_blueprint_is_valid(blueprint_name: str, monkeypatch: pytest.MonkeyPatch) -> None:
        """Validate blueprints that should import on the ubuntu-latest runner."""
        # The multi-robot blueprints read ROBOT_IPS at import time.
        monkeypatch.setattr(global_config, "robot_ips", "192.0.2.10,192.0.2.11")
>       _check_blueprint(blueprint_name)

blueprint_name = 'behavior-teleop'
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xff12c08f6120>

dimos/robot/test_all_blueprints.py:112: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
dimos/robot/test_all_blueprints.py:86: in _check_blueprint
    blueprint = get_blueprint_by_name(blueprint_name)
        blueprint_name = 'behavior-teleop'
dimos/robot/get_all_blueprints.py:51: in get_blueprint_by_name
    module = __import__(module_path, fromlist=[attr])
        attr       = 'behavior_teleop'
        module_path = 'dimos.simulation.behavior.blueprints'
        name       = 'behavior-teleop'
.../simulation/behavior/blueprints.py:32: in <module>
    from dimos.manipulation.planning.utils.point_cloud_self_filter import PointCloudSelfFilter
        HardwareComponent = <class 'dimos.control.components.HardwareComponent'>
        HardwareType = <enum 'HardwareType'>
        ManipulationModule = <class 'dimos.manipulation.manipulation_module.ManipulationModule'>
        McpClient  = <class 'dimos.agents.mcp.mcp_client.McpClient'>
        McpServer  = <class 'dimos.agents.mcp.mcp_server.McpServer'>
        ModuleType = <class 'module'>
        RRTConnectPlannerConfig = <class 'dimos.manipulation.planning.planners.config.RRTConnectPlannerConfig'>
        ZenohTransport = <class 'dimos.core.transport.ZenohTransport'>
        __builtins__ = <builtins>
        __cached__ = '.../behavior/__pycache__/blueprints.cpython-312.pyc'
        __doc__    = 'R1 Pro teleop, navigation, manipulation, and task execution.'
        __file__   = '/home/runner/work/dimos/dimos/.../simulation/behavior/blueprints.py'
        __loader__ = <_frozen_importlib_external.SourceFileLoader object at 0xff12c08f6240>
        __name__   = 'dimos.simulation.behavior.blueprints'
        __package__ = 'dimos.simulation.behavior'
        __spec__   = ModuleSpec(name='dimos.simulation.behavior.blueprints', loader=<_frozen_importlib_external.SourceFileLoader object at 0xff12c08f6240>, origin='/home/runner/work/dimos/dimos/.../simulation/behavior/blueprints.py')
        autoconnect = <function autoconnect at 0xff138defd120>
        global_config = GlobalConfig(robot_ip=None, robot_ips='192.0.2.10,192.0.2.11', unitree_aes_128_key=None, xarm7_ip=None, xarm6_ip=None,...load_retries=2, dimos_upload_chunk_mb=None, dimos_upload_quiet_s=30.0, dimos_http_timeout=60.0, dimos_staging_dir=None)
        joint_trajectory_task = <function joint_trajectory_task at 0xff1367e70fe0>
        math       = <module 'math' (built-in)>
        rr         = <module 'rerun' from '.../dimos/dimos/.venv/lib/python3.12.../rerun_sdk/rerun/__init__.py'>
        rrb        = <module 'rerun.blueprint' from '.../dimos/dimos/.venv/lib/python3.12.../rerun/blueprint/__init__.py'>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    # 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.
    
    """Robot-model point-cloud self exclusion and map-clear-mask generation."""
    
    from __future__ import annotations
    
    import asyncio
    from dataclasses import dataclass
    from functools import partial
    from io import BytesIO
    from typing import Any
    
    import numpy as np
    import open3d as o3d
    from pydantic import Field
    import trimesh
>   import yourdfpy  # type: ignore[import-untyped]
E   ModuleNotFoundError: No module named 'yourdfpy'

Any        = typing.Any
BytesIO    = <class '_io.BytesIO'>
Field      = <function Field at 0xff139fa3b600>
__builtins__ = <builtins>
__cached__ = '.../utils/__pycache__/point_cloud_self_filter.cpython-312.pyc'
__doc__    = 'Robot-model point-cloud self exclusion and map-clear-mask generation.'
__file__   = '.../planning/utils/point_cloud_self_filter.py'
__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0xff12c092f8c0>
__name__   = 'dimos.manipulation.planning.utils.point_cloud_self_filter'
__package__ = 'dimos.manipulation.planning.utils'
__spec__   = ModuleSpec(name='dimos.manipulation.planning.utils.point_cloud_self_filter', loader=<_frozen_importlib_external.Source...t 0xff12c092f8c0>, origin='.../planning/utils/point_cloud_self_filter.py')
annotations = _Feature((3, 7, 0, 'beta', 1), None, 16777216)
asyncio    = <module 'asyncio' from '.../usr/lib/python3.12/asyncio/__init__.py'>
dataclass  = <function dataclass at 0xff13a8f1e660>
np         = <module 'numpy' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/numpy/__init__.py'>
o3d        = <module 'open3d' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/open3d/__init__.py'>
partial    = <class 'functools.partial'>
trimesh    = <module 'trimesh' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/trimesh/__init__.py'>

.../planning/utils/point_cloud_self_filter.py:29: ModuleNotFoundError
dimos.codebase_checks.test_blueprint_kwargs::test_blueprint_atom_kwargs_match_module_config[behavior-agentic]
Stack Traces | 0.005s run time
blueprint_name = 'behavior-agentic'
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xffc587dbdd00>

    @pytest.mark.parametrize("blueprint_name", _blueprint_params())
    def test_blueprint_atom_kwargs_match_module_config(
        blueprint_name: str, monkeypatch: pytest.MonkeyPatch
    ) -> None:
        """Fail when blueprint kwargs cannot be consumed by their target module."""
        # The multi-robot blueprints read ROBOT_IPS at import time.
        monkeypatch.setattr(global_config, "robot_ips", "192.0.2.10,192.0.2.11")
>       blueprint = _get_blueprint_or_skip(blueprint_name)

blueprint_name = 'behavior-agentic'
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xffc587dbdd00>

dimos/codebase_checks/test_blueprint_kwargs.py:96: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
dimos/codebase_checks/test_blueprint_kwargs.py:37: in _get_blueprint_or_skip
    return get_blueprint_by_name(blueprint_name)
        blueprint_name = 'behavior-agentic'
dimos/robot/get_all_blueprints.py:51: in get_blueprint_by_name
    module = __import__(module_path, fromlist=[attr])
        attr       = 'behavior_agentic'
        module_path = 'dimos.simulation.behavior.blueprints'
        name       = 'behavior-agentic'
.../simulation/behavior/blueprints.py:32: in <module>
    from dimos.manipulation.planning.utils.point_cloud_self_filter import PointCloudSelfFilter
        HardwareComponent = <class 'dimos.control.components.HardwareComponent'>
        HardwareType = <enum 'HardwareType'>
        ManipulationModule = <class 'dimos.manipulation.manipulation_module.ManipulationModule'>
        McpClient  = <class 'dimos.agents.mcp.mcp_client.McpClient'>
        McpServer  = <class 'dimos.agents.mcp.mcp_server.McpServer'>
        ModuleType = <class 'module'>
        RRTConnectPlannerConfig = <class 'dimos.manipulation.planning.planners.config.RRTConnectPlannerConfig'>
        ZenohTransport = <class 'dimos.core.transport.ZenohTransport'>
        __builtins__ = <builtins>
        __cached__ = '.../behavior/__pycache__/blueprints.cpython-312.pyc'
        __doc__    = 'R1 Pro teleop, navigation, manipulation, and task execution.'
        __file__   = '/home/runner/work/dimos/dimos/.../simulation/behavior/blueprints.py'
        __loader__ = <_frozen_importlib_external.SourceFileLoader object at 0xffc587dbddc0>
        __name__   = 'dimos.simulation.behavior.blueprints'
        __package__ = 'dimos.simulation.behavior'
        __spec__   = ModuleSpec(name='dimos.simulation.behavior.blueprints', loader=<_frozen_importlib_external.SourceFileLoader object at 0xffc587dbddc0>, origin='/home/runner/work/dimos/dimos/.../simulation/behavior/blueprints.py')
        autoconnect = <function autoconnect at 0xffc652649120>
        global_config = GlobalConfig(robot_ip=None, robot_ips='192.0.2.10,192.0.2.11', unitree_aes_128_key=None, xarm7_ip=None, xarm6_ip=None,...load_retries=2, dimos_upload_chunk_mb=None, dimos_upload_quiet_s=30.0, dimos_http_timeout=60.0, dimos_staging_dir=None)
        joint_trajectory_task = <function joint_trajectory_task at 0xffc62c54f880>
        math       = <module 'math' (built-in)>
        rr         = <module 'rerun' from '.../dimos/dimos/.venv/lib/python3.12.../rerun_sdk/rerun/__init__.py'>
        rrb        = <module 'rerun.blueprint' from '.../dimos/dimos/.venv/lib/python3.12.../rerun/blueprint/__init__.py'>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    # 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.
    
    """Robot-model point-cloud self exclusion and map-clear-mask generation."""
    
    from __future__ import annotations
    
    import asyncio
    from dataclasses import dataclass
    from functools import partial
    from io import BytesIO
    from typing import Any
    
    import numpy as np
    import open3d as o3d
    from pydantic import Field
    import trimesh
>   import yourdfpy  # type: ignore[import-untyped]
E   ModuleNotFoundError: No module named 'yourdfpy'

Any        = typing.Any
BytesIO    = <class '_io.BytesIO'>
Field      = <function Field at 0xffc668137600>
__builtins__ = <builtins>
__cached__ = '.../utils/__pycache__/point_cloud_self_filter.cpython-312.pyc'
__doc__    = 'Robot-model point-cloud self exclusion and map-clear-mask generation.'
__file__   = '.../planning/utils/point_cloud_self_filter.py'
__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0xffc587dbe090>
__name__   = 'dimos.manipulation.planning.utils.point_cloud_self_filter'
__package__ = 'dimos.manipulation.planning.utils'
__spec__   = ModuleSpec(name='dimos.manipulation.planning.utils.point_cloud_self_filter', loader=<_frozen_importlib_external.Source...t 0xffc587dbe090>, origin='.../planning/utils/point_cloud_self_filter.py')
annotations = _Feature((3, 7, 0, 'beta', 1), None, 16777216)
asyncio    = <module 'asyncio' from '.../usr/lib/python3.12/asyncio/__init__.py'>
dataclass  = <function dataclass at 0xffc66d5fa660>
np         = <module 'numpy' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/numpy/__init__.py'>
o3d        = <module 'open3d' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/open3d/__init__.py'>
partial    = <class 'functools.partial'>
trimesh    = <module 'trimesh' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/trimesh/__init__.py'>

.../planning/utils/point_cloud_self_filter.py:29: ModuleNotFoundError
dimos.codebase_checks.test_blueprint_kwargs::test_blueprint_atom_kwargs_match_module_config[behavior-nav]
Stack Traces | 0.005s run time
blueprint_name = 'behavior-nav'
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xffc587d87a40>

    @pytest.mark.parametrize("blueprint_name", _blueprint_params())
    def test_blueprint_atom_kwargs_match_module_config(
        blueprint_name: str, monkeypatch: pytest.MonkeyPatch
    ) -> None:
        """Fail when blueprint kwargs cannot be consumed by their target module."""
        # The multi-robot blueprints read ROBOT_IPS at import time.
        monkeypatch.setattr(global_config, "robot_ips", "192.0.2.10,192.0.2.11")
>       blueprint = _get_blueprint_or_skip(blueprint_name)

blueprint_name = 'behavior-nav'
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xffc587d87a40>

dimos/codebase_checks/test_blueprint_kwargs.py:96: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
dimos/codebase_checks/test_blueprint_kwargs.py:37: in _get_blueprint_or_skip
    return get_blueprint_by_name(blueprint_name)
        blueprint_name = 'behavior-nav'
dimos/robot/get_all_blueprints.py:51: in get_blueprint_by_name
    module = __import__(module_path, fromlist=[attr])
        attr       = 'behavior_nav'
        module_path = 'dimos.simulation.behavior.blueprints'
        name       = 'behavior-nav'
.../simulation/behavior/blueprints.py:32: in <module>
    from dimos.manipulation.planning.utils.point_cloud_self_filter import PointCloudSelfFilter
        HardwareComponent = <class 'dimos.control.components.HardwareComponent'>
        HardwareType = <enum 'HardwareType'>
        ManipulationModule = <class 'dimos.manipulation.manipulation_module.ManipulationModule'>
        McpClient  = <class 'dimos.agents.mcp.mcp_client.McpClient'>
        McpServer  = <class 'dimos.agents.mcp.mcp_server.McpServer'>
        ModuleType = <class 'module'>
        RRTConnectPlannerConfig = <class 'dimos.manipulation.planning.planners.config.RRTConnectPlannerConfig'>
        ZenohTransport = <class 'dimos.core.transport.ZenohTransport'>
        __builtins__ = <builtins>
        __cached__ = '.../behavior/__pycache__/blueprints.cpython-312.pyc'
        __doc__    = 'R1 Pro teleop, navigation, manipulation, and task execution.'
        __file__   = '/home/runner/work/dimos/dimos/.../simulation/behavior/blueprints.py'
        __loader__ = <_frozen_importlib_external.SourceFileLoader object at 0xffc587d87f20>
        __name__   = 'dimos.simulation.behavior.blueprints'
        __package__ = 'dimos.simulation.behavior'
        __spec__   = ModuleSpec(name='dimos.simulation.behavior.blueprints', loader=<_frozen_importlib_external.SourceFileLoader object at 0xffc587d87f20>, origin='/home/runner/work/dimos/dimos/.../simulation/behavior/blueprints.py')
        autoconnect = <function autoconnect at 0xffc652649120>
        global_config = GlobalConfig(robot_ip=None, robot_ips='192.0.2.10,192.0.2.11', unitree_aes_128_key=None, xarm7_ip=None, xarm6_ip=None,...load_retries=2, dimos_upload_chunk_mb=None, dimos_upload_quiet_s=30.0, dimos_http_timeout=60.0, dimos_staging_dir=None)
        joint_trajectory_task = <function joint_trajectory_task at 0xffc62c54f880>
        math       = <module 'math' (built-in)>
        rr         = <module 'rerun' from '.../dimos/dimos/.venv/lib/python3.12.../rerun_sdk/rerun/__init__.py'>
        rrb        = <module 'rerun.blueprint' from '.../dimos/dimos/.venv/lib/python3.12.../rerun/blueprint/__init__.py'>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    # 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.
    
    """Robot-model point-cloud self exclusion and map-clear-mask generation."""
    
    from __future__ import annotations
    
    import asyncio
    from dataclasses import dataclass
    from functools import partial
    from io import BytesIO
    from typing import Any
    
    import numpy as np
    import open3d as o3d
    from pydantic import Field
    import trimesh
>   import yourdfpy  # type: ignore[import-untyped]
E   ModuleNotFoundError: No module named 'yourdfpy'

Any        = typing.Any
BytesIO    = <class '_io.BytesIO'>
Field      = <function Field at 0xffc668137600>
__builtins__ = <builtins>
__cached__ = '.../utils/__pycache__/point_cloud_self_filter.cpython-312.pyc'
__doc__    = 'Robot-model point-cloud self exclusion and map-clear-mask generation.'
__file__   = '.../planning/utils/point_cloud_self_filter.py'
__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0xffc587d843b0>
__name__   = 'dimos.manipulation.planning.utils.point_cloud_self_filter'
__package__ = 'dimos.manipulation.planning.utils'
__spec__   = ModuleSpec(name='dimos.manipulation.planning.utils.point_cloud_self_filter', loader=<_frozen_importlib_external.Source...t 0xffc587d843b0>, origin='.../planning/utils/point_cloud_self_filter.py')
annotations = _Feature((3, 7, 0, 'beta', 1), None, 16777216)
asyncio    = <module 'asyncio' from '.../usr/lib/python3.12/asyncio/__init__.py'>
dataclass  = <function dataclass at 0xffc66d5fa660>
np         = <module 'numpy' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/numpy/__init__.py'>
o3d        = <module 'open3d' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/open3d/__init__.py'>
partial    = <class 'functools.partial'>
trimesh    = <module 'trimesh' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/trimesh/__init__.py'>

.../planning/utils/point_cloud_self_filter.py:29: ModuleNotFoundError
dimos.codebase_checks.test_blueprint_kwargs::test_blueprint_atom_kwargs_match_module_config[behavior-r1pro]
Stack Traces | 0.005s run time
blueprint_name = 'behavior-r1pro'
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xffc587dbe300>

    @pytest.mark.parametrize("blueprint_name", _blueprint_params())
    def test_blueprint_atom_kwargs_match_module_config(
        blueprint_name: str, monkeypatch: pytest.MonkeyPatch
    ) -> None:
        """Fail when blueprint kwargs cannot be consumed by their target module."""
        # The multi-robot blueprints read ROBOT_IPS at import time.
        monkeypatch.setattr(global_config, "robot_ips", "192.0.2.10,192.0.2.11")
>       blueprint = _get_blueprint_or_skip(blueprint_name)

blueprint_name = 'behavior-r1pro'
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xffc587dbe300>

dimos/codebase_checks/test_blueprint_kwargs.py:96: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
dimos/codebase_checks/test_blueprint_kwargs.py:37: in _get_blueprint_or_skip
    return get_blueprint_by_name(blueprint_name)
        blueprint_name = 'behavior-r1pro'
dimos/robot/get_all_blueprints.py:51: in get_blueprint_by_name
    module = __import__(module_path, fromlist=[attr])
        attr       = 'behavior_r1pro'
        module_path = 'dimos.simulation.behavior.blueprints'
        name       = 'behavior-r1pro'
.../simulation/behavior/blueprints.py:32: in <module>
    from dimos.manipulation.planning.utils.point_cloud_self_filter import PointCloudSelfFilter
        HardwareComponent = <class 'dimos.control.components.HardwareComponent'>
        HardwareType = <enum 'HardwareType'>
        ManipulationModule = <class 'dimos.manipulation.manipulation_module.ManipulationModule'>
        McpClient  = <class 'dimos.agents.mcp.mcp_client.McpClient'>
        McpServer  = <class 'dimos.agents.mcp.mcp_server.McpServer'>
        ModuleType = <class 'module'>
        RRTConnectPlannerConfig = <class 'dimos.manipulation.planning.planners.config.RRTConnectPlannerConfig'>
        ZenohTransport = <class 'dimos.core.transport.ZenohTransport'>
        __builtins__ = <builtins>
        __cached__ = '.../behavior/__pycache__/blueprints.cpython-312.pyc'
        __doc__    = 'R1 Pro teleop, navigation, manipulation, and task execution.'
        __file__   = '/home/runner/work/dimos/dimos/.../simulation/behavior/blueprints.py'
        __loader__ = <_frozen_importlib_external.SourceFileLoader object at 0xffc587dbe480>
        __name__   = 'dimos.simulation.behavior.blueprints'
        __package__ = 'dimos.simulation.behavior'
        __spec__   = ModuleSpec(name='dimos.simulation.behavior.blueprints', loader=<_frozen_importlib_external.SourceFileLoader object at 0xffc587dbe480>, origin='/home/runner/work/dimos/dimos/.../simulation/behavior/blueprints.py')
        autoconnect = <function autoconnect at 0xffc652649120>
        global_config = GlobalConfig(robot_ip=None, robot_ips='192.0.2.10,192.0.2.11', unitree_aes_128_key=None, xarm7_ip=None, xarm6_ip=None,...load_retries=2, dimos_upload_chunk_mb=None, dimos_upload_quiet_s=30.0, dimos_http_timeout=60.0, dimos_staging_dir=None)
        joint_trajectory_task = <function joint_trajectory_task at 0xffc62c54f880>
        math       = <module 'math' (built-in)>
        rr         = <module 'rerun' from '.../dimos/dimos/.venv/lib/python3.12.../rerun_sdk/rerun/__init__.py'>
        rrb        = <module 'rerun.blueprint' from '.../dimos/dimos/.venv/lib/python3.12.../rerun/blueprint/__init__.py'>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    # 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.
    
    """Robot-model point-cloud self exclusion and map-clear-mask generation."""
    
    from __future__ import annotations
    
    import asyncio
    from dataclasses import dataclass
    from functools import partial
    from io import BytesIO
    from typing import Any
    
    import numpy as np
    import open3d as o3d
    from pydantic import Field
    import trimesh
>   import yourdfpy  # type: ignore[import-untyped]
E   ModuleNotFoundError: No module named 'yourdfpy'

Any        = typing.Any
BytesIO    = <class '_io.BytesIO'>
Field      = <function Field at 0xffc668137600>
__builtins__ = <builtins>
__cached__ = '.../utils/__pycache__/point_cloud_self_filter.cpython-312.pyc'
__doc__    = 'Robot-model point-cloud self exclusion and map-clear-mask generation.'
__file__   = '.../planning/utils/point_cloud_self_filter.py'
__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0xffc587dbe720>
__name__   = 'dimos.manipulation.planning.utils.point_cloud_self_filter'
__package__ = 'dimos.manipulation.planning.utils'
__spec__   = ModuleSpec(name='dimos.manipulation.planning.utils.point_cloud_self_filter', loader=<_frozen_importlib_external.Source...t 0xffc587dbe720>, origin='.../planning/utils/point_cloud_self_filter.py')
annotations = _Feature((3, 7, 0, 'beta', 1), None, 16777216)
asyncio    = <module 'asyncio' from '.../usr/lib/python3.12/asyncio/__init__.py'>
dataclass  = <function dataclass at 0xffc66d5fa660>
np         = <module 'numpy' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/numpy/__init__.py'>
o3d        = <module 'open3d' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/open3d/__init__.py'>
partial    = <class 'functools.partial'>
trimesh    = <module 'trimesh' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/trimesh/__init__.py'>

.../planning/utils/point_cloud_self_filter.py:29: ModuleNotFoundError
dimos.codebase_checks.test_blueprint_kwargs::test_blueprint_atom_kwargs_match_module_config[behavior-teleop]
Stack Traces | 0.007s run time
blueprint_name = 'behavior-teleop'
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xffc587d857f0>

    @pytest.mark.parametrize("blueprint_name", _blueprint_params())
    def test_blueprint_atom_kwargs_match_module_config(
        blueprint_name: str, monkeypatch: pytest.MonkeyPatch
    ) -> None:
        """Fail when blueprint kwargs cannot be consumed by their target module."""
        # The multi-robot blueprints read ROBOT_IPS at import time.
        monkeypatch.setattr(global_config, "robot_ips", "192.0.2.10,192.0.2.11")
>       blueprint = _get_blueprint_or_skip(blueprint_name)

blueprint_name = 'behavior-teleop'
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0xffc587d857f0>

dimos/codebase_checks/test_blueprint_kwargs.py:96: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
dimos/codebase_checks/test_blueprint_kwargs.py:37: in _get_blueprint_or_skip
    return get_blueprint_by_name(blueprint_name)
        blueprint_name = 'behavior-teleop'
dimos/robot/get_all_blueprints.py:51: in get_blueprint_by_name
    module = __import__(module_path, fromlist=[attr])
        attr       = 'behavior_teleop'
        module_path = 'dimos.simulation.behavior.blueprints'
        name       = 'behavior-teleop'
.../simulation/behavior/blueprints.py:32: in <module>
    from dimos.manipulation.planning.utils.point_cloud_self_filter import PointCloudSelfFilter
        HardwareComponent = <class 'dimos.control.components.HardwareComponent'>
        HardwareType = <enum 'HardwareType'>
        ManipulationModule = <class 'dimos.manipulation.manipulation_module.ManipulationModule'>
        McpClient  = <class 'dimos.agents.mcp.mcp_client.McpClient'>
        McpServer  = <class 'dimos.agents.mcp.mcp_server.McpServer'>
        ModuleType = <class 'module'>
        RRTConnectPlannerConfig = <class 'dimos.manipulation.planning.planners.config.RRTConnectPlannerConfig'>
        ZenohTransport = <class 'dimos.core.transport.ZenohTransport'>
        __builtins__ = <builtins>
        __cached__ = '.../behavior/__pycache__/blueprints.cpython-312.pyc'
        __doc__    = 'R1 Pro teleop, navigation, manipulation, and task execution.'
        __file__   = '/home/runner/work/dimos/dimos/.../simulation/behavior/blueprints.py'
        __loader__ = <_frozen_importlib_external.SourceFileLoader object at 0xffc587d85bb0>
        __name__   = 'dimos.simulation.behavior.blueprints'
        __package__ = 'dimos.simulation.behavior'
        __spec__   = ModuleSpec(name='dimos.simulation.behavior.blueprints', loader=<_frozen_importlib_external.SourceFileLoader object at 0xffc587d85bb0>, origin='/home/runner/work/dimos/dimos/.../simulation/behavior/blueprints.py')
        autoconnect = <function autoconnect at 0xffc652649120>
        global_config = GlobalConfig(robot_ip=None, robot_ips='192.0.2.10,192.0.2.11', unitree_aes_128_key=None, xarm7_ip=None, xarm6_ip=None,...load_retries=2, dimos_upload_chunk_mb=None, dimos_upload_quiet_s=30.0, dimos_http_timeout=60.0, dimos_staging_dir=None)
        joint_trajectory_task = <function joint_trajectory_task at 0xffc62c54f880>
        math       = <module 'math' (built-in)>
        rr         = <module 'rerun' from '.../dimos/dimos/.venv/lib/python3.12.../rerun_sdk/rerun/__init__.py'>
        rrb        = <module 'rerun.blueprint' from '.../dimos/dimos/.venv/lib/python3.12.../rerun/blueprint/__init__.py'>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    # 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.
    
    """Robot-model point-cloud self exclusion and map-clear-mask generation."""
    
    from __future__ import annotations
    
    import asyncio
    from dataclasses import dataclass
    from functools import partial
    from io import BytesIO
    from typing import Any
    
    import numpy as np
    import open3d as o3d
    from pydantic import Field
    import trimesh
>   import yourdfpy  # type: ignore[import-untyped]
E   ModuleNotFoundError: No module named 'yourdfpy'

Any        = typing.Any
BytesIO    = <class '_io.BytesIO'>
Field      = <function Field at 0xffc668137600>
__builtins__ = <builtins>
__cached__ = '.../utils/__pycache__/point_cloud_self_filter.cpython-312.pyc'
__doc__    = 'Robot-model point-cloud self exclusion and map-clear-mask generation.'
__file__   = '.../planning/utils/point_cloud_self_filter.py'
__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0xffc587d85f10>
__name__   = 'dimos.manipulation.planning.utils.point_cloud_self_filter'
__package__ = 'dimos.manipulation.planning.utils'
__spec__   = ModuleSpec(name='dimos.manipulation.planning.utils.point_cloud_self_filter', loader=<_frozen_importlib_external.Source...t 0xffc587d85f10>, origin='.../planning/utils/point_cloud_self_filter.py')
annotations = _Feature((3, 7, 0, 'beta', 1), None, 16777216)
asyncio    = <module 'asyncio' from '.../usr/lib/python3.12/asyncio/__init__.py'>
dataclass  = <function dataclass at 0xffc66d5fa660>
np         = <module 'numpy' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/numpy/__init__.py'>
o3d        = <module 'open3d' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/open3d/__init__.py'>
partial    = <class 'functools.partial'>
trimesh    = <module 'trimesh' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/trimesh/__init__.py'>

.../planning/utils/point_cloud_self_filter.py:29: ModuleNotFoundError
dimos.codebase_checks.test_docs_branding::test_docs_use_current_branding
Stack Traces | 0.017s run time
def test_docs_use_current_branding() -> None:
        """Fail if any file under docs/ spells the brand "DimOS" instead of "dimOS"."""
        hits = find_old_branding()
        if hits:
            listing = "\n".join(
                f"  - {p.relative_to(DIMOS_PROJECT_ROOT)}:{lineno}: {line.strip()}"
                for p, lineno, line in hits
            )
>           raise AssertionError(f'Found "DimOS" in docs/:\n{listing}\n\nThe brand is spelled "dimOS".')
E           AssertionError: Found "DimOS" in docs/:
E             - docs/adr/0002-isolated-runtime-dependencies.md:3: Each isolated runtime syncs its own lockfile, installs the DimOS code from the shared checkout
E             - docs/adr/0002-isolated-runtime-dependencies.md:7: their implementation and DimOS transport/message imports; the isolated environment
E             - docs/adr/0002-isolated-runtime-dependencies.md:10: Both source and installed hosts resolve runtime projects and editable DimOS code
E             - docs/adr/0002-isolated-runtime-dependencies.md:11: through `get_project_root()`. Environments live in the project-specific DimOS cache.
E             - .../capabilities/simulation/behavior.md:3: BEHAVIOR runs an R1 Pro mobile manipulator in an isolated Python process. DimOS owns
E             - .../capabilities/simulation/behavior.md:8: DimOS host (NumPy 2, Rerun)
E             - .../capabilities/simulation/behavior.md:41: shared DimOS checkout selected by `get_project_root()` with `--no-deps`.
E             - .../capabilities/simulation/behavior.md:94: The blueprint opens the native Isaac Sim viewport, the DimOS Rerun viewer, and
E             - .../capabilities/simulation/behavior.md:105: For navigation and base teleop in the **native DimOS viewer**:
E             - .../capabilities/simulation/behavior.md:136: The manipulation layer reuses DimOS's R1 Pro planning groups, joint names,
E             - .../capabilities/simulation/behavior.md:142: Planning uses DimOS's selected-joint RRT-Connect with RoboPlan collision queries.
E             - .../capabilities/simulation/behavior.md:236: | navigation | Existing DimOS planner/follower reaches selected goal within 0.3 m in 120 s |
E             - .../capabilities/simulation/behavior.md:254: without DimOS or OmniGibson imports; with a clean environment and only `libxml2`
E           
E           The brand is spelled "dimOS".

hits       = [(PosixPath('.../docs/adr/0002-isolated-runtime-dependencies.md'), 3, 'Each isolated runtime...Path('/home/runner/work/dimos/dimos/.../capabilities/simulation/behavior.md'), 8, 'DimOS host (NumPy 2, Rerun)'), ...]
listing    = '  - docs/adr/0002-isolated-runtime-dependencies.md:3: Each isolated runtime syncs its own lockfile, installs the DimO...abilities/simulation/behavior.md:254: without DimOS or OmniGibson imports; with a clean environment and only `libxml2`'

dimos/codebase_checks/test_docs_branding.py:43: AssertionError
dimos.codebase_checks.test_inline_heavy_imports::test_heavy_imports_are_inline
Stack Traces | 2.66s run time
def test_heavy_imports_are_inline() -> None:
        """Fail if any file imports cv2/open3d/rerun at module level."""
        hits = find_eager_heavy_imports()
        if hits:
            listing = "\n".join(
                f"  - dimos/{f}:{line}: `{module}`"
                for f, lines in sorted(hits.items())
                for line, module in lines
            )
>           raise AssertionError(
                f"Found module-level import(s) of {'/'.join(HEAVY_MODULES)}:\n{listing}\n\n"
                "These libraries load large native extensions into every process that "
                "transitively imports the module. Import them inside the function or "
                "method that uses them; imports needed only for type annotations go "
                "under `if TYPE_CHECKING:`."
            )
E           AssertionError: Found module-level import(s) of cv2/open3d/rerun:
E             - .../planning/utils/point_cloud_self_filter.py:26: `open3d`
E             - .../simulation/behavior/blueprints.py:20: `rerun`
E             - .../simulation/behavior/blueprints.py:21: `rerun.blueprint`
E           
E           These libraries load large native extensions into every process that transitively imports the module. Import them inside the function or method that uses them; imports needed only for type annotations go under `if TYPE_CHECKING:`.

hits       = {'.../planning/utils/point_cloud_self_filter.py': [(26, 'open3d')], 'simulation/behavior/blueprints.py': [(20, 'rerun'), (21, 'rerun.blueprint')]}
listing    = '  - .../planning/utils/point_cloud_self_filter.py:26: `open3d`\n  - .../simulation/behavior/blueprints.py:20: `rerun`\n  - .../simulation/behavior/blueprints.py:21: `rerun.blueprint`'

dimos/codebase_checks/test_inline_heavy_imports.py:92: AssertionError

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@TomCC7 TomCC7 changed the title feat(simulation): integrate BEHAVIOR through isolated Python feat(simulation): integrate BEHAVIOR with R1 Pro navigation and manipulation Sep 17, 2026
@TomCC7
TomCC7 force-pushed the feat/behavior-integration branch from 8968a43 to 4244ab1 Compare September 17, 2026 23:36
@TomCC7
TomCC7 force-pushed the feat/behavior-integration branch from 4244ab1 to b36b1e7 Compare September 18, 2026 00:35
@TomCC7
TomCC7 force-pushed the feat/behavior-integration branch from b36b1e7 to 2abc3c7 Compare September 18, 2026 00:39
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.

1 participant