The ThrusterAxisModel uses least-squares to solve for thruster values to achieve a desired axis value. The solver will find some sort of solution as long as there are enough thrusters for the system to be uniquely determined or overdetermined. As such, thruster models ( ReconfigureableThrusterModel class) should have a "disable" param that will remove them from the thruster-axis matrix and solution process. This way, if we add more thrusters such that the robot is overdetermined, but one stops working, we can simply disable this thruster, forcing the solver to find a solution that doesn't use it. This would require refactoring the classes quite a bit, and the robot only has enough thrusters to be uniquely determined as is, so this goal will not be implemented during the control system overhaul.
The ThrusterAxisModel uses least-squares to solve for thruster values to achieve a desired axis value. The solver will find some sort of solution as long as there are enough thrusters for the system to be uniquely determined or overdetermined. As such, thruster models ( ReconfigureableThrusterModel class) should have a "disable" param that will remove them from the thruster-axis matrix and solution process. This way, if we add more thrusters such that the robot is overdetermined, but one stops working, we can simply disable this thruster, forcing the solver to find a solution that doesn't use it. This would require refactoring the classes quite a bit, and the robot only has enough thrusters to be uniquely determined as is, so this goal will not be implemented during the control system overhaul.