Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Demo Triangle

Recommended v0.1 Entry

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_center

Expected success indicators in the report:

  • strict_success=true
  • final_success=true
  • native_crash=false
  • child_penetration_violations=0
  • final_penetration_violations=0
  • parallel_phases=true

Reports are written under:

D:\codex_media\jimu

Test a 5cm XY Grid

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_diag5cm

For 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

Record a Video

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_video

When --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.

Current v0.1 Evidence

Local no-video validation on May 25, 2026:

  • target_floor_xy=(-0.05, 0.0): 5/5 strict_success, native crash 0, penetration 0, median parent wall clock about 74.6s.
  • (0.0, 0.0) +/- 5cm 9-point grid: 9/9 strict_success, native crash 0, penetration 0, median parent wall clock about 83.3s, max about 90.4s.
  • A full 9-point 3/3 matrix is still the next recommended acceptance gate before treating this profile as final.

v0.3 Lite Entry

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 none
D:\MiniConda\envs\sim2real-curobo\python.exe .\jimu_lite\run.py `
  --preset layer1_three_room_row `
  --profile grid64_batch `
  --render-mode none

Use --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 none

This 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.

v0.1 Snapshot

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, 7 picked wall pieces.
  • layer1_three_room_row: three connected floor cells, two shared walls, eight exterior walls, 10 picked 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 / 5deg release 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.

Included Files

Core runtime:

  • run_four_wall.py
  • four_wall_task.py
  • four_wall_curobo_runtime.py
  • motion_runtime.py
  • curobo_utils.py
  • targeted_runtime.py
  • targeted_curobo_runtime.py
  • foundationpose_bridge.py
  • grasp_planner.py
  • fixed_scene_provider.py
  • sam6d_pose_provider.py

Jimu structure and geometry files:

  • jimu_specs.py
  • jimu_structures.py
  • jimu_place_rules.py
  • build_order.py
  • validate_jimu_structures.py

Required local assets/configs committed in this repo:

  • red_jimu_tile_74x74x6p5.glb
  • red_jimu_tile_74x74x6p5.glb.coacd.ply
  • red_triangle_74x135x6p5.glb
  • RM75-B.curobo_with_tcp.urdf
  • rm75.yml
  • rm75_rough.yml
  • camera_extrinsic_opencv.npy
  • jimu_9objects_default_sam6d.json

External Dependencies

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_repro

You 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"

Run 2-Floor

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-fallback

Run 3-Floor

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_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-fallback

To test floor-position perturbations, change only the second value in --target-floor-xy 0.075 <y> to -0.030, 0.000, or 0.030.

Video Capture

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 12

Videos are generated from env.render() / RGB frames and then stitched into mp4. They are not desktop recordings.

Validation Summary

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 about 124.0s.
  • 3-floor: 3/3, mean no-video elapsed about 185.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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages