Expand synthetic generator: geometric diversity #8

Closed
opened 2026-02-02 19:33:21 +00:00 by forbes · 0 comments
Owner

Summary

Add geometric diversity to synthetic assembly generation to ensure the model trains on realistic geometric configurations. Per Phase 1.2 of the repository plan.

Features to implement

Random orientations and positions

  • Bodies placed with random 3D positions (not just along a line)
  • Random orientations via scipy.spatial.transform.Rotation
  • Anchor points derived from body geometry, not always at midpoints

Parallel axis detection

  • Intentionally generate assemblies with parallel joint axes
  • These trigger geometric degeneracies that the Jacobian catches but the pebble game misses
  • Critical for training the model to recognize when combinatorial analysis is insufficient
  • Configurable ratio of parallel-axis assemblies in a batch

Grounded vs floating variants

  • Generate both grounded (one body fixed to world) and floating (free-floating) assemblies
  • Configurable ratio in batch generation
  • Grounded assemblies have 0 trivial DOF; floating have 6

Axis alignment diversity

  • Joint axes sampled from: cardinal axes, random unit vectors, near-parallel perturbations
  • Ensures the model does not overfit to axis-aligned configurations

Requirements

  • RandomPoseGenerator helper (or methods on SyntheticAssemblyGenerator) for diverse body placement
  • Parallel axis injection with configurable probability
  • grounded parameter on all template generators
  • Joint axis sampling strategies: cardinal, random, near-parallel
  • Update batch generation config to control geometric diversity parameters

Depends on

  • #5 (generator port)
  • #7 (assembly templates)
## Summary Add geometric diversity to synthetic assembly generation to ensure the model trains on realistic geometric configurations. Per Phase 1.2 of the repository plan. ## Features to implement ### Random orientations and positions - Bodies placed with random 3D positions (not just along a line) - Random orientations via `scipy.spatial.transform.Rotation` - Anchor points derived from body geometry, not always at midpoints ### Parallel axis detection - Intentionally generate assemblies with parallel joint axes - These trigger geometric degeneracies that the Jacobian catches but the pebble game misses - Critical for training the model to recognize when combinatorial analysis is insufficient - Configurable ratio of parallel-axis assemblies in a batch ### Grounded vs floating variants - Generate both grounded (one body fixed to world) and floating (free-floating) assemblies - Configurable ratio in batch generation - Grounded assemblies have 0 trivial DOF; floating have 6 ### Axis alignment diversity - Joint axes sampled from: cardinal axes, random unit vectors, near-parallel perturbations - Ensures the model does not overfit to axis-aligned configurations ## Requirements - [ ] `RandomPoseGenerator` helper (or methods on `SyntheticAssemblyGenerator`) for diverse body placement - [ ] Parallel axis injection with configurable probability - [ ] `grounded` parameter on all template generators - [ ] Joint axis sampling strategies: cardinal, random, near-parallel - [ ] Update batch generation config to control geometric diversity parameters ## Depends on - #5 (generator port) - #7 (assembly templates)
forbes added the phase:1feature labels 2026-02-02 19:33:21 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kindred/solver#8