def set_action_space_scales()

in deepracer_navigation_pkg/deepracer_navigation_pkg/deepracer_navigation_node.py [0:0]


    def set_action_space_scales(self):
        """Helper method that finds the the maximum action values for the action space and stores them.
           The maximum speed value is also used to update the speed mapping coefficients.
        """
        try:
            if self.action_space_type == constants.ActionSpaceTypes.DISCRETE:
                self.max_action_space_values[constants.ModelMetadataKeys.STEERING] = \
                    abs(max(self.action_space,
                            key=lambda action:
                        abs(action[constants.ModelMetadataKeys.STEERING]))
                        [constants.ModelMetadataKeys.STEERING])
                self.max_action_space_values[constants.ModelMetadataKeys.SPEED] = \
                    abs(max(self.action_space,
                            key=lambda action:
                            abs(action[constants.ModelMetadataKeys.SPEED]))
                        [constants.ModelMetadataKeys.SPEED])
            elif self.action_space_type == constants.ActionSpaceTypes.CONTINUOUS:
                self.max_action_space_values[constants.ModelMetadataKeys.STEERING] = \
                    self.action_space[constants.ModelMetadataKeys.STEERING][constants.ModelMetadataKeys.CONTINUOUS_HIGH]
                self.max_action_space_values[constants.ModelMetadataKeys.SPEED] = \
                    self.action_space[constants.ModelMetadataKeys.SPEED][constants.ModelMetadataKeys.CONTINUOUS_HIGH]
            else:
                raise(f"Incorrect action space type: {self.action_space_type}")
            # This is the solution to a*x**2 + b*x for the two points in DEFAULT_SPEED_SCALES
            self.speed_mapping_coeficients['a'] = \
                (1.0 / self.max_action_space_values[constants.ModelMetadataKeys.SPEED]**2) * \
                (2.0 * constants.DEFAULT_SPEED_SCALES[0] - 4.0 * constants.DEFAULT_SPEED_SCALES[1])
            self.speed_mapping_coeficients['b'] = \
                (1.0 / self.max_action_space_values[constants.ModelMetadataKeys.SPEED]) * \
                (4.0 * constants.DEFAULT_SPEED_SCALES[1] - constants.DEFAULT_SPEED_SCALES[0])

            self.get_logger().info(f"Action space scale set: {self.max_action_space_values} \n"
                                   f" Mapping equation params a: {self.speed_mapping_coeficients['a']}"
                                   f" b: {self.speed_mapping_coeficients['b']}")
        except Exception as ex:
            self.get_logger().error(f"Unable to detect action space scale: {ex}")