def callback(parameter_list): nonlocal callback_called callback_called = True r = SetParametersResult(successful=True) for p in parameter_list: if p.type_ != Parameter.Type.INTEGER: r.successful = False r.reason = 'Integer parameters only' return r if p.value % 2 != 0: r.successful = False r.reason = 'Integer must be even' return r return r
def _on_param_changed(self, params): result = SetParametersResult() result.successful = True for param in params: if param.name == "wheel_radius": self.reset_odometry() self._wheel_radius = param.value elif param.name == "wheel_distance": self.reset_odometry() self._wheel_distance = param.value return result
def _on_set_parameters(self, params): """Handle Parameter events especially for side.""" result = SetParametersResult() try: for param in params: if param.name == "side": self.get_logger().warn(f"Side changed {param.value}") self.side = param else: setattr(self, param.name, param) result.successful = True except MatchStartedException as e: result.reason = e return result
def _on_set_parameters(self, params): """Handle Parameter events especially for side""" result = SetParametersResult() try: for param in params: if param.name == "side": self.get_logger().warn(f"Side changed {param.value}") self.side = param else: setattr(self, param.name, param) ( self.robot_pose.pose.position.x, self.robot_pose.pose.position.y, theta, ) = self.fetchStartPosition() self.robot_pose.pose.orientation = euler_to_quaternion(theta) self.update_transform() result.successful = True except BaseException as e: result.reason = e return result