Project: engagement_generation License: BSD Dependencies:
Used by:
None |
engagement_generation/src/edu/wpi/hri/gen/policy/ref/DegradedReferencePolicy.javaGo to the documentation of this file.00001 /* 00002 * Software License Agreement (BSD License) 00003 * 00004 * Copyright (c) 2010, Worcester Polytechnic Institute 00005 * All rights reserved. 00006 * 00007 * Redistribution and use in source and binary forms, with or without 00008 * modification, are permitted provided that the following conditions 00009 * are met: 00010 * 00011 * * Redistributions of source code must retain the above copyright 00012 * notice, this list of conditions and the following disclaimer. 00013 * * Redistributions in binary form must reproduce the above 00014 * copyright notice, this list of conditions and the following 00015 * disclaimer in the documentation and/or other materials provided 00016 * with the distribution. 00017 * * Neither the name of Worcester Polytechnic Institute. nor the names 00018 * of its contributors may be used to endorse or promote products 00019 * derived from this software without specific prior written permission. 00020 * 00021 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 00022 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 00023 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 00024 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 00025 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 00026 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 00027 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 00028 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 00029 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 00030 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 00031 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 00032 * POSSIBILITY OF SUCH DAMAGE. 00033 */ 00034 package edu.wpi.hri.gen.policy.ref; 00035 00036 import edu.wpi.hri.gen.comm.BMLEmitListener; 00037 import edu.wpi.hri.gen.comm.GazeKnowledge; 00038 import edu.wpi.hri.gen.comm.SituationKnowledge; 00039 import edu.wpi.hri.gen.comm.SituationKnowledge.InvalidIDException; 00040 import edu.wpi.hri.gen.ebml.EBMLList; 00041 import edu.wpi.hri.gen.ebml.ReferenceBehavior; 00042 import edu.wpi.hri.log.Logger; 00043 import edu.wpi.hri.log.Logger.LoggerLevel; 00044 00053 public class DegradedReferencePolicy extends ReferencePolicy { 00054 00065 public DegradedReferencePolicy(Logger logger, BMLEmitListener emit, 00066 NoPointZone noZone) { 00067 super(logger, emit, noZone); 00068 this.logger.debug(LoggerLevel.INIT, "Created Degraded ..."); 00069 } 00070 00071 @Override 00072 public boolean apply(EBMLList list, GazeKnowledge knowledge, 00073 SituationKnowledge world, String actor) { 00074 try { 00075 logger.debug(LoggerLevel.POLICY_EXECUTION, 00076 "Applying for entire list"); 00077 // create the data structures required to find the optimal series of 00078 // behaviors. 00079 ReferenceBehavior[] orderedRefs = this.findOrderedList(list); 00080 DegradedReferenceOptions[] orderedOptions = new DegradedReferenceOptions[orderedRefs.length]; 00081 00082 // create a reference option for each behavior, in the same order 00083 // this automatically filters out the unreliable options 00084 for (int c = 0; c < orderedRefs.length; c++) { 00085 orderedOptions[c] = new DegradedReferenceOptions(logger, 00086 orderedRefs[c], world); 00087 } 00088 return this.applyOptions(list, knowledge, world, orderedOptions, 00089 actor); 00090 } catch (InvalidIDException e) { 00091 logger.error("Reference policy failed: " + e.getMessage()); 00092 logger.printThrowable(LoggerLevel.ALL, e); 00093 return false; 00094 } 00095 } 00096 } |