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:

  1. Sample directions + radii around the latest pose using either area-uniform or forward-biased spherical distributions in the rig frame.
  2. Construct roll-free camera poses that look away from the last pose while keeping the camera x-axis horizontal in the world frame.
  3. 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.