NVlabs / NVlabs/ASPIRE

franka_pick_place_code_env and franka_pick_place_multi_code_env reference an unregistered low-level env

Open
#18 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
191
Forks
12
Avg merge
3d 18h
Merged PRs (30d)
1

Description

Summary

Two registered configurations, franka_pick_place_code_env and franka_pick_place_multi_code_env, declare low_level="franka_cubes_low_level". No environment by that name is ever registered, so selecting either config raises KeyError at construction. The neighbouring franka_robosuite_pick_place_code_env uses franka_robosuite_cubes_low_level, which does exist — this looks like a rename that missed two call sites.

Where

cap/envs/tasks/__init__.py

  • line 38 — franka_pick_place_code_envlow_level="franka_cubes_low_level"
  • line 73 — franka_pick_place_multi_code_envlow_level="franka_cubes_low_level"
  • line 46 — franka_robosuite_pick_place_code_envlow_level="franka_robosuite_cubes_low_level" (correct)

Reproduce

from aspire.sim.cap.envs.tasks import get_config, get_exec_env
from aspire.sim.cap.envs.base import list_envs

for name in ["franka_pick_place_code_env",
             "franka_pick_place_multi_code_env",
             "franka_robosuite_pick_place_code_env"]:
    cfg = get_config(name)
    print(name, cfg.low_level, cfg.low_level in list_envs())
    if cfg.low_level not in list_envs():
        get_exec_env(name)(cfg)

In .venv-robosuite:

franka_pick_place_code_env           franka_cubes_low_level            False
  -> KeyError: "Environment 'franka_cubes_low_level' not registered"
franka_pick_place_multi_code_env     franka_cubes_low_level            False
  -> KeyError: "Environment 'franka_cubes_low_level' not registered"
franka_robosuite_pick_place_code_env franka_robosuite_cubes_low_level  True

Same result in .venv-libero. grep -rn franka_cubes_low_level cap/ env_configs/ returns only these two config declarations — there is no matching register_env anywhere.

Suggested fix

Point both at franka_robosuite_cubes_low_level, matching the sibling config.

Secondary: the test that should catch this skips instead

tests/test_environments.py::check_environment turns exactly this condition into a skip:

if cfg.low_level not in list_envs():
    pytest.skip(f"Low-level environment '{cfg.low_level}' is not registered")

so the suite reports success while never exercising the broken configs. Measured on a fresh clone with ASPIRE_INTEGRATION_REAL=1 and the perception servers up:

  • .venv-libero: 10 skipped — nothing executed
  • .venv-robosuite: 3 passed, 7 skipped

Of the 7 that skip in both environments, one (r1pro_b1k_low_level) is a legitimate BEHAVIOR-1K gate, two are the franka_cubes_low_level cases above, and four target configurations whose register_exec_env / register_config calls are commented out at cap/envs/tasks/__init__.py:109-142:

"Configuration 'franka_libero_pick_place_code_env' not registered"
"Configuration 'franka_libero_pick_place_code_env_privileged' not registered"
"Configuration 'franka_libero_open_microwave_code_env' not registered"
"Configuration 'franka_libero_open_microwave_code_env_privileged' not registered"

Those four tests can never run as written. Making an unregistered low_level a failure rather than a skip — and deleting or updating the four tests whose registrations were retired — would let this class of defect surface on its own.

Environment

Fresh clone at f4c8939, Linux x86-64, .venv-libero (Python 3.12) and .venv-robosuite (Python 3.10), both built with uv sync --locked per the README.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in cap/envs/tasks/init.py at the two franka_pick_place configurations and compare them with the registered robosuite sibling. Update the broken low-level references, then inspect tests/test_environments.py::check_environment so missing low-level environments are not silently skipped. Run the environment tests in the documented virtual environments and verify the two configurations construct successfully.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
robotics, testing-qa
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
72/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.