Project: engagement_generation License: BSD Dependencies:
Used by:
None |
engagement_generation/src/edu/wpi/hri/gen/policy/ref/DegradedReferenceOptions.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 java.util.ArrayList; 00037 import java.util.List; 00038 00039 import edu.wpi.hri.gen.comm.SituationKnowledge; 00040 import edu.wpi.hri.gen.ebml.ReferenceBehavior; 00041 import edu.wpi.hri.gen.ebml.SpeechOption; 00042 import edu.wpi.hri.log.Logger; 00043 import edu.wpi.hri.log.Logger.LoggerLevel; 00044 00052 public class DegradedReferenceOptions extends ReferenceOptions { 00053 00065 public DegradedReferenceOptions(Logger logger, ReferenceBehavior behavior, 00066 SituationKnowledge situation) { 00067 super(logger, behavior, situation); 00068 this.logger.debug(LoggerLevel.INIT, "Created Degraded ..."); 00069 } 00070 00071 @Override 00072 protected List<GestureSpeechPair> generateOptions(ReferenceBehavior behavior) { 00073 List<GestureSpeechPair> pairs = new ArrayList<GestureSpeechPair>(); 00074 // Create all of the possible gesture-speech pairs from the reference 00075 for (SpeechOption so : behavior.getSpeechOptions()) { 00076 if (!so.isDeictic()) 00077 pairs.add(new GestureSpeechPair(logger, GestureOption.LAMBDA, 00078 so, behavior.getTarget(), situation)); 00079 } 00080 return pairs; 00081 } 00082 00083 @Override 00084 protected List<GestureSpeechPair> filterReliable( 00085 List<GestureSpeechPair> pairs, ReferenceBehavior behavior, 00086 SituationKnowledge situation) { 00087 List<GestureSpeechPair> toKeep = new ArrayList<GestureSpeechPair>(); 00088 this.logger.debug(LoggerLevel.POLICY_EXECUTION, 00089 "filtering for reliability"); 00090 00091 GestureSpeechPair best = null; 00092 DistractorSet bestDist = null; 00093 for (GestureSpeechPair gsp : pairs) { 00094 DistractorSet newDist = gsp.getDistractors(situation); 00095 if (newDist == null) 00096 continue; 00097 00098 if ((best == null) || (newDist.size() < bestDist.size())) { 00099 best = gsp; 00100 bestDist = newDist; 00101 } 00102 } 00103 if (best != null) 00104 toKeep.add(best); 00105 00106 return toKeep; 00107 } 00108 } |