test_thrForceMappingSign

Validate off-pulsing sign repair independently of the legacy reference model.

test_thrForceMappingSign.dv_case(request)[source]

Return the existing six-thruster DV geometry with the reported CoM offset.

Parameters:

request – input body torque [N*m]

Returns:

body torque map [m], compensated target [N*m], and thrust limits [N]

test_thrForceMappingSign.run_mapping(mapping, target, axes, limits, threshold=4.0, request=None)[source]

Run an off-pulsing allocation for a prescribed body-frame torque map.

Parameters:
  • mapping – torque map with one column per thruster [m]

  • target – nominal-thrust-compensated body torque [N*m]

  • axes – orthonormal control axes, one per row

  • limits – maximum thrust per thruster [N]

  • threshold – saturation scaling angle threshold [rad]

  • request – optional exact input torque, avoiding compensation roundoff in boundary tests [N*m]

Returns:

signed forces [N] and reported torque angle [rad]

test_thrForceMappingSign.test_off_pulsing_constrained_residual(negative_map, target)[source]

Match SciPy’s optimal residual for feasible and infeasible sign-constrained requests.

test_thrForceMappingSign.test_off_pulsing_sign_repair(axes)[source]

Recover the requested physical torque without positive off-pulsing commands.

test_thrForceMappingSign.test_off_pulsing_sign_repair_oracle(dimension, count, capfd)[source]

Compare repaired allocations with an independent NNLS oracle across geometries and ranks.

test_thrForceMappingSign.test_off_pulsing_sign_repair_saturation_policy()[source]

Keep the angle threshold and uniform magnitude scaling after sign repair.

test_thrForceMappingSign.test_off_pulsing_valid_allocation_unchanged()[source]

Preserve the previous two-stage result when all of its force signs are valid.

test_thrForceMappingSign.test_sign_repair_feasible_boundary(basis, capfd)[source]

Converge to the minimum-force allocation on a cone boundary under equivalent control bases.

test_thrForceMappingSign.test_sign_repair_minimum_norm(dimension, count)[source]

Check the secondary force objective with an independent constrained optimizer.

test_thrForceMappingSign.test_sign_repair_nearly_dependent_axes(capfd)[source]

Preserve the achieved torque when the minimum-force QR has nearly dependent columns.

test_thrForceMappingSign.test_sign_repair_proportional_columns(angle)[source]

Obtain one minimum-norm allocation for proportional columns under equivalent control bases.

test_thrForceMappingSign.test_sign_repair_roundoff_boundary(angle)[source]

Clamp roundoff-sized positive forces without changing the allocation or saturation decision.

test_thrForceMappingSign.test_sign_repair_weak_thruster(angle)[source]

Track an achievable torque without concentrating force on a weak, aligned thruster.