Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions defaults.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
# Default configuration for run_pipeline.py
keyframing:
max_rotation: 20.0
max_distance: 1.0
Expand Down Expand Up @@ -38,7 +37,6 @@ optimization:
imu:
optimize_scale: false
optimize_gravity: false
optimize_imu_from_rig: false
optimize_bias: true
gyro_infl: 1.0
acc_infl: 1.0
Expand Down
1 change: 0 additions & 1 deletion lamaria/config/options.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,6 @@ class OptIMUOptions:

optimize_scale: bool = False
optimize_gravity: bool = False
optimize_imu_from_rig: bool = False
optimize_bias: bool = False


Expand Down
14 changes: 7 additions & 7 deletions lamaria/pipeline/optim/residual.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,19 +61,15 @@ def setup_manifolds_and_constraints(
problem,
):
"""Setup manifolds and parameter constraints"""
problem.set_manifold(session.gravity, pyceres.SphereManifold(3))
problem.set_manifold(
session.imu_from_rig.rotation.quat, pyceres.EigenQuaternionManifold()
)

# Apply optimization constraints based on configuration
if not imu_options.optimize_scale:
problem.set_parameter_block_constant(session.log_scale)
if not imu_options.optimize_gravity:
problem.set_parameter_block_constant(session.gravity)
if not imu_options.optimize_imu_from_rig:
problem.set_parameter_block_constant(session.imu_from_rig.rotation.quat)
problem.set_parameter_block_constant(session.imu_from_rig.translation)
else:
problem.set_manifold(session.gravity, pyceres.SphereManifold(3))

if not imu_options.optimize_bias:
constant_idxs = np.arange(3, 9)
for frame_id in session.imu_states:
Expand All @@ -82,4 +78,8 @@ def setup_manifolds_and_constraints(
pyceres.SubsetManifold(9, constant_idxs),
)

# IMU sensor is the reference frame, keeping identity tranformation constant
problem.set_parameter_block_constant(session.imu_from_rig.rotation.quat)
problem.set_parameter_block_constant(session.imu_from_rig.translation)

return problem