Viaduct kit
Mesh and SDF contacts
A robot arm seats the top tier of a toy viaduct onto its pegs.
steel preset (the default), recordedon an NVIDIA RTX PRO 6000 Blackwell.Run it
cd examples# the default preset (steel), then the othersuv run shelf play viaduct_kit# change solver settings liveuv run shelf tune viaduct_kitSource: examples/shelf/03_mesh_sdf_contacts/viaduct_kit/ · ported from steel-webgpu assets/scenes/viaduct_kit (hero_montage export) @ ad03e49
Presets
| Preset | Solver | Status | Checked |
|---|---|---|---|
steeldefault | steel | works | 2026-11-10, newton f6fc82a8b, NVIDIA RTX PRO 6000 Blackwell Server Edition |
Solvers with no row are untested on this example. The full settings are inpresets.toml.
Code
# SPDX-FileCopyrightText: Copyright (c) 2026 Skild AI and the Steel contributors# SPDX-License-Identifier: Apache-2.0# Direct source: steel-webgpu; see presets.toml and THIRD_PARTY.md.# Modified for Steel Shelf: preset-driven execution and shared runner integration.
############################################################################ Example Viaduct kit## A robot arm lifts the upper tier of a toy viaduct and seats it onto the keyed pegs of the lower tier.## Rebuilt from steel-webgpu's exported scene (assets/scenes/viaduct_kit: scene.json# and scene.bin, copied next to this file); see common/exported_scene.py. The# visual meshes draw when a steel-webgpu checkout sits next to the shelf.## Command: python -m shelf run viaduct_kit############################################################################
import newton.examplesfrom common.exported_scene import ExportedSceneExample
class Example(ExportedSceneExample): file = __file__
if __name__ == "__main__": parser = Example.create_parser() viewer, args = newton.examples.init(parser) newton.examples.run(Example(viewer, args), args)example = "viaduct_kit"source = "steel-webgpu assets/scenes/viaduct_kit (hero_montage export) @ ad03e49"default = "steel"
[check]# Arguments `python -m shelf check` passes in test mode.args = []
[gallery]short = "A robot arm seats the top tier of a toy viaduct onto its pegs."title = "Viaduct kit"frame = 420
[xpbd]status = "untested"
[vbd]status = "untested"
[mujoco]status = "untested"
[featherstone]status = "untested"
[semi_implicit]status = "untested"
[feather_pgs]status = "untested"
[steel]status = "works"# 4 substeps x 8 iterations, immediate response, body-pair contact reduction: 7.1 ms a frame on an RTX PRO 6000# (the port's colored 4 x 16: 73-93 ms, swinging run to run). The tier (124 hulls) seated on the kit (222 hulls) made# 680-725 contacts and a dense 94 ms Steel substep; reducing contacts per body pair (Newton's default 0.25 m cells,# as the montage was built) leaves ~125, and the tier still seats within 0.3 mm of its pegs, as in a 16 x 32 run;# penetration 0.6 mm peak, 0.04 mm mean. 0.06 m cells were slower and deeper (0.8 / 0.29 mm). 2 and 3 substeps drop# the tier from the grip on the way; the colored response and 16 iterations seat it too but cost 7.4-9.4 ms.# Sleeping stays on as the port had it (not timed off). Joint limits for the fingers, built within 0.1 of a limit; no joint has a# finite velocity limit.sim = { fps = 60, substeps = 4 }collision = { body_pair_reduction = {} }solver = { solve_mode = "matrix_free", iterations = 8, articulated_contact_response = "immediate", enable_joint_limits = true, joint_limit_activation_gap = 0.1, enable_joint_velocity_limits = false, enable_sleeping = true, free_body_constraint_max = 8192, articulation_constraint_max = 1024 }checked = "2026-11-10, newton f6fc82a8b, NVIDIA RTX PRO 6000 Blackwell Server Edition"
[kamino]status = "untested"
[implicit_mpm]status = "untested"
[style3d]status = "untested"Steel docs and tutorials are licensed under Apache-2.0. Third-party notices. "Skild", "Skild AI" and the Skild logo are trademarks of Skild AI and are not licensed under Apache-2.0.