/// <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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
        /// <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 [] 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>
        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);
        }
Exemple #14
0
        /// <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_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 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 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 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_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);
        }
Exemple #24
0
        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 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;
        }
Exemple #28
0
        /// <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);
        }
Exemple #31
0
        /// <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);
        }
        /// <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);
        }
Exemple #34
0
        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);
        }
Exemple #36
0
        /// <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);
        }
Exemple #40
0
        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);
        }
Exemple #41
0
        /// <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);
        }
Exemple #42
0
        /// <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);
        }
Exemple #43
0
        /// <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);
        }
        /// <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);
        }