Last Updated: 2026-05-02
Current Phase: Phase 1 - ✅ COMPLETE (100%)
Next Phase: Phase 2 - GaussianSensor Core
- Project structure created
- Documentation framework (12k+ words)
- Git repository initialized
- Environment configured (Python 3.12, CUDA 12.1, RTX 4090)
- Dependencies installed (PyTorch, MuJoCo, gsplat, lpips)
- Install gsplat library (v1.5.3)
- Verify CUDA/GPU setup (RTX 4090, 25.2GB VRAM)
- Set up MuJoCo environment (v3.5.0)
- Create Phase 1 examples
- Implement basic 3DGS rendering
- Load PLY format 3DGS models
- CPU-based rasterizer (fallback)
- Render single/multi-object scenes
- Test hybrid rendering pipeline
- MuJoCo RGB + Segmentation
- Robot mask extraction
- 3DGS object rendering
- Mask-based compositing
- Validate rendering quality
- Visual inspection (6-panel comparison)
- Multiple camera angles
- Create test scenes (robot + objects)
- Extract camera pose from MuJoCo
- Drive 3DGS renderer with MuJoCo camera
- Segment ID mechanism documented
- Generate simple 3DGS objects (sphere, cylinder, bowl)
- Individual objects: mug, plate, bowl, ball (4 PLY files)
- Kitchen scene: 12 objects, 6180 Gaussians
- Scene generator script (procedural kitchen layout)
- Complete demo (3 camera views, 18 outputs)
Current Status:
- ✅ Hybrid rendering pipeline validated
- ✅ MuJoCo segmentation working (3.9% robot coverage)
- ✅ 3DGS rendering working (GPU + CPU fallback)
- ✅ gsplat GPU compilation FIXED! (10,223 FPS @ 160×120)
- ✅ 12-object kitchen scene demo complete
- 🔄 Downloading Mip-NeRF 360 kitchen scene
Resolved Issues:
- gsplat CUDA compilation failure ✅ FIXED
- Root cause: CUDA 11.6 nvcc doesn't support compute_89, broken libcudart symlink
- Solution: Fixed symlinks + set
TORCH_CUDA_ARCH_LIST="8.6"compatibility mode - Performance: 10,223 FPS single camera, 374k FPS batched (4096 cameras)
- Fix gsplat CUDA compilation
- Option A: Set
TORCH_CUDA_ARCH_LIST="8.6"+ fix cudart symlinks ✅ USED - Fix libcudart.so symlink pointing to non-existent 11.6.55
- Create lib64 symlinks for linker
- Option A: Set
- Benchmark GPU vs CPU performance
- Target: 5000+ FPS @ 160×120 ✅ ACHIEVED (10,223 FPS)
- Measure actual gsplat throughput (374k FPS for 4096 cameras)
- Profile GPU memory usage (1.1MB allocated, 2.0MB reserved)
- Download existing 3DGS room datasets
- Download script created (download_mipnerf360.py)
- Mip-NeRF 360 dataset downloaded (11.95GB) ✅
- Extracted 7 scenes (kitchen: 279 images, 1.5GB) ✅
- Train 3DGS model (~1-2h on RTX 4090) OR find pre-trained
- Replace multi-object with single room PLY
- Update demo to use complete room
- Compare: multi-object vs single-scene performance
- Consolidate rendering scripts
- Created
src/mugs/utils/rendering.py(8 unified functions) - Created
examples/unified_demo.py(simplified interface)
- Created
- Extract common functions to utilities
- Add comprehensive docstrings
- Segmentation ID guide
- 3DGS room datasets guide
- Performance benchmarking guide (benchmark_full_pipeline.py)
- Phase 1 complete summary
Target Completion: End of Phase 1
- Implement
GaussianSensorCfgdataclass- Resolution, FPS, batch size configs
- Camera intrinsics/extrinsics
- Asset loading parameters
- Implement
GaussianSensorclass-
__init__: Load 3DGS asset, setup renderer -
update(poses): Batched rendering -
get_images(): Retrieve RGB tensors -
reset(): Clear cache
-
- Implement
se3_to_view_matrix()(MuJoCo → OpenGL) - Implement
compute_intrinsics()(FOV → K matrix) - Add coordinate system tests (unit tests)
- Implement
ObjectLibraryclass- Load/cache 3DGS PLY files
- Asset metadata (YAML configs)
- Memory-efficient asset sharing
- Create sample object assets
- 3-5 simple objects (cube, sphere, mug, etc.)
- Capture 3DGS models (COLMAP → 3DGS training)
- Test multi-object scenes (5+ objects per scene)
- Test dynamic objects (moving poses frame-to-frame)
- Benchmark full pipeline latency
Success Criteria:
- ✅ Sensor API complete with documentation
- ✅ End-to-end latency < 10ms for 4096 envs
- ✅ 5+ object assets ready
- Capture 20+ household object 3DGS models
- Kitchen items (5 objects)
- Tools (5 objects)
- Containers (5 objects)
- Misc (5 objects)
- Document capture pipeline (COLMAP workflow)
- Optimize asset file sizes (compression)
- Implement
SceneGeneratorclass- Random object placement (physics-valid)
- Object orientation sampling
- Collision avoidance
- Diversity metrics
- Implement scene templates
- Tabletop manipulation
- Kitchen counter
- Floor cleanup
- Add scene export (HDF5 format)
- Visual inspection script (render grid view)
- Quality metrics (coverage, sharpness)
- Fix problematic assets
Success Criteria:
- ✅ 20+ production-quality 3DGS assets
- ✅ Scene generator creates diverse scenes
- ✅ Asset library documented
- Generate training dataset
- 10k low-res rendered images (160×120)
- Ground truth high-res images (640×480)
- Paired LR-HR dataset (HDF5)
- Split train/val/test (80/10/10)
- Implement
SimAwareSRmodel- SwinIR-light backbone (900K params)
- Simulation-aware features (depth, segmentation)
- Perceptual loss (LPIPS + L1)
- Training pipeline
- Hyperparameter sweep (LR, batch size)
- Multi-GPU training (DDP)
- Checkpoint best model (val LPIPS)
- Export to TorchScript/ONNX
- Benchmark inference latency (target: <2ms)
- Profile memory usage
- Quantitative metrics (LPIPS, PSNR, SSIM)
- Qualitative comparison (visual grid)
- Ablation studies (w/o sim features, etc.)
Success Criteria:
- ✅ SR model LPIPS < 0.10 on test set
- ✅ Inference latency < 2ms per image
- ✅ Ablation results documented
- Implement standard VLA tasks
- Pick-and-place (3 variants)
- Bimanual manipulation (2 tasks)
- Mobile manipulation (1 task)
- Baseline evaluations
- Domain randomization baseline
- Isaac Sim baseline (if feasible)
- Performance benchmarks
- Rendering FPS vs. batch size
- End-to-end training throughput
- GPU memory scaling
- Draft paper structure (RSS/CoRL template)
- Write methodology section
- Generate all figures
- System architecture diagram
- Rendering pipeline visualization
- Performance comparison plots
- Qualitative results grid
- Write results section
- Write related work & discussion
- Internal review & revision
- Clean up code & documentation
- Add installation guide
- Create demo scripts
- Add unit tests (target: >80% coverage)
- License compliance check
- Create release branch
Success Criteria:
- ✅ Paper draft complete
- ✅ Benchmark results published
- ✅ Code ready for public release
- Update technical design doc as we learn
- Document all design decisions
- Keep README.md up-to-date
- Write API documentation (docstrings)
- Add unit tests for each module
- Integration tests for end-to-end pipeline
- Performance regression tests
- Code review before merging
- Set up CI/CD pipeline (GitHub Actions)
- Set up experiment tracking (wandb/mlflow)
- Set up compute cluster access
- Backup strategy for assets
These are exploratory items that can run alongside the main implementation:
-
How much does SR model help vs. direct high-res rendering?
- Ablation study comparing approaches
-
Can we use NeRF instead of 3DGS for certain objects?
- Benchmark NeRF vs 3DGS speed/quality
-
What's the sim2real transfer gap?
- Collect real-world images for comparison
- Measure domain gap metrics
-
Can we learn 3DGS from simulation + real images?
- Hybrid training pipeline experiment
-
What's the minimal asset quality threshold?
- Downsample assets, measure policy performance
- None (Phase 0 complete)
- MuJoCo Warp access (verify licensing)
- GPU cluster access (for SR training)
- COLMAP environment (for asset capture)
When starting next session:
- Read
docs/design/TECHNICAL_DESIGN.md(Phase 1 section) - Check out Phase 1 development branch
- Start with
1.1 Environment Setupchecklist - Update this TODO.md as you complete items
Progress Tracking:
- Phase 0 (Setup): ✅ Complete
- Phase 1 (gsplat PoC): 🔄 Not started
- Phase 2 (GaussianSensor): ⏸️ Waiting
- Phase 3 (Object Library): ⏸️ Waiting
- Phase 4 (Super-Resolution): ⏸️ Waiting
- Phase 5 (Benchmarking): ⏸️ Waiting