Add force-driven Newton conveyor task - #6952
Conversation
Greptile SummaryThe PR adds a Newton-based demonstration environment with force-driven racetrack conveyors and reusable authored-triangle mesh spawning.
Confidence Score: 5/5The PR appears safe to merge. No blocking failure remains. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart LR
CLI["zero_agent / gym.make"] --> Registry["Conveyor task registration"]
Registry --> Env["ConveyorFrankaEnv"]
Env --> Scene["Franka, parcels, belts, and guards"]
Geometry["Procedural racetrack geometry"] --> MeshCfg["MeshCustomCfg"]
MeshCfg --> USD["Authored USD triangle meshes"]
USD --> Scene
Scene --> Newton["Newton physics step"]
Newton --> Contacts["Reported parcel contact forces"]
Contacts --> Driver["ConveyorForceDriver"]
Driver --> Wrench["Coulomb-limited body wrench"]
Wrench --> Newton
Reviews (2): Last reviewed commit: "Address conveyor review feedback" | Re-trigger Greptile |
There was a problem hiding this comment.
Isaac Lab Review Bot
The public custom-mesh spawner and Newton conveyor task are coherently structured, but three scoped fixes are needed before merge: limit the new displayColor behavior so existing mesh spawners do not change rendering semantics, preserve supported environment constructor keywords such as render_mode, and apply the repository-mandated copyright header to the new task files.
- Design and architecture: The separation between procedural geometry, the Warp force driver, environment configuration, and the reusable
MeshCustomCfgspawner is sound. However, renderer-independent color authoring was added to the shared mesh helper, unintentionally extending the behavior beyond custom meshes and creating inconsistent color/material handling for existing spawners. - API:
MeshCustomCfgandspawn_mesh_customare consistently exported and documented through the public stubs and changelog. The task environment constructor currently discards all Gym-provided keyword arguments, narrowing the baseManagerBasedRLEnvconstructor contract and breaking paths that rely onrender_mode; supported arguments should be forwarded. - Implementation: The custom-mesh validation, collision configuration, racetrack generation, and force-driver organization are internally coherent. Required corrections are to scope
displayColorauthoring appropriately, retain the kitless warning when material properties remain unapplied, and update the new files to the required2022-2026copyright header.
Minor fixes needed. Posted 3 actionable findings inline.
Automated review; human maintainers own approval decisions.
|
@greptileai check again |
Add reset-state curriculum, observations, rewards, and relative joint actions for four-cube cross-conveyor transfer. Calibrate Franka contact dynamics and belt friction for stable moving-belt manipulation.
Description
This PR adds a manager-based Newton demonstration task with two counter-rotating racetrack conveyors and a table-mounted MuJoCo Menagerie Franka. Parcels on each lane are transported by a force-based moving-surface model while the environment remains playable with the zero-action agent and ready for future MDP terms.
The conveyor driver reads Newton's reported normal contact forces, computes Coulomb-limited traction toward an analytic racetrack velocity field, and applies the resulting body wrench on the next physics step. Each belt and guardrail is one procedurally generated watertight mesh, avoiding the collision seams created by overlapping straight and curved primitives.
The task also needs to spawn authored triangle data without maintaining a task-local USD spawner. To keep that part reusable, this PR adds
MeshCustomCfgandspawn_mesh_customalongside Isaac Lab's existing generated mesh spawners. The helper preserves authored winding and subdivision, supports configurable mesh collision approximation, and authorsdisplayColorso PreviewSurface colors remain available to kitless renderers such as Newton GL.isaaclab_tasksnow declares its in-repositoryisaaclab_newtonruntime dependency. The preferred Newton visualizer remains optional and is configured only whenisaaclab_visualizersis installed. No external dependency or lockfile changes are included.Run the task with:
Type of change
Screenshots
The scene was verified through a 960 x 720 Newton framebuffer render. The generated image is intentionally not committed to keep the PR focused on source and tests.
Validation
uv run isaaclab -fuv run --extra test python -m pytest source/isaaclab_tasks/test/contrib/test_conveyor_franka_geometry.py -q(8 passed, including the no-visualizer configuration path)uv run isaaclab zero_agent --task IsaacContrib-Conveyor-Franka-Newton-v0 --max_steps 360 --num_envs 2 --visualizer newtonuv run --isolated --extra test -- make -C docs current-docsThe existing Kit integration suite now includes coverage for
MeshCustomCfg. It was not runnable locally because this checkout is kitless; the Newton end-to-end task run exercised the same spawner path.Checklist
uv run isaaclab -fsource/<pkg>/changelog.d/for every touched packageCONTRIBUTORS.md