1 pose_generation.candidate_generation
pose_generation.candidate_generation
Candidate pose generation with modular sampling and pruning rules.
This module implements a clear three-stage pipeline:
- Sample directions + radii around the latest pose using either area-uniform or forward-biased spherical distributions in the rig frame.
- Construct roll-free camera poses that look away from the last pose while keeping the camera x-axis horizontal in the world frame.
- Prune candidates via rule objects (mesh clearance, collision, free space). Rules may optionally emit diagnostics such as per-candidate mesh distances.
All poses are expressed as efm3d.aria.pose.PoseTW in the VIO world frame (LUF camera convention: x=left, y=up, z=forward).
CandidateViewGenerator returns compact valid views for rendering and keeps the full sampled shell as masks/diagnostics. Mixture generation should wrap this single-family generator rather than changing its ordering semantics.
1.1 Theory
Sampling uses a physical reference pose and, by default, a gravity-aligned sampling pose. Center samples are transformed into world-frame candidate poses, then pruned without compacting the full shell. Feasibility is a hard mask contract:
\[ c_i\in B_{\mathrm{occ}},\qquad \min_{x\in\mathcal{M}_{GT}}\lVert c_i-x\rVert_2>d_{\min}, \]
with optional motion bounds
\[ \lVert o_i\rVert_2\le d_{\max},\quad |\Delta h_i|\le h_{\max},\quad \max(0,-o_{i,z})\le b_{\max}. \]
Collision, bounds, and motion failures stay in masks and reason codes. Invalid candidates are not converted into low-RRI labels.
1.2 Classes
| Name | Description |
|---|---|
| CandidateViewGeneratorConfig | Configuration for sampling and pruning candidate camera poses around a reference frame. |
| CandidateViewGenerator | Generate candidate PoseTW around a reference rig pose using composeable and modular rules. |