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.