franka_pick_place_code_env and franka_pick_place_multi_code_env reference an unregistered low-level env
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_env→low_level="franka_cubes_low_level" - line 73 —
franka_pick_place_multi_code_env→low_level="franka_cubes_low_level" - line 46 —
franka_robosuite_pick_place_code_env→low_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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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