Goal
Add the full 50-block Melissa & Doug Wooden ABC/123 Blocks set to prl_assets.
Block specs
- 50 one-inch (25.4mm) cubes
- Wooden, hand-painted with letters, numbers, and pictures
- Colors: red, blue, green, yellow, natural wood backgrounds
- Mass: ~15g per block
MuJoCo properties
- Geom:
box with half-extents [0.0127, 0.0127, 0.0127]
- Friction:
0.8 (wood-on-wood)
- Each block is a separate object type (
block_A, block_B, ..., block_1, block_2, ...) or a single wooden_block type with texture variants
Texture pipeline
Step 1: Photograph the real blocks
- Photograph each face of each block (6 faces × 50 blocks = 300 photos)
- Use a consistent setup: white background, even lighting, overhead camera
- Name files:
block_A_front.jpg, block_A_back.jpg, etc.
Step 2: Create UV-mapped textures
- Stitch the 6 face photos into a cube unwrap texture (cross layout)
- Script to automate: crop, align, compose into single PNG per block
- Output:
block_A.png, block_B.png, etc.
Step 3: Create MuJoCo assets
- One XML per block (or one XML with material variants)
meta.yaml with geometric properties (box, 0.0127m half-extents)
- Register textures as MuJoCo
texture + material assets
Step 4: Verify
- Load all 50 in a scene, check grasping with Robotiq
- Verify stacking stability in physics mode
- Check that TSR
grasp_box() works for the small size
Design questions
- One type or 50 types? A single
wooden_block type with 50 instances (same physics, different textures) is simpler. But block_A, block_B etc. allows asking the robot "pick up the letter A" which is more interesting for demos.
- Grasp feasibility: 25.4mm is small for the Robotiq 2F-140 (min opening ~0mm, max 140mm). Should work but may need tuned grasp TSR tolerances.
Use cases
- Stacking demos (build a tower, spell a word)
- Sorting (by color, by letter vs number)
- LLM-driven tasks ("spell HELLO", "stack the vowels")
Goal
Add the full 50-block Melissa & Doug Wooden ABC/123 Blocks set to prl_assets.
Block specs
MuJoCo properties
boxwith half-extents[0.0127, 0.0127, 0.0127]0.8(wood-on-wood)block_A,block_B, ...,block_1,block_2, ...) or a singlewooden_blocktype with texture variantsTexture pipeline
Step 1: Photograph the real blocks
block_A_front.jpg,block_A_back.jpg, etc.Step 2: Create UV-mapped textures
block_A.png,block_B.png, etc.Step 3: Create MuJoCo assets
meta.yamlwith geometric properties (box, 0.0127m half-extents)texture+materialassetsStep 4: Verify
grasp_box()works for the small sizeDesign questions
wooden_blocktype with 50 instances (same physics, different textures) is simpler. Butblock_A,block_Betc. allows asking the robot "pick up the letter A" which is more interesting for demos.Use cases