def get_jib_winch_position(self, apparentWindAngleRad, X1, X2): """ Calculates the winch position of the jib according to the apparent wind angle. Arguments --------- float : apparentWindAngleRad The wind angle in radians float : X1 Parameter for jib saturation function float : X2 Parameter for jib saturation function Returns ------- int The winch position of the jib """ jibAngle = JibController.get_jib_angle(apparentWindAngleRad, X1, X2) smallChange = not ControllerOutputRefiner.lowPowerAngle( inputSignal=jibAngle, currAngle=self.__currJibAngleRad) if (self.__controlModeID == ControlModes.LOW_POWER.value) and (smallChange): winchPosition = JibController.get_winch_position( self.__currJibAngleRad, self.__winchQuantParam) else: self.__currJibAngleRad = jibAngle winchPosition = JibController.get_winch_position( jibAngle, self.__winchQuantParam) return winchPosition
def test_quant_winch_position_360(self): quant_param = 360 self.assertEqual( JibController.get_winch_position(math.pi / 5, quant_param), 144) self.assertEqual( JibController.get_winch_position(math.pi / 8, quant_param), 90) self.assertEqual( JibController.get_winch_position(math.pi / 16, quant_param), 45) self.assertEqual( JibController.get_winch_position(math.pi / 17, quant_param), 42) self.assertEqual( JibController.get_winch_position(math.pi / 3, quant_param), 239) self.assertEqual( JibController.get_winch_position(math.pi / 2.2, quant_param), 327) self.assertEqual( JibController.get_winch_position(math.pi / 2.5, quant_param), 288)
def test_quant_winch_position_4(self): quant_param = 4 self.assertEqual( JibController.get_winch_position(math.pi / 5, quant_param), 180) self.assertEqual( JibController.get_winch_position(math.pi / 8, quant_param), 90) self.assertEqual( JibController.get_winch_position(math.pi / 16, quant_param), 90) self.assertEqual( JibController.get_winch_position(math.pi / 17, quant_param), 0) self.assertEqual( JibController.get_winch_position(math.pi / 3, quant_param), 270) self.assertEqual( JibController.get_winch_position(math.pi / 2.2, quant_param), 360) self.assertEqual( JibController.get_winch_position(math.pi / 2.5, quant_param), 270)