The current recommended full-build profile is Jimu Full Build Robust-Fast v16 Parallel.
It builds the full four-wall triangle-roof structure:
- first layer: 4 square wall panels
- second layer: 4 red triangle panels
- no scripted fallback
- strict CuRobo Graph IK / MotionGen path
- strict release
5mm / 5deg - strict triangle contact metric, post-place clearance, held sweep, and final collision checks
- square refill slot unchanged:
-0.615 -0.25 - triangle refill slot unchanged:
-0.515 -0.25
Use this command for the fastest reliable no-video run:
$env:TEMP='D:\codex_tmp'
$env:TMP='D:\codex_tmp'
$env:PYTHONDONTWRITEBYTECODE='1'
D:\MiniConda\envs\sim2real-curobo\python.exe -B .\run_four_wall.py `
--structure-preset four_wall `
--jimu-build-layers two `
--jimu-second-layer-triangle-profile `
--jimu-full-roof-robust-reliable-v11 `
--jimu-stable-native-v16-layer-process-isolation `
--jimu-stable-native-v16-parallel-phases `
--target-floor-xy 0.0 0.0 `
--render-mode none `
--run-name full_roof_v16_parallel_centerExpected success indicators in the report:
strict_success=truefinal_success=truenative_crash=falsechild_penetration_violations=0final_penetration_violations=0parallel_phases=true
Reports are written under:
D:\codex_media\jimu
To scan the 9-point grid centered at (0.0, 0.0) with offsets {-0.05, 0.0, +0.05}:
$env:TEMP='D:\codex_tmp'
$env:TMP='D:\codex_tmp'
$env:PYTHONDONTWRITEBYTECODE='1'
D:\MiniConda\envs\sim2real-curobo\python.exe -B .\run_four_wall.py `
--structure-preset four_wall `
--jimu-build-layers two `
--jimu-second-layer-triangle-profile `
--jimu-full-roof-robust-reliable-v11 `
--jimu-stable-native-v16-layer-process-isolation `
--jimu-stable-native-v16-parallel-phases `
--target-floor-xy 0.0 0.0 `
--jimu-robust-scan-grid diag5cm `
--jimu-robust-scan-repeats 1 `
--jimu-robust-scan-native-crash-retry 0 `
--render-mode none `
--run-name full_roof_v16_parallel_diag5cmFor diag5cm, inspect the generated *_robust_scan_summary.json and require:
all_counted_strict_success=true- classification count only contains
strict_success - every counted attempt has
penetration_violations=0
Video capture uses env.render() / rgb_array frames and is intentionally not used for timing.
$env:TEMP='D:\codex_tmp'
$env:TMP='D:\codex_tmp'
$env:PYTHONDONTWRITEBYTECODE='1'
D:\MiniConda\envs\sim2real-curobo\python.exe -B .\run_four_wall.py `
--structure-preset four_wall `
--jimu-build-layers two `
--jimu-second-layer-triangle-profile `
--jimu-full-roof-robust-reliable-v11 `
--jimu-stable-native-v16-layer-process-isolation `
--jimu-stable-native-v16-parallel-phases `
--target-floor-xy 0.0 0.0 `
--render-mode none `
--record-sim-motion-video `
--video-render-mode rgb_array `
--sim-motion-video-path D:\codex_media\jimu\full_roof_v16_center_success.mp4 `
--sim-motion-video-fps 30 `
--sim-motion-video-every-n 4 `
--sim-motion-video-initial-frames 12 `
--run-name full_roof_v16_center_success_videoWhen --record-sim-motion-video is enabled, v16 records the two isolated phases serially and then combines the phase frame directories into one mp4. This avoids render/GPU contention during video capture. No-video timing runs still use --jimu-stable-native-v16-parallel-phases.
Local no-video validation on May 25, 2026:
target_floor_xy=(-0.05, 0.0):5/5 strict_success, native crash0, penetration0, median parent wall clock about74.6s.(0.0, 0.0) +/- 5cm9-point grid:9/9 strict_success, native crash0, penetration0, median parent wall clock about83.3s, max about90.4s.- A full 9-point
3/3matrix is still the next recommended acceptance gate before treating this profile as final.
Use jimu_lite for the validated v0.3_lite Grid64 workflow:
D:\MiniConda\envs\sim2real-curobo\python.exe .\jimu_lite\run.py `
--preset layer1_two_room_row `
--profile grid64_batch `
--render-mode noneD:\MiniConda\envs\sim2real-curobo\python.exe .\jimu_lite\run.py `
--preset layer1_three_room_row `
--profile grid64_batch `
--render-mode noneUse --y-offset <meters> for Y perturbations, for example --y-offset 0.04. The v0.3_lite Grid64 path validated both structures at y=-5,-4,-3,-2,-1,+1,+2,+3,+4,+5cm: 2-floor 10/10, 3-floor 10/10, and all final penetration checks were 0. Details and video flags are in jimu_lite/README.md.
Triangle second-layer demo preset:
D:\MiniConda\envs\sim2real-curobo\python.exe .\jimu_lite\run.py `
--preset single_room_triangle_roof `
--profile grid64_batch `
--render-mode noneThis expands to the root four_wall structure with one floor, four first-layer square wall panels, four second-layer red triangle panels, two build layers, and four triangle refill inventory pieces. The active graspable triangle stays at the normal rear source slot while the far inventory visuals are consumed and refilled through the existing source-stack workflow.
This repository contains the Jimu/RM75 fast-standard first-layer wall-building snapshot validated locally on May 20, 2026.
The supported v0.1 targets are:
layer1_two_room_row: two connected floor cells, one shared wall, six exterior walls,7picked wall pieces.layer1_three_room_row: three connected floor cells, two shared walls, eight exterior walls,10picked wall pieces.
The current default validation setup keeps these constraints:
- Pieces are picked from the rear refill/source slot.
- Shared walls are placed top-down.
- Exterior/non-shared walls use horizontal side-push final contact.
- Transparent goal preview remains visible and each completed goal is hidden after successful placement.
- Released pieces are snapped to the goal only after passing the
5mm / 5degrelease check. - CuRobo collision planning, dense execution-path validation, and final geometry penetration checks remain enabled.
- Scripted simulation fallback and direct set-pose success are disabled.
Core runtime:
run_four_wall.pyfour_wall_task.pyfour_wall_curobo_runtime.pymotion_runtime.pycurobo_utils.pytargeted_runtime.pytargeted_curobo_runtime.pyfoundationpose_bridge.pygrasp_planner.pyfixed_scene_provider.pysam6d_pose_provider.py
Jimu structure and geometry files:
jimu_specs.pyjimu_structures.pyjimu_place_rules.pybuild_order.pyvalidate_jimu_structures.py
Required local assets/configs committed in this repo:
red_jimu_tile_74x74x6p5.glbred_jimu_tile_74x74x6p5.glb.coacd.plyred_triangle_74x135x6p5.glbRM75-B.curobo_with_tcp.urdfrm75.ymlrm75_rough.ymlcamera_extrinsic_opencv.npyjimu_9objects_default_sam6d.json
The repo expects the local CuRobo environment and the portable ManiSkill/RM75 asset tree to be present.
Default paths used by the launcher:
D:\MiniConda\envs\sim2real-curobo\python.exe
C:\Users\Administrator\Documents\New project\Beta_demo_v1_1\repro\curobo_snapshot
D:\Lite\jimu_four_wall_portable_full_bundle_20260517_232909\Beta_demo-codex-v0.9\jimu_portable_reproYou can override them with environment variables:
$env:JIMU_PYTHON="D:\MiniConda\envs\sim2real-curobo\python.exe"
$env:CUROBO_ROOT="C:\path\to\curobo_snapshot"
$env:JIMU_PORTABLE_REPRO_DIR="D:\path\to\jimu_portable_repro"No-video timing/validation command:
D:\MiniConda\envs\sim2real-curobo\python.exe .\run_four_wall.py `
--python D:\MiniConda\envs\sim2real-curobo\python.exe `
--run-name v0_1_two_floor_y000 `
--structure-preset layer1_two_room_row `
--target-floor-xy 0.075 0.000 `
--preplace-room-floors `
--jimu-wall-cycle-filter all `
--jimu-fast-standard-profile `
--case-timeout-s 200 `
--jimu-build-order shared_first_far_to_near `
--jimu-access-preserving-order `
--jimu-wall-approach-mode outside `
--jimu-exterior-wall-approach-mode outside `
--render-mode none `
--sim-motion-mode playback `
--sim-motion-playback-sleep 0.0 `
--sim-motion-playback-hold-steps 0 `
--sim-motion-playback-goal-hold-max-steps 0 `
--sim-motion-render-sync-every-n 0 `
--show-goal-preview `
--goal-preview-alpha 0.2 `
--goal-preview-color 1.0 1.0 1.0 `
--jimu-release-pos-tol-m 0.005 `
--jimu-release-rot-tol-deg 5.0 `
--jimu-snap-released-piece-to-goal-if-valid `
--jimu-final-state-collision-check `
--no-jimu-pin-released-piece-to-goal `
--no-scripted-sim-fallbackNo-video timing/validation command:
D:\MiniConda\envs\sim2real-curobo\python.exe .\run_four_wall.py `
--python D:\MiniConda\envs\sim2real-curobo\python.exe `
--run-name v0_1_three_floor_y000 `
--structure-preset layer1_three_room_row `
--target-floor-xy 0.075 0.000 `
--preplace-room-floors `
--jimu-wall-cycle-filter all `
--jimu-fast-standard-profile `
--case-timeout-s 200 `
--jimu-build-order shared_first_far_to_near `
--jimu-access-preserving-order `
--jimu-wall-approach-mode outside `
--jimu-exterior-wall-approach-mode outside `
--render-mode none `
--sim-motion-mode playback `
--sim-motion-playback-sleep 0.0 `
--sim-motion-playback-hold-steps 0 `
--sim-motion-playback-goal-hold-max-steps 0 `
--sim-motion-render-sync-every-n 0 `
--show-goal-preview `
--goal-preview-alpha 0.2 `
--goal-preview-color 1.0 1.0 1.0 `
--jimu-release-pos-tol-m 0.005 `
--jimu-release-rot-tol-deg 5.0 `
--jimu-snap-released-piece-to-goal-if-valid `
--jimu-final-state-collision-check `
--no-jimu-pin-released-piece-to-goal `
--no-scripted-sim-fallbackTo test floor-position perturbations, change only the second value in --target-floor-xy 0.075 <y> to -0.030, 0.000, or 0.030.
Add these arguments to either command to save an env-rendered step-frame video:
--record-sim-motion-video `
--video-render-mode rgb_array `
--sim-motion-video-path C:\codex_media\jimu\v0_1_example.mp4 `
--sim-motion-video-fps 30 `
--sim-motion-video-every-n 4 `
--sim-motion-video-initial-frames 12Videos are generated from env.render() / RGB frames and then stitched into mp4. They are not desktop recordings.
Latest local validation, May 20, 2026:
| Structure | y offset | Success | Release checks | Final penetration | No-video elapsed |
|---|---|---|---|---|---|
layer1_two_room_row |
-0.030 |
7/7 |
7 OK / 0 FAIL |
0 |
129.95s |
layer1_two_room_row |
0.000 |
7/7 |
7 OK / 0 FAIL |
0 |
117.85s |
layer1_two_room_row |
0.030 |
7/7 |
7 OK / 0 FAIL |
0 |
124.18s |
layer1_three_room_row |
-0.030 |
10/10 |
10 OK / 0 FAIL |
0 |
190.7s |
layer1_three_room_row |
0.000 |
10/10 |
10 OK / 0 FAIL |
0 |
183.31s |
layer1_three_room_row |
0.030 |
10/10 |
10 OK / 0 FAIL |
0 |
180.96s |
Aggregate:
2-floor:3/3, mean no-video elapsed about124.0s.3-floor:3/3, mean no-video elapsed about185.0s.- All six runs:
release-pose FAIL = 0,penetration_violations = 0.
Process collision evidence for the six video runs:
place_hover_release_pre_execute_validate: all recorded checks passed.post_place_clearance_pre_execute_validate: all recorded checks passed.- Candidate-level CuRobo failures may appear in logs, but failed candidates were not selected for execution.
More details are in docs/v0.1_validation.md.