Skip to content

feat(newton): skeleton NewtonSimulation(SimEngine) + config + factory registration#99

Open
cagataycali wants to merge 1 commit into
strands-labs:mainfrom
cagataycali:feat/newton-backend-stub
Open

feat(newton): skeleton NewtonSimulation(SimEngine) + config + factory registration#99
cagataycali wants to merge 1 commit into
strands-labs:mainfrom
cagataycali:feat/newton-backend-stub

Conversation

@cagataycali
Copy link
Copy Markdown
Member

@cagataycali cagataycali commented Apr 21, 2026

TL;DR

Add Newton GPU simulation backend skeletonNewtonSimulation(SimEngine) with config, factory registration, and 81 tests. All methods raise NotImplementedError; actual Newton API implementations follow in PRs 2–6.

What changed

File Lines What
strands_robots/simulation/newton/__init__.py 47 Public API exports
strands_robots/simulation/newton/config.py 105 NewtonConfig dataclass (14 GPU-sim params)
strands_robots/simulation/newton/simulation.py 430 NewtonSimulation(SimEngine) — full ABC impl
tests/simulation/newton/ 490 81 tests (config, factory, lazy import, simulation)
pyproject.toml +9 [newton] extra, mypy overrides

Design decisions

  1. Lazy importswarp and newton are only imported at instantiation time, not at module import
  2. Factory registrationSimulationFactory.create("newton") auto-discovers the backend
  3. Config-drivenNewtonConfig exposes all GPU-sim knobs (num_envs, device, solver, physics_dt, etc.)
  4. Newton excluded from [all]newton-sim is not yet on PyPI; CI installs [all] without breakage

Method signatures aligned with SimEngine ABC (post-PR #85)

  • list_robots() -> list[str]
  • robot_joint_names(robot_name) -> list[str]
  • get_observation(robot_name, *, skip_images=False) -> dict
  • run_policy(robot_name, policy_provider, ..., policy_object, n_steps, max_steps, max_onframe_failures) -> dict

Testing


Part 1 of 7 in the Newton simulation backend series (#96)

@cagataycali cagataycali moved this from Backlog to In review in Strands Labs - Robots Apr 21, 2026
@cagataycali cagataycali force-pushed the feat/newton-backend-stub branch from 7aa29dc to 4e218b5 Compare April 21, 2026 17:51
@cagataycali cagataycali changed the title feat(newton): stub NewtonSimulation(SimEngine) — config, registry, lazy-import feat(newton): skeleton NewtonSimulation(SimEngine) + config + factory registration Apr 21, 2026
@cagataycali
Copy link
Copy Markdown
Member Author

This is the canonical Newton-stub PR. Closed duplicates: #102, #104.

Tracking issue: #96 (feat(newton): NVIDIA Warp/Newton simulation backend)

… registration

Add Newton GPU simulation backend stub implementing the SimEngine ABC.
All methods raise NotImplementedError — actual implementations will follow
in subsequent PRs (world lifecycle, step/action/obs, objects, diffsim).

Changes:
- strands_robots/simulation/newton/ — NewtonSimulation, NewtonConfig
- tests/simulation/newton/ — 81 tests (config, factory, lazy import, simulation)
- pyproject.toml — [newton] extra (warp-lang + newton-sim), excluded from [all]
  since newton-sim is not yet on PyPI
- mypy overrides — added warp.* and newton.* to ignore list
- Fixed method signatures to match SimEngine ABC (list_robots, robot_joint_names,
  get_observation, run_policy) after PR strands-labs#85 updated the base class
@cagataycali cagataycali force-pushed the feat/newton-backend-stub branch from e7d61ae to 238f25e Compare May 11, 2026 17:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In review

Development

Successfully merging this pull request may close these issues.

1 participant