/// <summary> /// Creates the SM of the primite action: Take-Object /// </summary> /// <param name="brain">HAL9000Brain instance</param> /// <param name="cmdMan">HAL9000CmdMan instance</param> /// <param name="objectToTake">Name of the object to take. Default: empty string.</param> public NavigateTo(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration, string locationToReach = "") { this.brain = brain; this.cmdMan = cmdMan; finalStatus = Status.Ready; this.SMConfiguration = SMConfiguration; this.locationToReach = locationToReach; navigSucceded = "I reach the location."; navigFailed = "I can't reach the location."; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.InitialState, InitialState)); SM.AddState(new FunctionState((int)States.RiseArms, RiseArms)); SM.AddState(new FunctionState((int)States.Navigate, Navigate)); SM.AddState(new FunctionState((int)States.Navigate_Succeeded, Navigate_Succeeded)); SM.AddState(new FunctionState((int)States.Navigate_Failed, Navigate_Failed)); SM.AddState(new FunctionState((int)States.FinalState, FinalState, true)); SM.SetFinalState((int)States.FinalState); }
public SM_SearchAndTakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string ObjectToFind, bool useHandOver) { SM = new FunctionBasedStateMachine(); this.brain = brain; this.cmdMan = cmdMan; this.attemptCounter = 0; this.searchAttemptCounter = 0; this.finalState = FinalStates.StillRunning; this.objectsFound = new List<string>(); this.useTakeHandOver = useHandOver; this.anyObject = anyObject; if (anyObject) this.ObjectToFind = "objects"; else this.ObjectToFind = ObjectToFind; this.foundObject = ObjectToFind; SM.AddState(new FunctionState((int)States.SearchCloseObjects, new SMStateFuncion(SearchCloseObjects))); SM.AddState(new FunctionState((int)States.SetObjectToTake, new SMStateFuncion(SetObjectToTake))); SM.AddState(new FunctionState((int)States.TakeObject, new SMStateFuncion(TakeObject))); SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState))); SM.SetFinalState((int)States.FinalState); }
public SM_TakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string ObjectToFind, string objectLocation, bool succesGetClose) { SM = new FunctionBasedStateMachine(); this.brain = brain; this.cmdMan = cmdMan; this.objectLocation = objectLocation; attemptCounter = 0; this.finalState = FinalStates.StillRunning; this.anyObject = anyObject; if (anyObject) this.ObjectToFind = ObjectToFind; else this.ObjectToFind = "objects"; this.foundObject = ObjectToFind; this.succesGetClose = succesGetClose; SM.AddState(new FunctionState((int)States.GetCloseObjectLocation, new SMStateFuncion(GetCloseObjectLocation))); SM.AddState(new FunctionState((int)States.SearchCloseObjects, new SMStateFuncion(SearchCloseObjects))); SM.AddState(new FunctionState((int)States.TakeObject, new SMStateFuncion(TakeObject))); SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState))); SM.SetFinalState((int)States.FinalState); }
public SM_TakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string ObjectToFind, string objectLocation, bool succesGetClose) { SM = new FunctionBasedStateMachine(); this.brain = brain; this.cmdMan = cmdMan; this.objectLocation = objectLocation; attemptCounter = 0; this.finalState = FinalStates.StillRunning; this.anyObject = anyObject; if (anyObject) { this.ObjectToFind = ObjectToFind; } else { this.ObjectToFind = "objects"; } this.foundObject = ObjectToFind; this.succesGetClose = succesGetClose; SM.AddState(new FunctionState((int)States.GetCloseObjectLocation, new SMStateFuncion(GetCloseObjectLocation))); SM.AddState(new FunctionState((int)States.SearchCloseObjects, new SMStateFuncion(SearchCloseObjects))); SM.AddState(new FunctionState((int)States.TakeObject, new SMStateFuncion(TakeObject))); SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState))); SM.SetFinalState((int)States.FinalState); }
public SM_SearchAndTakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string ObjectToFind, bool useHandOver) { SM = new FunctionBasedStateMachine(); this.brain = brain; this.cmdMan = cmdMan; this.attemptCounter = 0; this.searchAttemptCounter = 0; this.finalState = FinalStates.StillRunning; this.objectsFound = new List <string>(); this.useTakeHandOver = useHandOver; this.anyObject = anyObject; if (anyObject) { this.ObjectToFind = "objects"; } else { this.ObjectToFind = ObjectToFind; } this.foundObject = ObjectToFind; SM.AddState(new FunctionState((int)States.SearchCloseObjects, new SMStateFuncion(SearchCloseObjects))); SM.AddState(new FunctionState((int)States.SetObjectToTake, new SMStateFuncion(SetObjectToTake))); SM.AddState(new FunctionState((int)States.TakeObject, new SMStateFuncion(TakeObject))); SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState))); SM.SetFinalState((int)States.FinalState); }
/// <summary> /// Creates a state machine for the test. /// </summary> /// <param name="brain">HAL9000Brain instance</param> /// <param name="cmdMan">HAL9000CmdMan instance</param> public Restaurant(HAL9000Brain brain, HAL9000CmdMan cmdMan) { this.brain = brain; this.cmdMan = cmdMan; tableCommandRecognized = false; kitchenCommandRecognized = false; tablesToVisit = new Queue <MapLocation>(); finalStatus = Status.Ready; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.InitialState, InitialState)); SM.AddState(new FunctionState((int)States.FollowHuman, FollowHuman)); SM.AddState(new FunctionState((int)States.WaitForLocationCommand, WaitForLocationCommand)); SM.AddState(new FunctionState((int)States.WaitForLocationConfirmation, WaitForLocationConfirmation)); SM.AddState(new FunctionState((int)States.WaitForTableDirectionCommand, WaitForTableDirectionCommand)); SM.AddState(new FunctionState((int)States.WaitForTableDirectionConfirmation, WaitForTableDirectionConfirmation)); SM.AddState(new FunctionState((int)States.WaitForOrderingCommand, WaitForOrderingCommand)); SM.AddState(new FunctionState((int)States.WaitForOrderTableConfirmation, WaitForOrderTableConfirmation)); SM.AddState(new FunctionState((int)States.GoToOrderTable, GoToOrderTable)); SM.AddState(new FunctionState((int)States.TakeOrder, TakeOrder)); SM.AddState(new FunctionState((int)States.FinalState, FinalState, true)); SM.SetFinalState((int)States.FinalState); }
public SM_SearchAndTakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string [] objectsToFind, bool useHandOver, int searchAttempts = 2, bool twoArms = false) { SM = new FunctionBasedStateMachine(); this.brain = brain; this.cmdMan = cmdMan; this.attemptCounter = 0; this.searchAttemptCounter = 0; this.searchAttempts = searchAttempts; this.finalState = FinalStates.StillRunning; this.twoArms = twoArms; this.takeCounter = 0; this.firstObjectTaken = false; /**********************/ this.laTaken = false; this.armToUse = ""; this.objectsFound = new List <string>(); this.useTakeHandOver = useHandOver; this.objectsToFind = new string[2]; this.foundObjects = new string[2]; this.armsOrder = new string[2]; this.foundObjects[0] = ""; this.foundObjects[1] = ""; this.armsOrder[0] = ""; this.armsOrder[1] = ""; this.anyObject = anyObject; if (anyObject) { //this.ObjectToFind = "objects"; this.objectsToFind[0] = "objects"; this.objectsToFind[1] = ""; } else { this.objectsToFind[0] = objectsToFind[0]; this.objectsToFind[1] = objectsToFind[1]; } //this.objectsToTake = new string[2]; //this.objectsToTake[0] = ""; //this.objectsToTake[1] = ""; //this.foundObjects = new string[2]; //this.foundObjects[0] = ObjectToFind; //this.foundObjects[1] = ""; //objectsToTake = new string[2]; SM.AddState(new FunctionState((int)States.SearchCloseObjects, new SMStateFuncion(SearchCloseObjects))); SM.AddState(new FunctionState((int)States.SetObjectToTake, new SMStateFuncion(SetObjectToTake))); SM.AddState(new FunctionState((int)States.TakeObject, new SMStateFuncion(TakeObject))); SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState))); SM.SetFinalState((int)States.FinalState); }
public SM_SearchAndTakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool anyObject, string [] objectsToFind, bool useHandOver, int searchAttempts = 2, bool twoArms=false) { SM = new FunctionBasedStateMachine(); this.brain = brain; this.cmdMan = cmdMan; this.attemptCounter = 0; this.searchAttemptCounter = 0; this.searchAttempts = searchAttempts; this.finalState = FinalStates.StillRunning; this.twoArms = twoArms; this.takeCounter = 0; this.firstObjectTaken=false; /**********************/ this.laTaken = false; this.armToUse = ""; this.objectsFound = new List<string>(); this.useTakeHandOver = useHandOver; this.objectsToFind = new string[2]; this.foundObjects = new string[2]; this.armsOrder = new string[2]; this.foundObjects[0] = ""; this.foundObjects[1] = ""; this.armsOrder[0] = ""; this.armsOrder[1] = ""; this.anyObject = anyObject; if (anyObject) { //this.ObjectToFind = "objects"; this.objectsToFind[0] = "objects"; this.objectsToFind[1] = ""; } else { this.objectsToFind[0] = objectsToFind[0]; this.objectsToFind[1] = objectsToFind[1]; } //this.objectsToTake = new string[2]; //this.objectsToTake[0] = ""; //this.objectsToTake[1] = ""; //this.foundObjects = new string[2]; //this.foundObjects[0] = ObjectToFind; //this.foundObjects[1] = ""; //objectsToTake = new string[2]; SM.AddState(new FunctionState((int)States.SearchCloseObjects, new SMStateFuncion(SearchCloseObjects))); SM.AddState(new FunctionState((int)States.SetObjectToTake, new SMStateFuncion(SetObjectToTake))); SM.AddState(new FunctionState((int)States.TakeObject, new SMStateFuncion(TakeObject))); SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState))); SM.SetFinalState((int)States.FinalState); }
/// <summary> /// Creates a state machine to enter the arena up to a location known by the motion planner. /// </summary> /// <param name="brain">A HAL9000Brain instance</param> /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param> public SM_WaitForRequest(HAL9000Brain brain, HAL9000CmdMan cmdMan) { this.brain = brain; this.cmdMan = cmdMan; this.attemptCounter = 0; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState))); SM.AddState(new FunctionState((int)States.SearchRequest, new SMStateFuncion(SearchRequest))); SM.AddState(new FunctionState((int)States.GoToRequest, new SMStateFuncion(GoToRequest))); SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true)); SM.SetFinalState((int)States.FinalState); finalState = FinalStates.StillRunning; }
/// <summary> /// Creates a state machine to enter the arena up to a location known by the motion planner. /// </summary> /// <param name="brain">A HAL9000Brain instance</param> /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param> /// <param name="tryToOpenDoor">A boolean indicating whether the robot should try to open the door on its own or ask for help directly.</param> public SM_EnterArena(HAL9000Brain brain, HAL9000CmdMan cmdMan, string location, bool tryToOpenDoor) { this.brain = brain; this.cmdMan = cmdMan; this.location = location; this.finalState = FinalStates.StillRunning; this.attemptCounter = 0; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState))); SM.AddState(new FunctionState((int)States.WaitForDoorToBeOpened, new SMStateFuncion(WaitForDoorToBeOpened))); SM.AddState(new FunctionState((int)States.EnterArena, new SMStateFuncion(EnterArena))); SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true)); SM.SetFinalState((int)States.FinalState); }
/// <summary> /// Creates a state machine for the Navigation test. /// </summary> /// <param name="brain">HAL9000Brain instance</param> /// <param name="cmdMan">HAL9000CmdMan instance</param> public NavigationTest(HAL9000Brain brain, HAL9000CmdMan cmdMan) { this.brain = brain; this.cmdMan = cmdMan; finalStatus = Status.Ready; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.InitialState, InitialState)); //TODO: Link States-enum whith States-Methods here SM.AddState(new FunctionState((int)States.FinalState, FinalState, true)); SM.SetFinalState((int)States.FinalState); }
/// <summary> /// Creates a state machine to enter the arena up to a location known by the motion planner. /// </summary> /// <param name="brain">A HAL9000Brain instance</param> /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param> public SM_DetectWaving(HAL9000Brain brain, HAL9000CmdMan cmdMan, double headAngle, double headPan) { this.brain = brain; this.cmdMan = cmdMan; this.headAngle = headAngle; this.headPan = headPan; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState))); SM.AddState(new FunctionState((int)States.SearchWaving, new SMStateFuncion(SearchWaving))); SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true)); SM.SetFinalState((int)States.FinalState); finalState = FinalStates.StillRunning; }
/// <summary> /// Creates a state machine to enter the arena up to a location known by the motion planner. /// </summary> /// <param name="brain">A HAL9000Brain instance</param> /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param> public SM_DetectPersonFall(HAL9000Brain brain, HAL9000CmdMan cmdMan) { this.brain = brain; this.cmdMan = cmdMan; timer = new System.Diagnostics.Stopwatch(); fallDetected = false; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState))); SM.AddState(new FunctionState((int)States.SearchFall, new SMStateFuncion(SearchFall))); SM.AddState(new FunctionState((int)States.GoToFall, new SMStateFuncion(GoToFall))); SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true)); SM.SetFinalState((int)States.FinalState); finalState = FinalStates.StillRunning; }
/// <summary> /// Creates a state machine for the Manipulation test. /// </summary> /// <param name="brain">HAL9000Brain instance</param> /// <param name="cmdMan">HAL9000CmdMan instance</param> public ManipulationTest(HAL9000Brain brain, HAL9000CmdMan cmdMan) { this.brain = brain; this.cmdMan = cmdMan; finalStatus = Status.Ready; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.InitialState, InitialState)); //TODO: Link States-enum whith States-Methods here SM.AddState(new FunctionState((int)States.FinalState, FinalState, true)); SM.SetFinalState((int)States.FinalState); }
public SM_FollowHuman(HAL9000Brain brain, HAL9000CmdMan cmdman) { this.brain = brain; this.cmdMan = cmdman; TextBoxStreamWriter.DefaultLog.WriteLine("HAL9000.-> Ejecutando prueba de seguimiento"); this.brain.Status.TestBeingExecuted = "Fllw1"; this.brain.OnStatusChanged(new HAL9000StatusArgs(this.brain.Status)); this.finalState = FinalStates.StillRunning; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.SubiendoMisBrazos, SubiendoMisBrazos)); SM.AddState(new FunctionState((int)States.EsperandoPersonaEnFrente, EsperandoPersonaEnFrente)); SM.AddState(new FunctionState((int)States.SensandoPersona, SensandoPersona)); SM.AddState(new FunctionState((int)States.PersiguiendoPersona, PersiguiendoPersona)); SM.AddState(new FunctionState((int)States.AntesDeTerminar, AntesDeTerminar, true)); SM.AddState(new FunctionState((int)States.FinalState, FinalState, true)); SM.SetFinalState((int)States.FinalState); }
public SM_TakeTray(HAL9000Brain brain, HAL9000CmdMan cmdMan, double height) { SM = new FunctionBasedStateMachine(); this.brain = brain; this.cmdMan = cmdMan; distance = 0; this.height = height; headPan = 0; headTilt = -1.1; percent = 50; this.finalState = FinalStates.StillRunning; SM.AddState(new FunctionState((int)States.LineTable,LineTable)); SM.AddState(new FunctionState((int)States.TakeTray, TakeTray)); SM.AddState(new FunctionState((int)States.FinalState, FinalState,true)); SM.SetFinalState((int)States.FinalState); }
/// <summary> /// Creates a state machine for the Navigation test. /// </summary> /// <param name="brain">HAL9000Brain instance</param> /// <param name="cmdMan">HAL9000CmdMan instance</param> public GraspCereal(HAL9000Brain brain, HAL9000CmdMan cmdMan) { this.brain = brain; this.cmdMan = cmdMan; finalStatus = Status.Ready; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.InitialState, InitialState)); //TODO: Link States-enum whith States-Methods here SM.AddState(new FunctionState((int)States.PerformAction, PerformAction)); SM.AddState(new FunctionState((int)States.FindPerson, FindPerson)); SM.AddState(new FunctionState((int)States.FinalState, FinalState, true)); SM.SetFinalState((int)States.FinalState); }
public SM_TakeTray(HAL9000Brain brain, HAL9000CmdMan cmdMan, double height) { SM = new FunctionBasedStateMachine(); this.brain = brain; this.cmdMan = cmdMan; distance = 0; this.height = height; headPan = 0; headTilt = -1.1; percent = 50; this.finalState = FinalStates.StillRunning; SM.AddState(new FunctionState((int)States.LineTable, LineTable)); SM.AddState(new FunctionState((int)States.TakeTray, TakeTray)); SM.AddState(new FunctionState((int)States.FinalState, FinalState, true)); SM.SetFinalState((int)States.FinalState); }
/// <summary> /// Creates the SM of the primite action: Take-Object /// </summary> /// <param name="brain">HAL9000Brain instance</param> /// <param name="cmdMan">HAL9000CmdMan instance</param> /// <param name="objectToTake">Name of the object to take. Default: empty string.</param> public TellPhrase(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration, string phrase) { this.brain = brain; this.cmdMan = cmdMan; finalStatus = Status.Ready; this.SMConfiguration = SMConfiguration; this.phraseToTell = phrase; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.InitialState, InitialState)); SM.AddState(new FunctionState((int)States.StateTellPhrase, StateTellPhrase)); SM.AddState(new FunctionState((int)States.FinalState, FinalState, true)); SM.SetFinalState((int)States.FinalState); }
/// <summary> /// Creates a state machine to enter the arena up to a location known by the motion planner. /// </summary> /// <param name="brain">A HAL9000Brain instance</param> /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param> public SM_SimpleIdentifyPerson(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool startIdentifyPerson, string[] knownPersons, string defaultName, List <string> rejectedNames) { this.brain = brain; this.cmdMan = cmdMan; this.startIdentifyPerson = startIdentifyPerson; this.defaultName = defaultName; this.knownPersons = knownPersons; this.rejectedNames = rejectedNames; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState))); SM.AddState(new FunctionState((int)States.SpeachToHuman, new SMStateFuncion(SpeachToHuman))); SM.AddState(new FunctionState((int)States.FindHuman, new SMStateFuncion(FindHuman))); SM.AddState(new FunctionState((int)States.AskForName, new SMStateFuncion(AskForName))); SM.AddState(new FunctionState((int)States.AsociateName, new SMStateFuncion(AsociateName))); SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true)); SM.SetFinalState((int)States.FinalState); finalState = FinalStates.StillRunning; }
/// <summary> /// Creates a state machine for the test. /// </summary> /// <param name="brain">HAL9000Brain instance</param> /// <param name="cmdMan">HAL9000CmdMan instance</param> public GPSR(HAL9000Brain brain, HAL9000CmdMan cmdMan) { this.brain = brain; this.cmdMan = cmdMan; finalStatus = Status.Ready; second_confirmation = false; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.InitialState, InitialState)); //TODO: Link States-enum whith States-Methods here SM.AddState(new FunctionState((int)States.EnterArena, EnterArena)); SM.AddState(new FunctionState((int)States.WaitForQuestion, WaitForQuestion)); SM.AddState(new FunctionState((int)States.PerformAction, PerformAction)); SM.AddState(new FunctionState((int)States.LeaveArena, LeaveArena)); SM.AddState(new FunctionState((int)States.FinalState, FinalState, true)); SM.SetFinalState((int)States.FinalState); }
/// <summary> /// Creates a state machine to enter the arena up to a location known by the motion planner. /// </summary> /// <param name="brain">A HAL9000Brain instance</param> /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param> public SM_SimpleIdentifyPerson(HAL9000Brain brain, HAL9000CmdMan cmdMan, bool startIdentifyPerson, string[] knownPersons, string defaultName, List<string> rejectedNames) { this.brain = brain; this.cmdMan = cmdMan; this.startIdentifyPerson = startIdentifyPerson; this.defaultName = defaultName; this.knownPersons = knownPersons; this.rejectedNames = rejectedNames; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState))); SM.AddState(new FunctionState((int)States.SpeachToHuman, new SMStateFuncion(SpeachToHuman))); SM.AddState(new FunctionState((int)States.FindHuman, new SMStateFuncion(FindHuman))); SM.AddState(new FunctionState((int)States.AskForName, new SMStateFuncion(AskForName))); SM.AddState(new FunctionState((int)States.AsociateName, new SMStateFuncion(AsociateName))); SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true)); SM.SetFinalState((int)States.FinalState); finalState = FinalStates.StillRunning; }
/// <summary> /// Creates a state machine to navigate to a predefined MVN-PLN location. /// </summary> /// <param name="brain">HAL9000Brain instance</param> /// <param name="cmdMan">HAL9000CmdMan instance</param> public DefaultStateMachineSM(HAL9000Brain brain, HAL9000CmdMan cmdMan) { this.brain = brain; this.cmdMan = cmdMan; finalStatus = Status.Ready; attemptCounter = 0; objectTaken = false; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.InitialState, InitialState)); SM.AddState(new FunctionState((int)States.EnterArena, EnterArena)); SM.AddState(new FunctionState((int)States.GetCloseToTable, GetCloseToTable)); SM.AddState(new FunctionState((int)States.DropObject, DropObject)); SM.AddState(new FunctionState((int)States.LeaveArena, LeaveArena)); SM.AddState(new FunctionState((int)States.SearchAndTakeObject, SearchAndTakeObject)); SM.AddState(new FunctionState((int)States.FinalState, FinalState, true)); SM.SetFinalState((int)States.FinalState); }
/// <summary> /// Creates the SM of the primite action: Take-Object /// </summary> /// <param name="brain">HAL9000Brain instance</param> /// <param name="cmdMan">HAL9000CmdMan instance</param> /// <param name="objectToTake">Name of the object to take. Default: empty string.</param> public AnswerQuestion(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration) { this.brain = brain; this.cmdMan = cmdMan; finalStatus = Status.Ready; attemptCounter = 0; this.SMConfiguration = SMConfiguration; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.InitialState, InitialState)); SM.AddState(new FunctionState((int)States.StateQuestion, StateQuestion)); SM.AddState(new FunctionState((int)States.StateAnswer, StateAnswer)); SM.AddState(new FunctionState((int)States.FinalState, FinalState, true)); SM.SetFinalState((int)States.FinalState); }
public CocktailPartyTest(HAL9000Brain brain, HAL9000CmdMan cmdMan) { this.brain = brain; this.cmdMan = cmdMan; TextBoxStreamWriter.DefaultLog.WriteLine("HAL9000.-> Executing Cocktail Party Test"); this.brain.Status.TestBeingExecuted = "Cocktail Party"; this.brain.OnStatusChanged(new HAL9000StatusArgs(this.brain.Status)); this.finalState = FinalStates.StillRunning; tryToOpenDoor = false; entranceLocation = "frontentrance"; partyroomLocation = "partyroom"; drinksLocation = "drinks"; exitLocation = "exit"; defaultDrink = "mangojuice"; attemptCounter = 0; gestureFailed = false; defaultNames = new string[] { "Alan", "Albert", "Angel" }; SM = new FunctionBasedStateMachine(); //orders = new Queue<order>(3); ordersCount = 0; rejectedNames = new List <string>(3); SM.AddState(new FunctionState((int)States.EnterArena, new SMStateFuncion(EnterArena))); SM.AddState(new FunctionState((int)States.GoToPartyRoom, new SMStateFuncion(GoToPartyRoom))); SM.AddState(new FunctionState((int)States.WaitForRequest, new SMStateFuncion(WaitForRequest))); SM.AddState(new FunctionState((int)States.IdentifyPerson, new SMStateFuncion(IdentifyPerson))); SM.AddState(new FunctionState((int)States.WaitForOrder, new SMStateFuncion(WaitForOrder))); SM.AddState(new FunctionState((int)States.NoGestureRecognized, new SMStateFuncion(NoGestureRecognized))); SM.AddState(new FunctionState((int)States.WaitForConfirmation, new SMStateFuncion(WaitForConfirmation))); SM.AddState(new FunctionState((int)States.EnqueueOrder, new SMStateFuncion(EnqueueOrder))); SM.AddState(new FunctionState((int)States.GoToDrinksLocation, new SMStateFuncion(GoToDrinksLocation))); SM.AddState(new FunctionState((int)States.SearchAndTakeObject, new SMStateFuncion(SearchAndTakeObject))); SM.AddState(new FunctionState((int)States.GoToHumanLocation, new SMStateFuncion(GoToHumanLocation))); SM.AddState(new FunctionState((int)States.DeliverDrink, new SMStateFuncion(DeliverDrink))); SM.AddState(new FunctionState((int)States.LeaveArena, new SMStateFuncion(LeaveArena))); SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState))); SM.SetFinalState((int)States.FinalState); }
public CocktailPartyTest(HAL9000Brain brain, HAL9000CmdMan cmdMan) { this.brain = brain; this.cmdMan = cmdMan; TextBoxStreamWriter.DefaultLog.WriteLine("HAL9000.-> Executing Cocktail Party Test"); this.brain.Status.TestBeingExecuted = "Cocktail Party"; this.brain.OnStatusChanged(new HAL9000StatusArgs(this.brain.Status)); this.finalState = FinalStates.StillRunning; tryToOpenDoor = false; entranceLocation = "frontentrance"; partyroomLocation = "partyroom"; drinksLocation = "drinks"; exitLocation = "exit"; defaultDrink = "mangojuice"; attemptCounter = 0; gestureFailed = false; defaultNames = new string[] { "Alan", "Albert", "Angel" }; SM = new FunctionBasedStateMachine(); //orders = new Queue<order>(3); ordersCount = 0; rejectedNames = new List<string>(3); SM.AddState(new FunctionState((int)States.EnterArena, new SMStateFuncion(EnterArena))); SM.AddState(new FunctionState((int)States.GoToPartyRoom, new SMStateFuncion(GoToPartyRoom))); SM.AddState(new FunctionState((int)States.WaitForRequest, new SMStateFuncion(WaitForRequest))); SM.AddState(new FunctionState((int)States.IdentifyPerson, new SMStateFuncion(IdentifyPerson))); SM.AddState(new FunctionState((int)States.WaitForOrder, new SMStateFuncion(WaitForOrder))); SM.AddState(new FunctionState((int)States.NoGestureRecognized, new SMStateFuncion(NoGestureRecognized))); SM.AddState(new FunctionState((int)States.WaitForConfirmation, new SMStateFuncion(WaitForConfirmation))); SM.AddState(new FunctionState((int)States.EnqueueOrder, new SMStateFuncion(EnqueueOrder))); SM.AddState(new FunctionState((int)States.GoToDrinksLocation, new SMStateFuncion(GoToDrinksLocation))); SM.AddState(new FunctionState((int)States.SearchAndTakeObject, new SMStateFuncion(SearchAndTakeObject))); SM.AddState(new FunctionState((int)States.GoToHumanLocation, new SMStateFuncion(GoToHumanLocation))); SM.AddState(new FunctionState((int)States.DeliverDrink, new SMStateFuncion(DeliverDrink))); SM.AddState(new FunctionState((int)States.LeaveArena, new SMStateFuncion(LeaveArena))); SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState))); SM.SetFinalState((int)States.FinalState); }
/// <summary> /// Creates the SM of the primite action: Take-Object /// </summary> /// <param name="brain">HAL9000Brain instance</param> /// <param name="cmdMan">HAL9000CmdMan instance</param> /// <param name="objectToTake">Name of the object to take. Default: empty string.</param> public BringObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration, string objectName = "") { this.brain = brain; this.cmdMan = cmdMan; finalStatus = Status.Ready; this.SMConfiguration = SMConfiguration; this.objectName = objectName; foundPersonMessage = "Human please get close to me and take the object."; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.InitialState, InitialState)); SM.AddState(new FunctionState((int)States.DeliverObject, DeliverObject)); SM.AddState(new FunctionState((int)States.FinalState, FinalState, true)); SM.SetFinalState((int)States.FinalState); }
/// <summary> /// Creates a state machine to enter the arena up to a location known by the motion planner. /// </summary> /// <param name="brain">A HAL9000Brain instance</param> /// <param name="location">A location known by the motion planner where the robot should try to go when entering the arena.</param> public SM_AssociateNameAndFace(HAL9000Brain brain, HAL9000CmdMan cmdMan, string [] knownPersons, string defaultName, bool usePanAndTilt, List <string> rejectedNames, bool trainPersonsShirt) { this.brain = brain; this.cmdMan = cmdMan; this.attemptCounter = 0; this.defaultName = defaultName; this.knownPersons = knownPersons; this.rejectedNames = rejectedNames; this.usePanAndTilt = usePanAndTilt; this.trainShirt = trainPersonsShirt; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.InitialState, new SMStateFuncion(InitialState))); SM.AddState(new FunctionState((int)States.AskForName, new SMStateFuncion(AskForName))); SM.AddState(new FunctionState((int)States.FindHuman, new SMStateFuncion(FindHuman))); SM.AddState(new FunctionState((int)States.TrainFace, new SMStateFuncion(TrainFace))); SM.AddState(new FunctionState((int)States.FinalState, new SMStateFuncion(FinalState), true)); SM.SetFinalState((int)States.FinalState); finalState = FinalStates.StillRunning; }
/// <summary> /// Creates the SM of the primite action: Take-Object /// </summary> /// <param name="brain">HAL9000Brain instance</param> /// <param name="cmdMan">HAL9000CmdMan instance</param> /// <param name="objectToTake">Name of the object to take. Default: empty string.</param> public BringObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration, string objectName="") { this.brain = brain; this.cmdMan = cmdMan; finalStatus = Status.Ready; this.SMConfiguration = SMConfiguration; this.objectName = objectName; foundPersonMessage = "Human please get close to me and take the object."; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.InitialState, InitialState)); SM.AddState(new FunctionState((int)States.DeliverObject, DeliverObject)); SM.AddState(new FunctionState((int)States.FinalState, FinalState, true)); SM.SetFinalState((int)States.FinalState); }
public OpenChallenge_Training(HAL9000Brain brain, HAL9000CmdMan cmdMan) { this.brain = brain; this.cmdMan = cmdMan; this.brain.UseFloorLaser = false; height = 0; LocationTable = "table"; LocationTray = "tray"; percent = 50; distance = 0; headPan = 0; headTilt = -1.1; voiceRecognitionAttempts = 0; alreadyKnownPersons = new List<string>(); defaultNames = new string[] {"John", "James", "William", "Michael"}; personCounter = 0; usingRightArm = true; TextBoxStreamWriter.DefaultLog.WriteLine("HAL9000.-> Executing Open Challenge"); this.brain.Status.TestBeingExecuted = "Open Challenge"; this.brain.OnStatusChanged(new HAL9000StatusArgs(this.brain.Status)); this.finalState = FinalStates.StillRunning; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.CallRobot, CallRobot)); SM.AddState(new FunctionState((int)States.TrainFace, TrainFace)); SM.AddState(new FunctionState((int)States.DeliverSheet, DeliverSheet)); SM.AddState(new FunctionState((int)States.TrainVoice, TrainVoice)); SM.AddState(new FunctionState((int)States.ReceiveSheet, ReceiveSheet)); SM.AddState(new FunctionState((int)States.AdjustTable, AdjustTable)); SM.AddState(new FunctionState((int)States.GotoTray, GotoTray)); SM.AddState(new FunctionState((int)States.TakeTray, TakeTray)); SM.AddState(new FunctionState((int)States.GotoTable, GotoTable)); SM.AddState(new FunctionState((int)States.TrayOnTable, TrayOnTable)); SM.AddState(new FunctionState((int)States.FinalState, FinalState, true)); SM.SetFinalState((int)States.FinalState); }
public OpenChallenge_Training(HAL9000Brain brain, HAL9000CmdMan cmdMan) { this.brain = brain; this.cmdMan = cmdMan; this.brain.UseFloorLaser = false; height = 0; LocationTable = "table"; LocationTray = "tray"; percent = 50; distance = 0; headPan = 0; headTilt = -1.1; voiceRecognitionAttempts = 0; alreadyKnownPersons = new List <string>(); defaultNames = new string[] { "John", "James", "William", "Michael" }; personCounter = 0; usingRightArm = true; TextBoxStreamWriter.DefaultLog.WriteLine("HAL9000.-> Executing Open Challenge"); this.brain.Status.TestBeingExecuted = "Open Challenge"; this.brain.OnStatusChanged(new HAL9000StatusArgs(this.brain.Status)); this.finalState = FinalStates.StillRunning; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.CallRobot, CallRobot)); SM.AddState(new FunctionState((int)States.TrainFace, TrainFace)); SM.AddState(new FunctionState((int)States.DeliverSheet, DeliverSheet)); SM.AddState(new FunctionState((int)States.TrainVoice, TrainVoice)); SM.AddState(new FunctionState((int)States.ReceiveSheet, ReceiveSheet)); SM.AddState(new FunctionState((int)States.AdjustTable, AdjustTable)); SM.AddState(new FunctionState((int)States.GotoTray, GotoTray)); SM.AddState(new FunctionState((int)States.TakeTray, TakeTray)); SM.AddState(new FunctionState((int)States.GotoTable, GotoTable)); SM.AddState(new FunctionState((int)States.TrayOnTable, TrayOnTable)); SM.AddState(new FunctionState((int)States.FinalState, FinalState, true)); SM.SetFinalState((int)States.FinalState); }
/// <summary> /// Creates a state machine for this test. /// </summary> /// <param name="brain">HAL9000Brain instance</param> /// <param name="cmdMan">HAL9000CmdMan instance</param> public GPSR(HAL9000Brain brain, HAL9000CmdMan cmdMan) { this.brain = brain; this.cmdMan = cmdMan; attemptCounter = 0; attemptLimit = 3; finalStatus = Status.Ready; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.InitialState, InitialState)); SM.AddState(new FunctionState((int)States.EnterArena, EnterArena)); SM.AddState(new FunctionState((int)States.NavigateToOperator, NavigateToOperator)); SM.AddState(new FunctionState((int)States.WaitForCommand, WaitForCommand)); SM.AddState(new FunctionState((int)States.ConfirmComand, ConfirmComand)); SM.AddState(new FunctionState((int)States.ParseCommand, ParseCommand)); SM.AddState(new FunctionState((int)States.PerformCommand, PerformCommand)); SM.AddState(new FunctionState((int)States.LeaveArena, LeaveArena)); SM.AddState(new FunctionState((int)States.FinalState, FinalState, true)); SM.SetFinalState((int)States.FinalState); }
/// <summary> /// Creates a state machine for the RoboZoo test. /// </summary> /// <param name="brain">HAL9000Brain instance</param> /// <param name="cmdMan">HAL9000CmdMan instance</param> public RoboZoo(HAL9000Brain brain, HAL9000CmdMan cmdMan) { this.brain = brain; this.cmdMan = cmdMan; t_HEADSearchMovements = new Thread(new ThreadStart(HEADSearchMovements)); t_ARMSSearchMovements = new Thread(new ThreadStart(ARMSSearchMovements)); t_SPGENSearchPhrases = new Thread(new ThreadStart(SPGENSearchPhrases)); t_BASEDanceMovements = new Thread(new ThreadStart(BASEDanceMovements)); t_ARMSDanceMovements = new Thread(new ThreadStart(ARMSDanceMovements)); t_HEADDanceMovements = new Thread(new ThreadStart(HEADDanceMovements)); t_SPGENHypnoSpeech = new Thread(new ThreadStart(SPGENHypnoSpeech)); t_ARMSHypnoMovements = new Thread(new ThreadStart(ARMSHypnoMovements)); t_HEADHypnoMovements = new Thread(new ThreadStart(HEADHypnoMovements)); headRandPos = new Random(); searchAttempt = 0; stopAllThreads = false; hypnoSpeechFinished = false; stopDance = false; finalStatus = Status.Ready; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.InitialState, InitialState)); SM.AddState(new FunctionState((int)States.SearchMarker, SearchMarker)); SM.AddState(new FunctionState((int)States.MarkerFound, MarkerFound)); SM.AddState(new FunctionState((int)States.MarkerNotFound, MarkerNotFound)); SM.AddState(new FunctionState((int)States.PerformPresentation, PerformPresentation)); SM.AddState(new FunctionState((int)States.PerformDance, PerformDance)); SM.AddState(new FunctionState((int)States.PerformHipnotize, PerformHipnotize)); SM.AddState(new FunctionState((int)States.FinalState, FinalState, true)); SM.SetFinalState((int)States.FinalState); }
/// <summary> /// Creates the SM of the primite action: Take-Object /// </summary> /// <param name="brain">HAL9000Brain instance</param> /// <param name="cmdMan">HAL9000CmdMan instance</param> /// <param name="objectToTake">Name of the object to take. Default: empty string.</param> public TakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration, string objectToTake = "") { this.brain = brain; this.cmdMan = cmdMan; finalStatus = Status.Ready; this.SMConfiguration = SMConfiguration; this.objectToTake = objectToTake; SATO_succeeded = "I got it."; SATO_failed = "I can't take the object."; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.InitialState, InitialState)); SM.AddState(new FunctionState((int)States.SearchAndTakeObject, SearchAndTakeObject)); SM.AddState(new FunctionState((int)States.SATO_Failed, SATO_Failed)); SM.AddState(new FunctionState((int)States.SATO_Succeeded, SATO_Succeeded)); SM.AddState(new FunctionState((int)States.FinalState, FinalState, true)); SM.SetFinalState((int)States.FinalState); }
/// <summary> /// Creates the SM of the primite action: Take-Object /// </summary> /// <param name="brain">HAL9000Brain instance</param> /// <param name="cmdMan">HAL9000CmdMan instance</param> /// <param name="objectToTake">Name of the object to take. Default: empty string.</param> public TakeObject(HAL9000Brain brain, HAL9000CmdMan cmdMan, GPSR_WORLD SMConfiguration, string objectToTake="") { this.brain = brain; this.cmdMan = cmdMan; finalStatus = Status.Ready; this.SMConfiguration = SMConfiguration; this.objectToTake = objectToTake; SATO_succeeded = "I got it."; SATO_failed = "I can't take the object."; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.InitialState, InitialState)); SM.AddState(new FunctionState((int)States.SearchAndTakeObject, SearchAndTakeObject)); SM.AddState(new FunctionState((int)States.SATO_Failed, SATO_Failed)); SM.AddState(new FunctionState((int)States.SATO_Succeeded, SATO_Succeeded)); SM.AddState(new FunctionState((int)States.FinalState, FinalState, true)); SM.SetFinalState((int)States.FinalState); }
/// <summary> /// Creates a state machine for the test. /// </summary> /// <param name="brain">HAL9000Brain instance</param> /// <param name="cmdMan">HAL9000CmdMan instance</param> public Restaurant(HAL9000Brain brain, HAL9000CmdMan cmdMan) { this.brain = brain; this.cmdMan = cmdMan; tableCommandRecognized = false; kitchenCommandRecognized = false; tablesToVisit = new Queue<MapLocation>(); finalStatus = Status.Ready; SM = new FunctionBasedStateMachine(); SM.AddState(new FunctionState((int)States.InitialState, InitialState)); SM.AddState(new FunctionState((int)States.FollowHuman, FollowHuman)); SM.AddState(new FunctionState((int)States.WaitForLocationCommand, WaitForLocationCommand)); SM.AddState(new FunctionState((int)States.WaitForLocationConfirmation, WaitForLocationConfirmation)); SM.AddState(new FunctionState((int)States.WaitForTableDirectionCommand, WaitForTableDirectionCommand)); SM.AddState(new FunctionState((int)States.WaitForTableDirectionConfirmation, WaitForTableDirectionConfirmation)); SM.AddState(new FunctionState((int)States.WaitForOrderingCommand, WaitForOrderingCommand)); SM.AddState(new FunctionState((int)States.WaitForOrderTableConfirmation, WaitForOrderTableConfirmation)); SM.AddState(new FunctionState((int)States.GoToOrderTable, GoToOrderTable)); SM.AddState(new FunctionState((int)States.TakeOrder, TakeOrder)); SM.AddState(new FunctionState((int)States.FinalState, FinalState, true)); SM.SetFinalState((int)States.FinalState); }